diff options
author | Philip Herron <herron.philip@googlemail.com> | 2020-05-17 19:04:57 +0100 |
---|---|---|
committer | Philip Herron <philip.herron@embecosm.com> | 2020-11-28 21:13:13 +0000 |
commit | 40a5081072f2069447b3d3267f8b00a16433ab91 (patch) | |
tree | 957ca521a820928142840d561696411589dfa474 /gcc/rust/analysis/rust-resolution.cc | |
parent | b681de371e99a871be22603a24291a716d8f268d (diff) | |
download | gcc-40a5081072f2069447b3d3267f8b00a16433ab91.zip gcc-40a5081072f2069447b3d3267f8b00a16433ab91.tar.gz gcc-40a5081072f2069447b3d3267f8b00a16433ab91.tar.bz2 |
Add in a toplevel pass to grab global declarations for analysis pass
Diffstat (limited to 'gcc/rust/analysis/rust-resolution.cc')
-rw-r--r-- | gcc/rust/analysis/rust-resolution.cc | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/gcc/rust/analysis/rust-resolution.cc b/gcc/rust/analysis/rust-resolution.cc index 8d53567..731801a 100644 --- a/gcc/rust/analysis/rust-resolution.cc +++ b/gcc/rust/analysis/rust-resolution.cc @@ -19,7 +19,8 @@ namespace Rust { namespace Analysis { -TypeResolution::TypeResolution (AST::Crate &crate) : crate (crate) +TypeResolution::TypeResolution (AST::Crate &crate, TopLevelScan &toplevel) + : crate (crate), toplevel (toplevel) { typeScope.Push (); scope.Push (); @@ -50,9 +51,9 @@ TypeResolution::~TypeResolution () } bool -TypeResolution::ResolveNamesAndTypes (AST::Crate &crate) +TypeResolution::ResolveNamesAndTypes (AST::Crate &crate, TopLevelScan &toplevel) { - TypeResolution resolver (crate); + TypeResolution resolver (crate, toplevel); return resolver.go (); } @@ -315,7 +316,11 @@ TypeResolution::visit (AST::AssignmentExpr &expr) // scope will require knowledge of the type // do the lhsType and the rhsType match - typesAreCompatible (lhsType, rhsType, expr.right_expr->get_locus_slow ()); + if (!typesAreCompatible (lhsType, rhsType, + expr.right_expr->get_locus_slow ())) + return; + + // is the lhs mutable? } void |