diff options
author | SimplyTheOther <simplytheother@gmail.com> | 2020-12-25 18:00:23 +0800 |
---|---|---|
committer | SimplyTheOther <simplytheother@gmail.com> | 2020-12-25 18:00:23 +0800 |
commit | faf78e75e4ec3c989e452d47dc37a0be1706bf08 (patch) | |
tree | 8cd4b2b11b9d7e259466fff9638c0057fcc52340 /gcc/rust/resolve/rust-ast-resolve.cc | |
parent | 859720937474816d4d386664d56d80a9e840f06f (diff) | |
parent | 8d34ac3c1602d8506ae4b65d92075be86f5a6c9a (diff) | |
download | gcc-faf78e75e4ec3c989e452d47dc37a0be1706bf08.zip gcc-faf78e75e4ec3c989e452d47dc37a0be1706bf08.tar.gz gcc-faf78e75e4ec3c989e452d47dc37a0be1706bf08.tar.bz2 |
Merge branch 'master' of https://github.com/redbrain/gccrs
Diffstat (limited to 'gcc/rust/resolve/rust-ast-resolve.cc')
-rw-r--r-- | gcc/rust/resolve/rust-ast-resolve.cc | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/gcc/rust/resolve/rust-ast-resolve.cc b/gcc/rust/resolve/rust-ast-resolve.cc index ba4ee21..8370a5b 100644 --- a/gcc/rust/resolve/rust-ast-resolve.cc +++ b/gcc/rust/resolve/rust-ast-resolve.cc @@ -17,10 +17,11 @@ // <http://www.gnu.org/licenses/>. #include "rust-ast-resolve.h" -#include "rust-ast-resolve-toplevel.h" -#include "rust-ast-resolve-item.h" #include "rust-ast-full.h" #include "rust-tyty.h" +#include "rust-ast-resolve-toplevel.h" +#include "rust-ast-resolve-item.h" +#include "rust-ast-resolve-expr.h" #define MKBUILTIN_TYPE(_X, _R, _TY) \ do \ @@ -250,5 +251,25 @@ NameResolution::go (AST::Crate &crate) ResolveItem::go (it->get ()); } +// rust-ast-resolve-expr.h + +void +ResolveExpr::visit (AST::BlockExpr &expr) +{ + NodeId scope_node_id = expr.get_node_id (); + resolver->get_name_scope ().push (scope_node_id); + resolver->get_type_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 ()); + + expr.iterate_stmts ([&] (AST::Stmt *s) mutable -> bool { + ResolveStmt::go (s, s->get_node_id ()); + return true; + }); + + resolver->get_name_scope ().pop (); + resolver->get_type_scope ().pop (); +} + } // namespace Resolver } // namespace Rust |