about summary refs log tree commit diff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/ui/consts/const-try-feature-gate.rs2
-rw-r--r--tests/ui/consts/const-try-feature-gate.stderr36
-rw-r--r--tests/ui/consts/const-try.rs8
-rw-r--r--tests/ui/consts/const-try.stderr37
-rw-r--r--tests/ui/consts/control-flow/try.rs9
-rw-r--r--tests/ui/consts/control-flow/try.stderr19
-rw-r--r--tests/ui/consts/try-operator.rs3
-rw-r--r--tests/ui/consts/try-operator.stderr42
-rw-r--r--tests/ui/traits/const-traits/hir-const-check.rs4
-rw-r--r--tests/ui/traits/const-traits/hir-const-check.stderr19
-rw-r--r--tests/ui/traits/const-traits/ice-119717-constant-lifetime.rs5
-rw-r--r--tests/ui/traits/const-traits/ice-119717-constant-lifetime.stderr13
-rw-r--r--tests/ui/traits/const-traits/ice-126148-failed-to-normalize.rs8
-rw-r--r--tests/ui/traits/const-traits/ice-126148-failed-to-normalize.stderr41
-rw-r--r--tests/ui/traits/const-traits/trait-default-body-stability.rs2
-rw-r--r--tests/ui/traits/const-traits/trait-default-body-stability.stderr37
16 files changed, 55 insertions, 230 deletions
diff --git a/tests/ui/consts/const-try-feature-gate.rs b/tests/ui/consts/const-try-feature-gate.rs
index 09985079e8e..4a98185a18a 100644
--- a/tests/ui/consts/const-try-feature-gate.rs
+++ b/tests/ui/consts/const-try-feature-gate.rs
@@ -4,6 +4,8 @@ const fn t() -> Option<()> {
     Some(())?;
     //~^ ERROR `?` is not allowed
     //~| ERROR `?` is not allowed
+    //~| ERROR `Try` is not yet stable as a const trait
+    //~| ERROR `FromResidual` is not yet stable as a const trait
     None
 }
 
diff --git a/tests/ui/consts/const-try-feature-gate.stderr b/tests/ui/consts/const-try-feature-gate.stderr
index 0ad19d05b38..62a4a5fba4f 100644
--- a/tests/ui/consts/const-try-feature-gate.stderr
+++ b/tests/ui/consts/const-try-feature-gate.stderr
@@ -1,19 +1,47 @@
-error[E0015]: `?` is not allowed on `Option<()>` in constant functions
+error[E0658]: `?` is not allowed on `Option<()>` in constant functions
   --> $DIR/const-try-feature-gate.rs:4:5
    |
 LL |     Some(())?;
    |     ^^^^^^^^^
    |
    = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
+   = note: see issue #143874 <https://github.com/rust-lang/rust/issues/143874> for more information
+   = help: add `#![feature(const_trait_impl)]` to the crate attributes to enable
+   = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0015]: `?` is not allowed on `Option<()>` in constant functions
+error: `Try` is not yet stable as a const trait
+  --> $DIR/const-try-feature-gate.rs:4:5
+   |
+LL |     Some(())?;
+   |     ^^^^^^^^^
+   |
+help: add `#![feature(const_try)]` to the crate attributes to enable
+   |
+LL + #![feature(const_try)]
+   |
+
+error[E0658]: `?` is not allowed on `Option<()>` in constant functions
   --> $DIR/const-try-feature-gate.rs:4:5
    |
 LL |     Some(())?;
    |     ^^^^^^^^^
    |
    = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
+   = note: see issue #143874 <https://github.com/rust-lang/rust/issues/143874> for more information
+   = help: add `#![feature(const_trait_impl)]` to the crate attributes to enable
+   = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
+
+error: `FromResidual` is not yet stable as a const trait
+  --> $DIR/const-try-feature-gate.rs:4:5
+   |
+LL |     Some(())?;
+   |     ^^^^^^^^^
+   |
+help: add `#![feature(const_try)]` to the crate attributes to enable
+   |
+LL + #![feature(const_try)]
+   |
 
-error: aborting due to 2 previous errors
+error: aborting due to 4 previous errors
 
-For more information about this error, try `rustc --explain E0015`.
+For more information about this error, try `rustc --explain E0658`.
diff --git a/tests/ui/consts/const-try.rs b/tests/ui/consts/const-try.rs
index e13fad78441..152400d702e 100644
--- a/tests/ui/consts/const-try.rs
+++ b/tests/ui/consts/const-try.rs
@@ -1,4 +1,6 @@
-//@ compile-flags: -Znext-solver
+//@ check-pass
+//@ revisions: current next
+//@[next] compile-flags: -Znext-solver
 
 // Demonstrates what's needed to make use of `?` in const contexts.
 
@@ -13,14 +15,12 @@ struct TryMe;
 struct Error;
 
 impl const FromResidual<Error> for TryMe {
-    //~^ ERROR const `impl` for trait `FromResidual` which is not `const`
     fn from_residual(residual: Error) -> Self {
         TryMe
     }
 }
 
 impl const Try for TryMe {
-    //~^ ERROR const `impl` for trait `Try` which is not `const`
     type Output = ();
     type Residual = Error;
     fn from_output(output: Self::Output) -> Self {
@@ -33,8 +33,6 @@ impl const Try for TryMe {
 
 const fn t() -> TryMe {
     TryMe?;
-    //~^ ERROR `?` is not allowed on
-    //~| ERROR `?` is not allowed on
     TryMe
 }
 
diff --git a/tests/ui/consts/const-try.stderr b/tests/ui/consts/const-try.stderr
deleted file mode 100644
index 7004ea3e6db..00000000000
--- a/tests/ui/consts/const-try.stderr
+++ /dev/null
@@ -1,37 +0,0 @@
-error: const `impl` for trait `FromResidual` which is not `const`
-  --> $DIR/const-try.rs:15:12
-   |
-LL | impl const FromResidual<Error> for TryMe {
-   |            ^^^^^^^^^^^^^^^^^^^ this trait is not `const`
-   |
-   = note: marking a trait with `const` ensures all default method bodies are `const`
-   = note: adding a non-const method body in the future would be a breaking change
-
-error: const `impl` for trait `Try` which is not `const`
-  --> $DIR/const-try.rs:22:12
-   |
-LL | impl const Try for TryMe {
-   |            ^^^ this trait is not `const`
-   |
-   = note: marking a trait with `const` ensures all default method bodies are `const`
-   = note: adding a non-const method body in the future would be a breaking change
-
-error[E0015]: `?` is not allowed on `TryMe` in constant functions
-  --> $DIR/const-try.rs:35:5
-   |
-LL |     TryMe?;
-   |     ^^^^^^
-   |
-   = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
-
-error[E0015]: `?` is not allowed on `TryMe` in constant functions
-  --> $DIR/const-try.rs:35:5
-   |
-LL |     TryMe?;
-   |     ^^^^^^
-   |
-   = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
-
-error: aborting due to 4 previous errors
-
-For more information about this error, try `rustc --explain E0015`.
diff --git a/tests/ui/consts/control-flow/try.rs b/tests/ui/consts/control-flow/try.rs
index 67083e1a39b..6d762f9194e 100644
--- a/tests/ui/consts/control-flow/try.rs
+++ b/tests/ui/consts/control-flow/try.rs
@@ -1,11 +1,12 @@
-// The `?` operator is still not const-evaluatable because it calls `From::from` on the error
-// variant.
+//@ check-pass
+
+#![allow(dead_code)]
+#![feature(const_trait_impl)]
+#![feature(const_try)]
 
 const fn opt() -> Option<i32> {
     let x = Some(2);
     x?;
-    //~^ ERROR: `?` is not allowed
-    //~| ERROR: `?` is not allowed
     None
 }
 
diff --git a/tests/ui/consts/control-flow/try.stderr b/tests/ui/consts/control-flow/try.stderr
deleted file mode 100644
index 62a3e3ce6bc..00000000000
--- a/tests/ui/consts/control-flow/try.stderr
+++ /dev/null
@@ -1,19 +0,0 @@
-error[E0015]: `?` is not allowed on `Option<i32>` in constant functions
-  --> $DIR/try.rs:6:5
-   |
-LL |     x?;
-   |     ^^
-   |
-   = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
-
-error[E0015]: `?` is not allowed on `Option<i32>` in constant functions
-  --> $DIR/try.rs:6:5
-   |
-LL |     x?;
-   |     ^^
-   |
-   = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0015`.
diff --git a/tests/ui/consts/try-operator.rs b/tests/ui/consts/try-operator.rs
index 352dbeefa8a..59d9fcb1cbd 100644
--- a/tests/ui/consts/try-operator.rs
+++ b/tests/ui/consts/try-operator.rs
@@ -1,9 +1,8 @@
-//@ known-bug: #110395
+//@ run-pass
 
 #![feature(try_trait_v2)]
 #![feature(const_trait_impl)]
 #![feature(const_try)]
-#![feature(const_convert)]
 
 fn main() {
     const fn result() -> Result<bool, ()> {
diff --git a/tests/ui/consts/try-operator.stderr b/tests/ui/consts/try-operator.stderr
deleted file mode 100644
index fc37039d260..00000000000
--- a/tests/ui/consts/try-operator.stderr
+++ /dev/null
@@ -1,42 +0,0 @@
-error[E0635]: unknown feature `const_convert`
-  --> $DIR/try-operator.rs:6:12
-   |
-LL | #![feature(const_convert)]
-   |            ^^^^^^^^^^^^^
-
-error[E0015]: `?` is not allowed on `Result<(), ()>` in constant functions
-  --> $DIR/try-operator.rs:10:9
-   |
-LL |         Err(())?;
-   |         ^^^^^^^^
-   |
-   = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
-
-error[E0015]: `?` is not allowed on `Result<bool, ()>` in constant functions
-  --> $DIR/try-operator.rs:10:9
-   |
-LL |         Err(())?;
-   |         ^^^^^^^^
-   |
-   = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
-
-error[E0015]: `?` is not allowed on `Option<()>` in constant functions
-  --> $DIR/try-operator.rs:18:9
-   |
-LL |         None?;
-   |         ^^^^^
-   |
-   = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
-
-error[E0015]: `?` is not allowed on `Option<()>` in constant functions
-  --> $DIR/try-operator.rs:18:9
-   |
-LL |         None?;
-   |         ^^^^^
-   |
-   = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
-
-error: aborting due to 5 previous errors
-
-Some errors have detailed explanations: E0015, E0635.
-For more information about an error, try `rustc --explain E0015`.
diff --git a/tests/ui/traits/const-traits/hir-const-check.rs b/tests/ui/traits/const-traits/hir-const-check.rs
index c485fb12184..1b6fa1afab9 100644
--- a/tests/ui/traits/const-traits/hir-const-check.rs
+++ b/tests/ui/traits/const-traits/hir-const-check.rs
@@ -1,8 +1,10 @@
+//@ check-pass
 //@ compile-flags: -Znext-solver
 
 // Regression test for #69615.
 
 #![feature(const_trait_impl)]
+#![feature(const_try)]
 
 #[const_trait]
 pub trait MyTrait {
@@ -12,8 +14,6 @@ pub trait MyTrait {
 impl const MyTrait for () {
     fn method(&self) -> Option<()> {
         Some(())?;
-        //~^ ERROR `?` is not allowed on
-        //~| ERROR `?` is not allowed on
         None
     }
 }
diff --git a/tests/ui/traits/const-traits/hir-const-check.stderr b/tests/ui/traits/const-traits/hir-const-check.stderr
deleted file mode 100644
index d66a7ea3144..00000000000
--- a/tests/ui/traits/const-traits/hir-const-check.stderr
+++ /dev/null
@@ -1,19 +0,0 @@
-error[E0015]: `?` is not allowed on `Option<()>` in constant functions
-  --> $DIR/hir-const-check.rs:14:9
-   |
-LL |         Some(())?;
-   |         ^^^^^^^^^
-   |
-   = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
-
-error[E0015]: `?` is not allowed on `Option<()>` in constant functions
-  --> $DIR/hir-const-check.rs:14:9
-   |
-LL |         Some(())?;
-   |         ^^^^^^^^^
-   |
-   = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0015`.
diff --git a/tests/ui/traits/const-traits/ice-119717-constant-lifetime.rs b/tests/ui/traits/const-traits/ice-119717-constant-lifetime.rs
index 47c85980aca..af552ac0c5e 100644
--- a/tests/ui/traits/const-traits/ice-119717-constant-lifetime.rs
+++ b/tests/ui/traits/const-traits/ice-119717-constant-lifetime.rs
@@ -1,11 +1,10 @@
 #![allow(incomplete_features)]
-#![feature(const_trait_impl, try_trait_v2)]
+#![feature(const_trait_impl, const_try, try_trait_v2)]
 
 use std::ops::FromResidual;
 
 impl<T> const FromResidual for T {
-    //~^ ERROR const `impl` for trait `FromResidual` which is not `const`
-    //~| ERROR type parameter `T` must be used as the type parameter for some local type
+    //~^ ERROR type parameter `T` must be used as the type parameter for some local type
     fn from_residual(t: T) -> _ {
         //~^ ERROR the placeholder `_` is not allowed
         t
diff --git a/tests/ui/traits/const-traits/ice-119717-constant-lifetime.stderr b/tests/ui/traits/const-traits/ice-119717-constant-lifetime.stderr
index 5c5fba95f02..08fc73fe77b 100644
--- a/tests/ui/traits/const-traits/ice-119717-constant-lifetime.stderr
+++ b/tests/ui/traits/const-traits/ice-119717-constant-lifetime.stderr
@@ -1,12 +1,3 @@
-error: const `impl` for trait `FromResidual` which is not `const`
-  --> $DIR/ice-119717-constant-lifetime.rs:6:15
-   |
-LL | impl<T> const FromResidual for T {
-   |               ^^^^^^^^^^^^ this trait is not `const`
-   |
-   = note: marking a trait with `const` ensures all default method bodies are `const`
-   = note: adding a non-const method body in the future would be a breaking change
-
 error[E0210]: type parameter `T` must be used as the type parameter for some local type (e.g., `MyStruct<T>`)
   --> $DIR/ice-119717-constant-lifetime.rs:6:6
    |
@@ -17,7 +8,7 @@ LL | impl<T> const FromResidual for T {
    = note: only traits defined in the current crate can be implemented for a type parameter
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for associated functions
-  --> $DIR/ice-119717-constant-lifetime.rs:9:31
+  --> $DIR/ice-119717-constant-lifetime.rs:8:31
    |
 LL |     fn from_residual(t: T) -> _ {
    |                               ^ not allowed in type signatures
@@ -28,7 +19,7 @@ LL -     fn from_residual(t: T) -> _ {
 LL +     fn from_residual(t: T) -> T {
    |
 
-error: aborting due to 3 previous errors
+error: aborting due to 2 previous errors
 
 Some errors have detailed explanations: E0121, E0210.
 For more information about an error, try `rustc --explain E0121`.
diff --git a/tests/ui/traits/const-traits/ice-126148-failed-to-normalize.rs b/tests/ui/traits/const-traits/ice-126148-failed-to-normalize.rs
index 5e368b9e6a9..bfce9dc9c73 100644
--- a/tests/ui/traits/const-traits/ice-126148-failed-to-normalize.rs
+++ b/tests/ui/traits/const-traits/ice-126148-failed-to-normalize.rs
@@ -6,20 +6,16 @@ struct TryMe;
 struct Error;
 
 impl const FromResidual<Error> for TryMe {}
-//~^ ERROR const `impl` for trait `FromResidual` which is not `const`
-//~| ERROR not all trait items implemented
+//~^ ERROR not all trait items implemented
 
 impl const Try for TryMe {
-    //~^ ERROR const `impl` for trait `Try` which is not `const`
-    //~| ERROR not all trait items implemented
+    //~^ ERROR not all trait items implemented
     type Output = ();
     type Residual = Error;
 }
 
 const fn t() -> TryMe {
     TryMe?;
-    //~^ ERROR `?` is not allowed on
-    //~| ERROR `?` is not allowed on
     TryMe
 }
 
diff --git a/tests/ui/traits/const-traits/ice-126148-failed-to-normalize.stderr b/tests/ui/traits/const-traits/ice-126148-failed-to-normalize.stderr
index 849d6522cd6..183203aa8ba 100644
--- a/tests/ui/traits/const-traits/ice-126148-failed-to-normalize.stderr
+++ b/tests/ui/traits/const-traits/ice-126148-failed-to-normalize.stderr
@@ -1,12 +1,3 @@
-error: const `impl` for trait `FromResidual` which is not `const`
-  --> $DIR/ice-126148-failed-to-normalize.rs:8:12
-   |
-LL | impl const FromResidual<Error> for TryMe {}
-   |            ^^^^^^^^^^^^^^^^^^^ this trait is not `const`
-   |
-   = note: marking a trait with `const` ensures all default method bodies are `const`
-   = note: adding a non-const method body in the future would be a breaking change
-
 error[E0046]: not all trait items implemented, missing: `from_residual`
   --> $DIR/ice-126148-failed-to-normalize.rs:8:1
    |
@@ -15,17 +6,8 @@ LL | impl const FromResidual<Error> for TryMe {}
    |
    = help: implement the missing item: `fn from_residual(_: Error) -> Self { todo!() }`
 
-error: const `impl` for trait `Try` which is not `const`
-  --> $DIR/ice-126148-failed-to-normalize.rs:12:12
-   |
-LL | impl const Try for TryMe {
-   |            ^^^ this trait is not `const`
-   |
-   = note: marking a trait with `const` ensures all default method bodies are `const`
-   = note: adding a non-const method body in the future would be a breaking change
-
 error[E0046]: not all trait items implemented, missing: `from_output`, `branch`
-  --> $DIR/ice-126148-failed-to-normalize.rs:12:1
+  --> $DIR/ice-126148-failed-to-normalize.rs:11:1
    |
 LL | impl const Try for TryMe {
    | ^^^^^^^^^^^^^^^^^^^^^^^^ missing `from_output`, `branch` in implementation
@@ -33,23 +15,6 @@ LL | impl const Try for TryMe {
    = help: implement the missing item: `fn from_output(_: <Self as Try>::Output) -> Self { todo!() }`
    = help: implement the missing item: `fn branch(self) -> ControlFlow<<Self as Try>::Residual, <Self as Try>::Output> { todo!() }`
 
-error[E0015]: `?` is not allowed on `TryMe` in constant functions
-  --> $DIR/ice-126148-failed-to-normalize.rs:20:5
-   |
-LL |     TryMe?;
-   |     ^^^^^^
-   |
-   = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
-
-error[E0015]: `?` is not allowed on `TryMe` in constant functions
-  --> $DIR/ice-126148-failed-to-normalize.rs:20:5
-   |
-LL |     TryMe?;
-   |     ^^^^^^
-   |
-   = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
-
-error: aborting due to 6 previous errors
+error: aborting due to 2 previous errors
 
-Some errors have detailed explanations: E0015, E0046.
-For more information about an error, try `rustc --explain E0015`.
+For more information about this error, try `rustc --explain E0046`.
diff --git a/tests/ui/traits/const-traits/trait-default-body-stability.rs b/tests/ui/traits/const-traits/trait-default-body-stability.rs
index 567f1b3c284..a8157d37ce3 100644
--- a/tests/ui/traits/const-traits/trait-default-body-stability.rs
+++ b/tests/ui/traits/const-traits/trait-default-body-stability.rs
@@ -1,4 +1,4 @@
-//@ known-bug: #110395
+//@ check-pass
 //@ compile-flags: -Znext-solver
 #![allow(incomplete_features)]
 #![feature(staged_api)]
diff --git a/tests/ui/traits/const-traits/trait-default-body-stability.stderr b/tests/ui/traits/const-traits/trait-default-body-stability.stderr
deleted file mode 100644
index b995d6f4f3d..00000000000
--- a/tests/ui/traits/const-traits/trait-default-body-stability.stderr
+++ /dev/null
@@ -1,37 +0,0 @@
-error: const `impl` for trait `Try` which is not `const`
-  --> $DIR/trait-default-body-stability.rs:19:12
-   |
-LL | impl const Try for T {
-   |            ^^^ this trait is not `const`
-   |
-   = note: marking a trait with `const` ensures all default method bodies are `const`
-   = note: adding a non-const method body in the future would be a breaking change
-
-error: const `impl` for trait `FromResidual` which is not `const`
-  --> $DIR/trait-default-body-stability.rs:34:12
-   |
-LL | impl const FromResidual for T {
-   |            ^^^^^^^^^^^^ this trait is not `const`
-   |
-   = note: marking a trait with `const` ensures all default method bodies are `const`
-   = note: adding a non-const method body in the future would be a breaking change
-
-error[E0015]: `?` is not allowed on `T` in constant functions
-  --> $DIR/trait-default-body-stability.rs:46:9
-   |
-LL |         T?
-   |         ^^
-   |
-   = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
-
-error[E0015]: `?` is not allowed on `T` in constant functions
-  --> $DIR/trait-default-body-stability.rs:46:9
-   |
-LL |         T?
-   |         ^^
-   |
-   = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
-
-error: aborting due to 4 previous errors
-
-For more information about this error, try `rustc --explain E0015`.