diff --git a/bootstrap/lib/compiler/ebin/beam_doc.beam b/bootstrap/lib/compiler/ebin/beam_doc.beam index 2ece7ed6798a..b979b16de770 100644 Binary files a/bootstrap/lib/compiler/ebin/beam_doc.beam and b/bootstrap/lib/compiler/ebin/beam_doc.beam differ diff --git a/lib/compiler/src/beam_doc.erl b/lib/compiler/src/beam_doc.erl index 8f7cf412f975..e31be74e2dc4 100644 --- a/lib/compiler/src/beam_doc.erl +++ b/lib/compiler/src/beam_doc.erl @@ -523,7 +523,7 @@ extract_type_defs0(_, State) -> %% extract_type_dependencies({attribute, _Anno, TypeOrOpaque, {TypeName, TypeDef, TypeArgs}}, #docs{type_dependency = TypeDependency}=State) - when TypeOrOpaque =:= type; TypeOrOpaque =:= opaque -> + when TypeOrOpaque =:= type -> Types = extract_user_types([TypeArgs, TypeDef], State), Type = {TypeName, length(TypeArgs)}, digraph:add_vertex(TypeDependency, Type), diff --git a/lib/compiler/test/beam_doc_SUITE.erl b/lib/compiler/test/beam_doc_SUITE.erl index 217698c13b07..38e64162f1e9 100644 --- a/lib/compiler/test/beam_doc_SUITE.erl +++ b/lib/compiler/test/beam_doc_SUITE.erl @@ -303,7 +303,7 @@ private_types(Conf) -> MapValue2T, MapKey2T, MapValueT, MapKeyT, FunRet2T, FunRetT, FunT, Complex, BoundedRetT, ArgT, BoundedArgT, Private, HiddenExportT, PrivateCBT, - PublicT, PrivateT, + OpaqueT, PublicT, PrivateT, %% Callbacks CBar, %% Functions @@ -324,14 +324,15 @@ private_types(Conf) -> ?assertMatch({{type,bounded_ret_t,0}, _, _, none, #{exported := false}},BoundedRetT), ?assertMatch({{type,arg_t,0}, _, _, none, #{exported := false}},ArgT), ?assertMatch({{type,bounded_arg_t,0}, _, _, none, #{exported := false}},BoundedArgT), - ?assertMatch({{type,private,0}, {28,2}, [<<"private()">>], hidden, #{exported := false}},Private), + ?assertMatch({{type,private,0}, {30,2}, [<<"private()">>], hidden, #{exported := false}},Private), ?assertMatch({{type,hidden_export_t,0},_,[<<"hidden_export_t()">>],hidden,#{exported := true}},HiddenExportT), ?assertMatch({{type,private_cb_t,0},_,_,none,#{exported := false}},PrivateCBT), + ?assertMatch({{type,opaque_t,0},_, [<<"opaque_t()">>], none,#{ exported := true}},OpaqueT), ?assertMatch({{type,public_t,0},_, [<<"public_t()">>], none,#{ exported := true}},PublicT), ?assertMatch({{type,private_t,0},_, [<<"private_t()">>], none,#{ exported := false}},PrivateT), ?assertMatch({{callback,bar,1},_,_,none,#{}},CBar), ?assertMatch({{function,bounded,2},_,_,none,#{}},Bounded), - ?assertMatch({{function,hidden_type_exposed,0},{32,1},[<<"hidden_type_exposed()">>],none,#{}},HiddenTypeExposed), + ?assertMatch({{function,hidden_type_exposed,0},{34,1},[<<"hidden_type_exposed()">>],none,#{}},HiddenTypeExposed), ?assertMatch({{function,hidden,0},_,[<<"hidden()">>],hidden,#{}},Hidden), ?assertMatch({{function,bar,0},_,[<<"bar()">>],none,#{}},Bar), diff --git a/lib/compiler/test/beam_doc_SUITE_data/private_types.erl b/lib/compiler/test/beam_doc_SUITE_data/private_types.erl index a490dc29f122..f63fe020696f 100644 --- a/lib/compiler/test/beam_doc_SUITE_data/private_types.erl +++ b/lib/compiler/test/beam_doc_SUITE_data/private_types.erl @@ -1,10 +1,12 @@ -module(private_types). -export([bar/0, hidden/0, hidden_type_exposed/0, bounded/2]). --export_type([public_t/0, hidden_export_t/0, complex/1]). +-export_type([public_t/0, hidden_export_t/0, complex/1, opaque_t/0]). -type private_t() :: integer(). %% In chunk because referred to by exported bar/0 -type public_t() :: integer(). %% In chunk because exported +-opaque opaque_t() :: local_t() | private_t(). %% In chunk because exported, + %% but local_t() not in chunk -type private_cb_t() :: integer(). %% In chunk because referred to by callback -type local_t() :: integer(). %% Not in chunk because only referred by non-exported function