From: Owen Avery <[email protected]>
Some of our tests only work with name resolution 2.0 because the latter
misinterprets type paths. This change should cause the compiler to error out
if it would otherwise misinterpret a type path. A fix for type path
resolution isn't included in this comment, since doing so would make it
harder to track the meaningfulness of test regressions.
gcc/rust/ChangeLog:
* resolve/rust-late-name-resolver-2.0.cc
(Late::visit): Error out if a type path has multiple segments,
as we currently ignore every segment except the last.
gcc/testsuite/ChangeLog:
* rust/compile/nr2/exclude: Add entries.
Signed-off-by: Owen Avery <[email protected]>
---
gcc/rust/resolve/rust-late-name-resolver-2.0.cc | 8 ++++++++
gcc/testsuite/rust/compile/nr2/exclude | 15 +++++++++++++++
2 files changed, 23 insertions(+)
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 802f6a4d2ab..e3d95e5dd7b 100644
--- a/gcc/rust/resolve/rust-late-name-resolver-2.0.cc
+++ b/gcc/rust/resolve/rust-late-name-resolver-2.0.cc
@@ -287,6 +287,14 @@ Late::visit (AST::TypePath &type)
// maybe we can overload `resolve_path<Namespace::Types>` to only do
// typepath-like path resolution? that sounds good
+ if (type.get_segments ().size () != 1)
+ {
+ rust_sorry_at (
+ type.get_locus (),
+ "name resolution 2.0 cannot resolve multi-segment type paths");
+ return;
+ }
+
auto str = type.get_segments ().back ()->get_ident_segment ().as_string ();
auto values = ctx.types.peek ().get_values ();
diff --git a/gcc/testsuite/rust/compile/nr2/exclude
b/gcc/testsuite/rust/compile/nr2/exclude
index d53c1487173..5cc7cf7d64c 100644
--- a/gcc/testsuite/rust/compile/nr2/exclude
+++ b/gcc/testsuite/rust/compile/nr2/exclude
@@ -58,6 +58,7 @@ iterators1.rs
lookup_err1.rs
macros/mbe/macro13.rs
macros/mbe/macro15.rs
+macros/mbe/macro20.rs
macros/mbe/macro23.rs
macros/mbe/macro40.rs
macros/mbe/macro43.rs
@@ -151,4 +152,18 @@ derive_macro6.rs
issue-2987.rs
issue-3139-1.rs
issue-3139-3.rs
+issue-1019.rs
+issue-1034.rs
+issue-2019-1.rs
+issue-2019-2.rs
+issue-2019-3.rs
+issue-2105.rs
+issue-2190-1.rs
+issue-2190-2.rs
+issue-2304.rs
+issue-2747.rs
+issue-2953-1.rs
+issue-3030.rs
+traits12.rs
+try-trait.rs
# please don't delete the trailing newline
--
2.45.2