aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust/resolve/rust-ast-resolve-toplevel.h
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/rust/resolve/rust-ast-resolve-toplevel.h')
-rw-r--r--gcc/rust/resolve/rust-ast-resolve-toplevel.h19
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: