@@ -929,38 +929,50 @@ implicit_fun(Tree) ->
929
929
| undefined .
930
930
try_analyze_implicit_fun (Tree ) ->
931
931
FunName = erl_syntax :implicit_fun_name (Tree ),
932
- ModQBody = erl_syntax :module_qualifier_body (FunName ),
933
- ModQArg = erl_syntax :module_qualifier_argument (FunName ),
934
- case erl_syntax :type (ModQBody ) of
935
- arity_qualifier ->
936
- AqBody = erl_syntax :arity_qualifier_body (ModQBody ),
937
- AqArg = erl_syntax :arity_qualifier_argument (ModQBody ),
938
- case {erl_syntax :type (ModQArg ), erl_syntax :type (AqBody ), erl_syntax :type (AqArg )} of
939
- {macro , atom , integer } ->
940
- M = erl_syntax :variable_name (erl_syntax :macro_name (ModQArg )),
941
- F = erl_syntax :atom_value (AqBody ),
942
- A = erl_syntax :integer_value (AqArg ),
943
- case M of
944
- 'MODULE' ->
945
- {F , A };
946
- _ ->
947
- undefined
948
- end ;
949
- {ModType , FunType , integer } when
950
- ModType =:= variable orelse ModType =:= atom ,
951
- FunType =:= variable orelse FunType =:= atom
952
- ->
953
- M = node_name (ModQArg ),
954
- F = node_name (AqBody ),
955
- A = erl_syntax :integer_value (AqArg ),
956
- {{ModType , M }, {FunType , F }, A };
957
- _Types ->
932
+ case erl_syntax :type (FunName ) of
933
+ module_qualifier ->
934
+ ModQBody = erl_syntax :module_qualifier_body (FunName ),
935
+ ModQArg = erl_syntax :module_qualifier_argument (FunName ),
936
+ case erl_syntax :type (ModQBody ) of
937
+ arity_qualifier ->
938
+ try_analyze_arity_qualifier (ModQBody , ModQArg );
939
+ _Type ->
958
940
undefined
959
941
end ;
960
942
_Type ->
961
943
undefined
962
944
end .
963
945
946
+ -spec try_analyze_arity_qualifier (tree (), tree ()) ->
947
+ {{atom (), atom ()}, {atom (), atom ()}, arity ()}
948
+ | {atom (), arity ()}
949
+ | undefined .
950
+ try_analyze_arity_qualifier (ModQBody , ModQArg ) ->
951
+ AqBody = erl_syntax :arity_qualifier_body (ModQBody ),
952
+ AqArg = erl_syntax :arity_qualifier_argument (ModQBody ),
953
+ case {erl_syntax :type (ModQArg ), erl_syntax :type (AqBody ), erl_syntax :type (AqArg )} of
954
+ {macro , atom , integer } ->
955
+ M = erl_syntax :variable_name (erl_syntax :macro_name (ModQArg )),
956
+ F = erl_syntax :atom_value (AqBody ),
957
+ A = erl_syntax :integer_value (AqArg ),
958
+ case M of
959
+ 'MODULE' ->
960
+ {F , A };
961
+ _ ->
962
+ undefined
963
+ end ;
964
+ {ModType , FunType , integer } when
965
+ ModType =:= variable orelse ModType =:= atom ,
966
+ FunType =:= variable orelse FunType =:= atom
967
+ ->
968
+ M = node_name (ModQArg ),
969
+ F = node_name (AqBody ),
970
+ A = erl_syntax :integer_value (AqArg ),
971
+ {{ModType , M }, {FunType , F }, A };
972
+ _Types ->
973
+ undefined
974
+ end .
975
+
964
976
-spec macro (tree ()) -> [els_poi :poi ()].
965
977
macro (Tree ) ->
966
978
Anno = macro_location (Tree ),
0 commit comments