diff options
| author | Michael Goulet <michael@errs.io> | 2023-02-02 21:22:02 +0000 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2023-04-11 17:45:42 +0000 |
| commit | 7ec72efe10df28fcf5c6ec13c2a487572041be59 (patch) | |
| tree | 7f37906cf05513c69c824bb70873c88feeb09611 /tests | |
| parent | 4560b61cd15aa026a03a64c99ead1edf7896826f (diff) | |
| download | rust-7ec72efe10df28fcf5c6ec13c2a487572041be59.tar.gz rust-7ec72efe10df28fcf5c6ec13c2a487572041be59.zip | |
Allow the elaborator to only filter to real supertraits
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/ui/traits/alias/dont-elaborate-non-self.stderr | 20 | ||||
| -rw-r--r-- | tests/ui/traits/trait-upcasting/alias-where-clause-isnt-supertrait.stderr | 14 |
2 files changed, 34 insertions, 0 deletions
diff --git a/tests/ui/traits/alias/dont-elaborate-non-self.stderr b/tests/ui/traits/alias/dont-elaborate-non-self.stderr new file mode 100644 index 00000000000..247a4f81280 --- /dev/null +++ b/tests/ui/traits/alias/dont-elaborate-non-self.stderr @@ -0,0 +1,20 @@ +error[E0277]: the size for values of type `(dyn Fn() -> Fut + 'static)` cannot be known at compilation time + --> $DIR/dont-elaborate-non-self.rs:7:11 + | +LL | fn f<Fut>(a: dyn F<Fut>) {} + | ^ doesn't have a size known at compile-time + | + = help: the trait `Sized` is not implemented for `(dyn Fn() -> Fut + 'static)` + = help: unsized fn params are gated as an unstable feature +help: you can use `impl Trait` as the argument type + | +LL | fn f<Fut>(a: impl F<Fut>) {} + | ~~~~ +help: function arguments must have a statically known size, borrowed types always have a known size + | +LL | fn f<Fut>(a: &dyn F<Fut>) {} + | + + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0277`. diff --git a/tests/ui/traits/trait-upcasting/alias-where-clause-isnt-supertrait.stderr b/tests/ui/traits/trait-upcasting/alias-where-clause-isnt-supertrait.stderr new file mode 100644 index 00000000000..5574a032089 --- /dev/null +++ b/tests/ui/traits/trait-upcasting/alias-where-clause-isnt-supertrait.stderr @@ -0,0 +1,14 @@ +error[E0308]: mismatched types + --> $DIR/alias-where-clause-isnt-supertrait.rs:27:5 + | +LL | fn test(x: &dyn C) -> &dyn B { + | ------ expected `&dyn B` because of return type +LL | x + | ^ expected trait `B`, found trait `C` + | + = note: expected reference `&dyn B` + found reference `&dyn C` + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0308`. |
