Doc update for hz_sophia and hz_aaci and some minor fixes #30

Merged
zxq9 merged 9 commits from spivee/docs into master 2026-05-26 09:44:53 +09:00
Showing only changes of commit 8bc79d3b3f - Show all commits
+37 -42
View File
@@ -631,6 +631,16 @@ builtin_typedefs() ->
% can simply render the normalized type expression and know that the error will
% make sense.
-spec annotate_function_specs(OpaqueSpecs, Types, Acc) -> Specs
when OpaqueSpecs :: [{string(), ArgsOpaque, ResultOpaque}],
ArgsOpaque :: [{string(), opaque_type()}],
ResultOpaque :: opaque_type(),
Types :: #{string() => typedef()},
Acc :: #{string() => {ArgsAnnotated, ResultAnnotated}},
Specs :: #{string() => {ArgsAnnotated, ResultAnnotated}},
ArgsAnnotated :: [{string(), annotated_type()}],
ResultAnnotated :: annotated_type().
annotate_function_specs([], _Types, Specs) ->
Specs;
annotate_function_specs([{Name, ArgsOpaque, ResultOpaque} | Rest], Types, Specs) ->
@@ -639,40 +649,29 @@ annotate_function_specs([{Name, ArgsOpaque, ResultOpaque} | Rest], Types, Specs)
NewSpecs = maps:put(Name, {Args, Result}, Specs),
annotate_function_specs(Rest, Types, NewSpecs).
-spec annotate_type(Opaque, Types) -> {ok, Annotated} | {error, Reason}
-spec annotate_type(Opaque, Types) -> {ok, Annotated}
when Opaque :: opaque_type(),
Types :: #{string() => typedef()},
Annotated :: annotated_type(),
Reason :: none().
Annotated :: annotated_type().
annotate_type(T, Types) ->
case normalize_opaque_type(T, Types) of
{ok, _, _, unknown_type} ->
{ok, {T, unknown_type, unknown_type}};
{ok, AlreadyNormalized, NOpaque, NExpanded} ->
annotate_type2(T, AlreadyNormalized, NOpaque, NExpanded, Types);
Error ->
Error
annotate_type2(T, AlreadyNormalized, NOpaque, NExpanded, Types)
end.
annotate_type2(T, _, _, unknown_type, _) ->
% If a type is unknown, then it should not be reported as the normalized
% name.
{ok, {T, unknown_type, unknown_type}};
annotate_type2(T, AlreadyNormalized, NOpaque, NExpanded, Types) ->
case annotate_type_subexpressions(NExpanded, Types) of
{ok, Flat} ->
case AlreadyNormalized of
true -> {ok, {T, already_normalized, Flat}};
false -> {ok, {T, NOpaque, Flat}}
end;
Error ->
Error
{ok, Flat} = annotate_type_subexpressions(NExpanded, Types),
case AlreadyNormalized of
true -> {ok, {T, already_normalized, Flat}};
false -> {ok, {T, NOpaque, Flat}}
end.
annotate_types([T | Rest], Types, Acc) ->
case annotate_type(T, Types) of
{ok, Type} -> annotate_types(Rest, Types, [Type | Acc]);
Error -> Error
end;
{ok, Type} = annotate_type(T, Types),
annotate_types(Rest, Types, [Type | Acc]);
annotate_types([], _Types, Acc) ->
{ok, lists:reverse(Acc)}.
@@ -683,34 +682,30 @@ annotate_type_subexpressions({bytes, [Count]}, _Types) ->
% opaque type.
{ok, {bytes, [Count]}};
annotate_type_subexpressions({variant, VariantsOpaque}, Types) ->
case annotate_variants(VariantsOpaque, Types, []) of
{ok, Variants} -> {ok, {variant, Variants}};
Error -> Error
end;
{ok, Variants} = annotate_variants(VariantsOpaque, Types, []),
{ok, {variant, Variants}};
annotate_type_subexpressions({record, FieldsOpaque}, Types) ->
case annotate_bindings(FieldsOpaque, Types, []) of
{ok, Fields} -> {ok, {record, Fields}};
Error -> Error
end;
{ok, Fields} = annotate_bindings(FieldsOpaque, Types, []),
{ok, {record, Fields}};
annotate_type_subexpressions({T, ElemsOpaque}, Types) ->
case annotate_types(ElemsOpaque, Types, []) of
{ok, Elems} -> {ok, {T, Elems}};
Error -> Error
end.
{ok, Elems} = annotate_types(ElemsOpaque, Types, []),
{ok, {T, Elems}}.
-spec annotate_bindings(Bindings, Types, Acc) -> {ok, Annotated}
when Bindings :: [{string(), opaque_type()}],
Types :: #{string() => typedef()},
Acc :: [{string(), annotated_type()}],
Annotated :: [{string(), annotated_type()}].
annotate_bindings([{Name, T} | Rest], Types, Acc) ->
case annotate_type(T, Types) of
{ok, Type} -> annotate_bindings(Rest, Types, [{Name, Type} | Acc]);
Error -> Error
end;
{ok, Next} = annotate_type(T, Types),
annotate_bindings(Rest, Types, [{Name, Next} | Acc]);
annotate_bindings([], _Types, Acc) ->
{ok, lists:reverse(Acc)}.
annotate_variants([{Name, Elems} | Rest], Types, Acc) ->
case annotate_types(Elems, Types, []) of
{ok, ElemsFlat} -> annotate_variants(Rest, Types, [{Name, ElemsFlat} | Acc]);
Error -> Error
end;
{ok, ElemsFlat} = annotate_types(Elems, Types, []),
annotate_variants(Rest, Types, [{Name, ElemsFlat} | Acc]);
annotate_variants([], _Types, Acc) ->
{ok, lists:reverse(Acc)}.