diff options
| author | Michael Goulet <michael@errs.io> | 2025-08-19 19:40:18 +0000 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2025-08-20 15:41:42 +0000 |
| commit | e57e5f02b8fa3272d1ec4f75a0ab66dfed9b9b9b (patch) | |
| tree | 26dc38d3b3d82424391cb17e67c48572b05454c2 /tests/ui/traits | |
| parent | 239e8b1b47b34120287ec36b33228c1e177f0c38 (diff) | |
| download | rust-e57e5f02b8fa3272d1ec4f75a0ab66dfed9b9b9b.tar.gz rust-e57e5f02b8fa3272d1ec4f75a0ab66dfed9b9b9b.zip | |
Unconditionally-const supertraits are considered not dyn compatible
Diffstat (limited to 'tests/ui/traits')
| -rw-r--r-- | tests/ui/traits/const-traits/const-supertraits-dyn-compat.rs | 18 | ||||
| -rw-r--r-- | tests/ui/traits/const-traits/const-supertraits-dyn-compat.stderr | 18 |
2 files changed, 36 insertions, 0 deletions
diff --git a/tests/ui/traits/const-traits/const-supertraits-dyn-compat.rs b/tests/ui/traits/const-traits/const-supertraits-dyn-compat.rs new file mode 100644 index 00000000000..2d12bc81af6 --- /dev/null +++ b/tests/ui/traits/const-traits/const-supertraits-dyn-compat.rs @@ -0,0 +1,18 @@ +#![feature(const_trait_impl)] + +const trait Super {} + +// Not ok +const trait Unconditionally: const Super {} +fn test() { + let _: &dyn Unconditionally; + //~^ ERROR the trait `Unconditionally` is not dyn compatible +} + +// Okay +const trait Conditionally: [const] Super {} +fn test2() { + let _: &dyn Conditionally; +} + +fn main() {} diff --git a/tests/ui/traits/const-traits/const-supertraits-dyn-compat.stderr b/tests/ui/traits/const-traits/const-supertraits-dyn-compat.stderr new file mode 100644 index 00000000000..ceb07081c9e --- /dev/null +++ b/tests/ui/traits/const-traits/const-supertraits-dyn-compat.stderr @@ -0,0 +1,18 @@ +error[E0038]: the trait `Unconditionally` is not dyn compatible + --> $DIR/const-supertraits-dyn-compat.rs:8:17 + | +LL | let _: &dyn Unconditionally; + | ^^^^^^^^^^^^^^^ `Unconditionally` is not dyn compatible + | +note: for a trait to be dyn compatible it needs to allow building a vtable + for more information, visit <https://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility> + --> $DIR/const-supertraits-dyn-compat.rs:6:30 + | +LL | const trait Unconditionally: const Super {} + | --------------- ^^^^^^^^^^^ ...because it cannot have a `const` supertrait + | | + | this trait is not dyn compatible... + +error: aborting due to 1 previous error + +For more information about this error, try `rustc --explain E0038`. |
