aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/rust/resolve/rust-late-name-resolver-2.0.cc26
-rw-r--r--gcc/testsuite/rust/compile/nr2/exclude3
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 71c63f1..1d8e661 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 de58248..59964fc 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