From: Owen Avery <powerboat9.ga...@gmail.com> gcc/rust/ChangeLog:
* resolve/rust-late-name-resolver-2.0.cc (Late::visit): Make sure to return early after a resolution error, improve the resolution error message, fix a typo, handle ambiguous resolutions, and remove an old comment. gcc/testsuite/ChangeLog: * rust/compile/nr2/exclude: Remove entries. Signed-off-by: Owen Avery <powerboat9.ga...@gmail.com> --- .../resolve/rust-late-name-resolver-2.0.cc | 26 ++++++++++++------- gcc/testsuite/rust/compile/nr2/exclude | 3 --- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/gcc/rust/resolve/rust-late-name-resolver-2.0.cc b/gcc/rust/resolve/rust-late-name-resolver-2.0.cc index a8eb3b4fa12..09aa5fc44e6 100644 --- a/gcc/rust/resolve/rust-late-name-resolver-2.0.cc +++ b/gcc/rust/resolve/rust-late-name-resolver-2.0.cc @@ -232,21 +232,29 @@ Late::visit (AST::IdentifierExpr &expr) } else { - if (auto typ = ctx.types.get_prelude (expr.get_ident ())) - resolved = typ; + if (auto type = ctx.types.get_prelude (expr.get_ident ())) + { + resolved = type; + } else - rust_error_at (expr.get_locus (), - "could not resolve identifier expression: %qs", - expr.get_ident ().as_string ().c_str ()); + { + rust_error_at (expr.get_locus (), ErrorCode::E0425, + "cannot find value %qs in this scope", + expr.get_ident ().as_string ().c_str ()); + return; + } + } + + if (resolved->is_ambiguous ()) + { + rust_error_at (expr.get_locus (), ErrorCode::E0659, "%qs is ambiguous", + expr.as_string ().c_str ()); + return; } ctx.map_usage (Usage (expr.get_node_id ()), Definition (resolved->get_node_id ())); - // in the old resolver, resolutions are kept in the resolver, not the mappings - // :/ how do we deal with that? - // ctx.mappings.insert_resolved_name(expr, resolved); - // For empty types, do we perform a lookup in ctx.types or should the // toplevel instead insert a name in ctx.values? (like it currently does) } diff --git a/gcc/testsuite/rust/compile/nr2/exclude b/gcc/testsuite/rust/compile/nr2/exclude index de5824813b4..59964fc90e2 100644 --- a/gcc/testsuite/rust/compile/nr2/exclude +++ b/gcc/testsuite/rust/compile/nr2/exclude @@ -1,8 +1,6 @@ -break-rust2.rs canonical_paths1.rs cfg1.rs const_generics_3.rs -const_generics_4.rs feature_rust_attri0.rs generics9.rs issue-1901.rs @@ -19,7 +17,6 @@ macros/mbe/macro43.rs macros/mbe/macro6.rs multiple_bindings1.rs multiple_bindings2.rs -not_find_value_in_scope.rs privacy5.rs privacy8.rs pub_restricted_1.rs -- 2.45.2