Allow using namespace to appear in the top level
This commit is contained in:
parent
3a4b63baa2
commit
519e60039e
@ -813,6 +813,10 @@ infer1(Env, [{namespace, Ann, Name, Code} | Rest], Acc, Options) ->
|
|||||||
{Env1, Code1} = infer_contract_top(push_scope(namespace, Name, Env), namespace, Code, Options),
|
{Env1, Code1} = infer_contract_top(push_scope(namespace, Name, Env), namespace, Code, Options),
|
||||||
Namespace1 = {namespace, Ann, Name, Code1},
|
Namespace1 = {namespace, Ann, Name, Code1},
|
||||||
infer1(pop_scope(Env1), Rest, [Namespace1 | Acc], Options);
|
infer1(pop_scope(Env1), Rest, [Namespace1 | Acc], Options);
|
||||||
|
infer1(Env, [Using = {using, _, _} | Rest], Acc, Options) ->
|
||||||
|
infer1(check_usings(Env, [Using]), Rest, Acc, Options);
|
||||||
|
infer1(Env, [Using = {using, _, _, _} | Rest], Acc, Options) ->
|
||||||
|
infer1(check_usings(Env, [Using]), Rest, Acc, Options);
|
||||||
infer1(Env, [{pragma, _, _} | Rest], Acc, Options) ->
|
infer1(Env, [{pragma, _, _} | Rest], Acc, Options) ->
|
||||||
%% Pragmas are checked in check_modifiers
|
%% Pragmas are checked in check_modifiers
|
||||||
infer1(Env, Rest, Acc, Options).
|
infer1(Env, Rest, Acc, Options).
|
||||||
@ -1003,9 +1007,9 @@ check_typedef(Env, {variant_t, Cons}) ->
|
|||||||
|
|
||||||
check_usings(Env, []) ->
|
check_usings(Env, []) ->
|
||||||
Env;
|
Env;
|
||||||
check_usings(Env = #env{ used_namespaces = UsedNamespaces }, [{using, Ann, Con} | Rest]) ->
|
check_usings(Env = #env{ used_namespaces = UsedNamespaces }, [{using, _, Con} | Rest]) ->
|
||||||
check_usings(Env#env{ used_namespaces = UsedNamespaces ++ [{qname(Con), none}] }, Rest);
|
check_usings(Env#env{ used_namespaces = UsedNamespaces ++ [{qname(Con), none}] }, Rest);
|
||||||
check_usings(Env = #env{ used_namespaces = UsedNamespaces }, [{using, Ann, Con, Alias} | Rest]) ->
|
check_usings(Env = #env{ used_namespaces = UsedNamespaces }, [{using, _, Con, Alias} | Rest]) ->
|
||||||
check_usings(Env#env{ used_namespaces = UsedNamespaces ++ [{qname(Con), qname(Alias)}] }, Rest).
|
check_usings(Env#env{ used_namespaces = UsedNamespaces ++ [{qname(Con), qname(Alias)}] }, Rest).
|
||||||
|
|
||||||
check_unexpected(Xs) ->
|
check_unexpected(Xs) ->
|
||||||
@ -1037,6 +1041,10 @@ check_modifiers_(Env, [{namespace, _, _, Decls} | Rest]) ->
|
|||||||
check_modifiers_(Env, [{pragma, Ann, Pragma} | Rest]) ->
|
check_modifiers_(Env, [{pragma, Ann, Pragma} | Rest]) ->
|
||||||
check_pragma(Env, Ann, Pragma),
|
check_pragma(Env, Ann, Pragma),
|
||||||
check_modifiers_(Env, Rest);
|
check_modifiers_(Env, Rest);
|
||||||
|
check_modifiers_(Env, [{using, _, _} | Rest]) ->
|
||||||
|
check_modifiers_(Env, Rest);
|
||||||
|
check_modifiers_(Env, [{using, _, _, _} | Rest]) ->
|
||||||
|
check_modifiers_(Env, Rest);
|
||||||
check_modifiers_(Env, [Decl | Rest]) ->
|
check_modifiers_(Env, [Decl | Rest]) ->
|
||||||
type_error({bad_top_level_decl, Decl}),
|
type_error({bad_top_level_decl, Decl}),
|
||||||
check_modifiers_(Env, Rest);
|
check_modifiers_(Env, Rest);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user