about summary refs log tree commit diff
path: root/tests
diff options
context:
space:
mode:
authorOli Scherer <github333195615777966@oli-obk.de>2025-02-25 09:52:55 +0000
committerOli Scherer <github333195615777966@oli-obk.de>2025-03-11 12:05:02 +0000
commit3e4e65ee8b8c5d7a1916fd6377901416f06dca4d (patch)
treefbe24801482bb43680abaaf9128bf47741fca828 /tests
parentcb4751d4b87e1c8ebdeb381abe3785486a59968e (diff)
downloadrust-3e4e65ee8b8c5d7a1916fd6377901416f06dca4d.tar.gz
rust-3e4e65ee8b8c5d7a1916fd6377901416f06dca4d.zip
Test invalid `define_opaques` attributes
Diffstat (limited to 'tests')
-rw-r--r--tests/ui/type-alias-impl-trait/define_opaques_attr/foreign_type.rs5
-rw-r--r--tests/ui/type-alias-impl-trait/define_opaques_attr/foreign_type.stderr8
-rw-r--r--tests/ui/type-alias-impl-trait/define_opaques_attr/generics.rs13
-rw-r--r--tests/ui/type-alias-impl-trait/define_opaques_attr/generics.stderr29
-rw-r--r--tests/ui/type-alias-impl-trait/define_opaques_attr/invalid_path.rs5
-rw-r--r--tests/ui/type-alias-impl-trait/define_opaques_attr/invalid_path.stderr9
-rw-r--r--tests/ui/type-alias-impl-trait/define_opaques_attr/missing_parens.rs5
-rw-r--r--tests/ui/type-alias-impl-trait/define_opaques_attr/missing_parens.stderr8
-rw-r--r--tests/ui/type-alias-impl-trait/define_opaques_attr/no_opaque.rs8
-rw-r--r--tests/ui/type-alias-impl-trait/define_opaques_attr/non_type.rs7
-rw-r--r--tests/ui/type-alias-impl-trait/define_opaques_attr/non_type.stderr9
11 files changed, 106 insertions, 0 deletions
diff --git a/tests/ui/type-alias-impl-trait/define_opaques_attr/foreign_type.rs b/tests/ui/type-alias-impl-trait/define_opaques_attr/foreign_type.rs
new file mode 100644
index 00000000000..c8b6bdbe2b9
--- /dev/null
+++ b/tests/ui/type-alias-impl-trait/define_opaques_attr/foreign_type.rs
@@ -0,0 +1,5 @@
+#![feature(type_alias_impl_trait)]
+
+#[define_opaque(String)]
+//~^ ERROR: only opaque types defined in the local crate can be defined
+fn main() {}
diff --git a/tests/ui/type-alias-impl-trait/define_opaques_attr/foreign_type.stderr b/tests/ui/type-alias-impl-trait/define_opaques_attr/foreign_type.stderr
new file mode 100644
index 00000000000..65820e158f3
--- /dev/null
+++ b/tests/ui/type-alias-impl-trait/define_opaques_attr/foreign_type.stderr
@@ -0,0 +1,8 @@
+error: only opaque types defined in the local crate can be defined
+  --> $DIR/foreign_type.rs:3:17
+   |
+LL | #[define_opaque(String)]
+   |                 ^^^^^^
+
+error: aborting due to 1 previous error
+
diff --git a/tests/ui/type-alias-impl-trait/define_opaques_attr/generics.rs b/tests/ui/type-alias-impl-trait/define_opaques_attr/generics.rs
new file mode 100644
index 00000000000..11825dc54ee
--- /dev/null
+++ b/tests/ui/type-alias-impl-trait/define_opaques_attr/generics.rs
@@ -0,0 +1,13 @@
+#![feature(type_alias_impl_trait)]
+
+type Tait<T> = impl Sized;
+//~^ ERROR: unconstrained opaque type
+
+#[define_opaque(Tait::<()>)]
+//~^ ERROR: expected unsuffixed literal
+fn foo() {}
+
+#[define_opaque(Tait<()>)]
+//~^ ERROR: expected one of `(`, `,`, `::`, or `=`, found `<`
+fn main() {}
+//~^ ERROR: `main` function not found
diff --git a/tests/ui/type-alias-impl-trait/define_opaques_attr/generics.stderr b/tests/ui/type-alias-impl-trait/define_opaques_attr/generics.stderr
new file mode 100644
index 00000000000..8f33f336728
--- /dev/null
+++ b/tests/ui/type-alias-impl-trait/define_opaques_attr/generics.stderr
@@ -0,0 +1,29 @@
+error: expected unsuffixed literal, found `<`
+  --> $DIR/generics.rs:6:23
+   |
+LL | #[define_opaque(Tait::<()>)]
+   |                       ^
+
+error: expected one of `(`, `,`, `::`, or `=`, found `<`
+  --> $DIR/generics.rs:10:21
+   |
+LL | #[define_opaque(Tait<()>)]
+   |                     ^ expected one of `(`, `,`, `::`, or `=`
+
+error[E0601]: `main` function not found in crate `generics`
+  --> $DIR/generics.rs:12:13
+   |
+LL | fn main() {}
+   |             ^ consider adding a `main` function to `$DIR/generics.rs`
+
+error: unconstrained opaque type
+  --> $DIR/generics.rs:3:16
+   |
+LL | type Tait<T> = impl Sized;
+   |                ^^^^^^^^^^
+   |
+   = note: `Tait` must be used in combination with a concrete type within the same crate
+
+error: aborting due to 4 previous errors
+
+For more information about this error, try `rustc --explain E0601`.
diff --git a/tests/ui/type-alias-impl-trait/define_opaques_attr/invalid_path.rs b/tests/ui/type-alias-impl-trait/define_opaques_attr/invalid_path.rs
new file mode 100644
index 00000000000..a02e80c6d89
--- /dev/null
+++ b/tests/ui/type-alias-impl-trait/define_opaques_attr/invalid_path.rs
@@ -0,0 +1,5 @@
+#![feature(type_alias_impl_trait)]
+
+#[define_opaque(Boom)]
+//~^ ERROR: cannot find type alias or associated type
+fn main() {}
diff --git a/tests/ui/type-alias-impl-trait/define_opaques_attr/invalid_path.stderr b/tests/ui/type-alias-impl-trait/define_opaques_attr/invalid_path.stderr
new file mode 100644
index 00000000000..6b4cd4eac51
--- /dev/null
+++ b/tests/ui/type-alias-impl-trait/define_opaques_attr/invalid_path.stderr
@@ -0,0 +1,9 @@
+error[E0412]: cannot find type alias or associated type with opaqaue types `Boom` in this scope
+  --> $DIR/invalid_path.rs:3:17
+   |
+LL | #[define_opaque(Boom)]
+   |                 ^^^^ not found in this scope
+
+error: aborting due to 1 previous error
+
+For more information about this error, try `rustc --explain E0412`.
diff --git a/tests/ui/type-alias-impl-trait/define_opaques_attr/missing_parens.rs b/tests/ui/type-alias-impl-trait/define_opaques_attr/missing_parens.rs
new file mode 100644
index 00000000000..6a5a1b456c3
--- /dev/null
+++ b/tests/ui/type-alias-impl-trait/define_opaques_attr/missing_parens.rs
@@ -0,0 +1,5 @@
+#![feature(type_alias_impl_trait)]
+
+#[define_opaque]
+//~^ ERROR: expected list of type aliases
+fn main() {}
diff --git a/tests/ui/type-alias-impl-trait/define_opaques_attr/missing_parens.stderr b/tests/ui/type-alias-impl-trait/define_opaques_attr/missing_parens.stderr
new file mode 100644
index 00000000000..a3b98ec83b2
--- /dev/null
+++ b/tests/ui/type-alias-impl-trait/define_opaques_attr/missing_parens.stderr
@@ -0,0 +1,8 @@
+error: expected list of type aliases
+  --> $DIR/missing_parens.rs:3:1
+   |
+LL | #[define_opaque]
+   | ^^^^^^^^^^^^^^^^
+
+error: aborting due to 1 previous error
+
diff --git a/tests/ui/type-alias-impl-trait/define_opaques_attr/no_opaque.rs b/tests/ui/type-alias-impl-trait/define_opaques_attr/no_opaque.rs
new file mode 100644
index 00000000000..d995e785cc8
--- /dev/null
+++ b/tests/ui/type-alias-impl-trait/define_opaques_attr/no_opaque.rs
@@ -0,0 +1,8 @@
+//@ check-pass
+
+#![feature(type_alias_impl_trait)]
+
+type Thing = ();
+
+#[define_opaque(Thing)]
+fn main() {}
diff --git a/tests/ui/type-alias-impl-trait/define_opaques_attr/non_type.rs b/tests/ui/type-alias-impl-trait/define_opaques_attr/non_type.rs
new file mode 100644
index 00000000000..0ad87616a51
--- /dev/null
+++ b/tests/ui/type-alias-impl-trait/define_opaques_attr/non_type.rs
@@ -0,0 +1,7 @@
+#![feature(type_alias_impl_trait)]
+
+fn foo() {}
+
+#[define_opaque(foo)]
+//~^ ERROR: expected type alias or associated type with opaqaue types
+fn main() {}
diff --git a/tests/ui/type-alias-impl-trait/define_opaques_attr/non_type.stderr b/tests/ui/type-alias-impl-trait/define_opaques_attr/non_type.stderr
new file mode 100644
index 00000000000..0f91533bf7e
--- /dev/null
+++ b/tests/ui/type-alias-impl-trait/define_opaques_attr/non_type.stderr
@@ -0,0 +1,9 @@
+error[E0573]: expected type alias or associated type with opaqaue types, found function `foo`
+  --> $DIR/non_type.rs:5:17
+   |
+LL | #[define_opaque(foo)]
+   |                 ^^^ not a type alias or associated type with opaqaue types
+
+error: aborting due to 1 previous error
+
+For more information about this error, try `rustc --explain E0573`.