]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gccrs: Add multiple regression test in name resolution
authorPierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
Thu, 30 Nov 2023 09:43:36 +0000 (10:43 +0100)
committerArthur Cohen <arthur.cohen@embecosm.com>
Tue, 30 Jan 2024 11:36:48 +0000 (12:36 +0100)
Local variables and functions or global variables have different
resolution when binded to a variable. This was not covered before, even
though it was handled by the new name resolution. This commit highlight
this behavior from the new name resolution mechanism.

gcc/testsuite/ChangeLog:

* rust/compile/name_resolution11.rs: New test.
* rust/compile/name_resolution12.rs: New test.
* rust/compile/name_resolution13.rs: New test.

Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
gcc/testsuite/rust/compile/name_resolution11.rs [new file with mode: 0644]
gcc/testsuite/rust/compile/name_resolution12.rs [new file with mode: 0644]
gcc/testsuite/rust/compile/name_resolution13.rs [new file with mode: 0644]

diff --git a/gcc/testsuite/rust/compile/name_resolution11.rs b/gcc/testsuite/rust/compile/name_resolution11.rs
new file mode 100644 (file)
index 0000000..a464d2a
--- /dev/null
@@ -0,0 +1,7 @@
+// { dg-additional-options "-frust-name-resolution-2.0 -frust-compile-until=lowering" }
+fn foo() {
+    let b = 10;
+    fn bar() {
+        let a = foo;
+    }
+}
diff --git a/gcc/testsuite/rust/compile/name_resolution12.rs b/gcc/testsuite/rust/compile/name_resolution12.rs
new file mode 100644 (file)
index 0000000..9cce31c
--- /dev/null
@@ -0,0 +1,10 @@
+// { dg-additional-options "-frust-name-resolution-2.0 -frust-compile-until=lowering" }
+
+const TOTO: i32 = 10;
+
+fn foo() {
+    let b = 10;
+    fn bar() {
+        let e = TOTO;
+    }
+}
diff --git a/gcc/testsuite/rust/compile/name_resolution13.rs b/gcc/testsuite/rust/compile/name_resolution13.rs
new file mode 100644 (file)
index 0000000..52a152b
--- /dev/null
@@ -0,0 +1,9 @@
+// { dg-additional-options "-frust-name-resolution-2.0 -frust-compile-until=lowering" }
+
+fn foo() {
+    let b = 10;
+    fn bar() {
+        let c = b;
+        // { dg-error "cannot find value .b. in this scope .E0425." "" { target *-*-* } .-1 }
+    }
+}