aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust/resolve/rust-ast-resolve-item.h
diff options
context:
space:
mode:
authorPhilip Herron <philip.herron@embecosm.com>2021-02-09 18:26:13 +0000
committerPhilip Herron <herron.philip@googlemail.com>2021-02-10 18:10:57 +0000
commit016c40bedc7e3f53e2c413895f77c0d9f723eb3c (patch)
treeacc94919d37d203dbfa251af2c844a18ace0ba81 /gcc/rust/resolve/rust-ast-resolve-item.h
parenta3a343c8853cb0967b21e8da23a829665208b25d (diff)
downloadgcc-016c40bedc7e3f53e2c413895f77c0d9f723eb3c.zip
gcc-016c40bedc7e3f53e2c413895f77c0d9f723eb3c.tar.gz
gcc-016c40bedc7e3f53e2c413895f77c0d9f723eb3c.tar.bz2
Introduce new label namesapce for name resolution
Labels are in their own namesapce so they do not affect types and normal values within a program. Addresses #107
Diffstat (limited to 'gcc/rust/resolve/rust-ast-resolve-item.h')
-rw-r--r--gcc/rust/resolve/rust-ast-resolve-item.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/rust/resolve/rust-ast-resolve-item.h b/gcc/rust/resolve/rust-ast-resolve-item.h
index 8b6227e..f5dc579 100644
--- a/gcc/rust/resolve/rust-ast-resolve-item.h
+++ b/gcc/rust/resolve/rust-ast-resolve-item.h
@@ -88,8 +88,10 @@ public:
NodeId scope_node_id = function.get_node_id ();
resolver->get_name_scope ().push (scope_node_id);
resolver->get_type_scope ().push (scope_node_id);
+ resolver->get_label_scope ().push (scope_node_id);
resolver->push_new_name_rib (resolver->get_name_scope ().peek ());
resolver->push_new_type_rib (resolver->get_type_scope ().peek ());
+ resolver->push_new_label_rib (resolver->get_type_scope ().peek ());
// we make a new scope so the names of parameters are resolved and shadowed
// correctly
@@ -111,6 +113,7 @@ public:
resolver->get_name_scope ().pop ();
resolver->get_type_scope ().pop ();
+ resolver->get_label_scope ().pop ();
}
void visit (AST::InherentImpl &impl_block)