diff options
Diffstat (limited to 'gcc/rust/resolve/rust-ast-resolve-toplevel.h')
-rw-r--r-- | gcc/rust/resolve/rust-ast-resolve-toplevel.h | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/gcc/rust/resolve/rust-ast-resolve-toplevel.h b/gcc/rust/resolve/rust-ast-resolve-toplevel.h index 6a4395f..447fe4b 100644 --- a/gcc/rust/resolve/rust-ast-resolve-toplevel.h +++ b/gcc/rust/resolve/rust-ast-resolve-toplevel.h @@ -39,13 +39,14 @@ public: void visit (AST::StructStruct &struct_decl) { resolver->get_type_scope ().insert (struct_decl.get_identifier (), - struct_decl.get_node_id ()); + struct_decl.get_node_id (), + struct_decl.get_locus ()); } void visit (AST::StaticItem &var) { resolver->get_name_scope ().insert (var.get_identifier (), - var.get_node_id ()); + var.get_node_id (), var.get_locus ()); resolver->insert_new_definition (var.get_node_id (), Definition{var.get_node_id (), var.get_node_id ()}); @@ -54,7 +55,8 @@ public: void visit (AST::ConstantItem &constant) { resolver->get_name_scope ().insert (constant.get_identifier (), - constant.get_node_id ()); + constant.get_node_id (), + constant.get_locus ()); resolver->insert_new_definition (constant.get_node_id (), Definition{constant.get_node_id (), constant.get_node_id ()}); @@ -62,10 +64,17 @@ public: void visit (AST::Function &function) { - // function_names are simple std::String identifiers so this can be a - // NodeId mapping to the Function node resolver->get_name_scope ().insert (function.get_function_name (), + function.get_node_id (), + function.get_locus ()); + + // if this does not get a reference it will be determined to be unused + // lets give it a fake reference to itself + if (function.get_function_name ().compare ("main") == 0) + { + resolver->insert_resolved_name (function.get_node_id (), function.get_node_id ()); + } } private: |