diff options
author | Arthur Cohen <arthur.cohen@embecosm.com> | 2023-08-23 17:19:28 +0200 |
---|---|---|
committer | Arthur Cohen <arthur.cohen@embecosm.com> | 2024-08-01 16:52:28 +0200 |
commit | 325bf274de228b2b789a22bf53e1cf41e3142fff (patch) | |
tree | f633684006949e1c0cf3c80b1eb56e27d5b41f82 | |
parent | a20cc967f8773b38bfa518fb58818117a9a58d13 (diff) | |
download | gcc-325bf274de228b2b789a22bf53e1cf41e3142fff.zip gcc-325bf274de228b2b789a22bf53e1cf41e3142fff.tar.gz gcc-325bf274de228b2b789a22bf53e1cf41e3142fff.tar.bz2 |
gccrs: nr2.0: Add new test cases.
gcc/testsuite/ChangeLog:
* rust/compile/name_resolution13.rs: Add new module and remove compile
step.
* rust/compile/name_resolution14.rs: New test.
* rust/compile/name_resolution15.rs: New test.
* rust/compile/name_resolution16.rs: New test.
* rust/compile/name_resolution17.rs: New test.
* rust/compile/name_resolution18.rs: New test.
* rust/compile/name_resolution19.rs: New test.
* rust/compile/name_resolution20.rs: New test.
* rust/compile/name_resolution21.rs: New test.
-rw-r--r-- | gcc/testsuite/rust/compile/name_resolution13.rs | 6 | ||||
-rw-r--r-- | gcc/testsuite/rust/compile/name_resolution14.rs | 15 | ||||
-rw-r--r-- | gcc/testsuite/rust/compile/name_resolution15.rs | 20 | ||||
-rw-r--r-- | gcc/testsuite/rust/compile/name_resolution16.rs | 18 | ||||
-rw-r--r-- | gcc/testsuite/rust/compile/name_resolution17.rs | 10 | ||||
-rw-r--r-- | gcc/testsuite/rust/compile/name_resolution18.rs | 15 | ||||
-rw-r--r-- | gcc/testsuite/rust/compile/name_resolution19.rs | 20 | ||||
-rw-r--r-- | gcc/testsuite/rust/compile/name_resolution20.rs | 11 | ||||
-rw-r--r-- | gcc/testsuite/rust/compile/name_resolution21.rs | 12 |
9 files changed, 126 insertions, 1 deletions
diff --git a/gcc/testsuite/rust/compile/name_resolution13.rs b/gcc/testsuite/rust/compile/name_resolution13.rs index 52a152b..33edbf9 100644 --- a/gcc/testsuite/rust/compile/name_resolution13.rs +++ b/gcc/testsuite/rust/compile/name_resolution13.rs @@ -1,4 +1,8 @@ -// { dg-additional-options "-frust-name-resolution-2.0 -frust-compile-until=lowering" } +// { dg-options "-frust-name-resolution-2.0" } + +pub mod foo { + pub macro bar() {} +} fn foo() { let b = 10; diff --git a/gcc/testsuite/rust/compile/name_resolution14.rs b/gcc/testsuite/rust/compile/name_resolution14.rs new file mode 100644 index 0000000..eaef6a5 --- /dev/null +++ b/gcc/testsuite/rust/compile/name_resolution14.rs @@ -0,0 +1,15 @@ +// { dg-options "-frust-name-resolution-2.0" } + +pub mod foo { + pub macro bar() {} +} + +use foo::biz; // { dg-error "unresolved import .foo::biz. .E0433." } + +use foo::{bar, baz, biz}; +// { dg-error "unresolved import .foo::baz. .E0433." "" { target *-*-* } .-1 } +// { dg-error "unresolved import .foo::biz. .E0433." "" { target *-*-* } .-2 } + +fn main() { + bar!(); +} diff --git a/gcc/testsuite/rust/compile/name_resolution15.rs b/gcc/testsuite/rust/compile/name_resolution15.rs new file mode 100644 index 0000000..45f38da --- /dev/null +++ b/gcc/testsuite/rust/compile/name_resolution15.rs @@ -0,0 +1,20 @@ +// { dg-additional-options "-frust-name-resolution-2.0" } +#![feature(decl_macro)] + +pub mod foo { + pub struct Foo { + pub a: i32, + } + pub fn Foo() {} + pub macro Foo() {{}} +} + +pub use foo::Foo; + +use self::Foo as Fo; + +fn main() { + let _a = Fo(); + let _b = Fo { a: 15 }; + let _c = Fo!(); +} diff --git a/gcc/testsuite/rust/compile/name_resolution16.rs b/gcc/testsuite/rust/compile/name_resolution16.rs new file mode 100644 index 0000000..230722e --- /dev/null +++ b/gcc/testsuite/rust/compile/name_resolution16.rs @@ -0,0 +1,18 @@ +// { dg-additional-options "-frust-name-resolution-2.0" } +#![feature(decl_macro)] + +pub mod foo { + pub struct Foo { + pub a: i32, + } + pub fn Foo() {} + pub macro Foo() {{}} +} + +pub use foo::Foo; + +fn main() { + let _a = Foo(); + let _b = Foo { a: 15 }; + let _c = Foo!(); +} diff --git a/gcc/testsuite/rust/compile/name_resolution17.rs b/gcc/testsuite/rust/compile/name_resolution17.rs new file mode 100644 index 0000000..4859476 --- /dev/null +++ b/gcc/testsuite/rust/compile/name_resolution17.rs @@ -0,0 +1,10 @@ +// { dg-options "-frust-name-resolution-2.0" } + +struct Foo; +fn Foo() {} // { dg-error ".Foo. defined multiple times" } + +struct Marker; +struct Bar { + a: Marker, +} +fn Bar() {} // ok, since `Bar` is not a value here diff --git a/gcc/testsuite/rust/compile/name_resolution18.rs b/gcc/testsuite/rust/compile/name_resolution18.rs new file mode 100644 index 0000000..5940149 --- /dev/null +++ b/gcc/testsuite/rust/compile/name_resolution18.rs @@ -0,0 +1,15 @@ +// { dg-options "-frust-name-resolution-2.0" } + +struct Marker; + +struct Foo { + a: Marker, +} + +pub mod foo { + struct Foo { + b: Marker, + } +} + +use foo::Foo; // { dg-error ".Foo. defined multiple times" } diff --git a/gcc/testsuite/rust/compile/name_resolution19.rs b/gcc/testsuite/rust/compile/name_resolution19.rs new file mode 100644 index 0000000..9a2c843 --- /dev/null +++ b/gcc/testsuite/rust/compile/name_resolution19.rs @@ -0,0 +1,20 @@ +struct Marker; + +fn foo(a: Marker, b: Marker) -> Marker { + let a = b; + + a +} + +fn bar() { + let a = 15; + + fn inner() { + // inner functions cannot capture dynamic environment + let b = a; // { dg-error "cannot find value .a. in this scope" } + } +} + +fn main() { + let m = foo(Marker, Marker); +} diff --git a/gcc/testsuite/rust/compile/name_resolution20.rs b/gcc/testsuite/rust/compile/name_resolution20.rs new file mode 100644 index 0000000..e6c2dd5 --- /dev/null +++ b/gcc/testsuite/rust/compile/name_resolution20.rs @@ -0,0 +1,11 @@ +// { dg-options "-frust-name-resolution-2.0" } + +pub mod foo { + pub macro bar() {} +} + +use foo::bar; + +fn main() { + bar!(); +} diff --git a/gcc/testsuite/rust/compile/name_resolution21.rs b/gcc/testsuite/rust/compile/name_resolution21.rs new file mode 100644 index 0000000..3d0af2b --- /dev/null +++ b/gcc/testsuite/rust/compile/name_resolution21.rs @@ -0,0 +1,12 @@ +// { dg-additional-options "-frust-name-resolution-2.0" } + +pub mod foo { + pub macro bar() {} +} + +use foo::bar; +use foo::bar; // { dg-error ".bar. defined multiple times" } + +fn main() { + bar!(); +} |