diff options
| author | Ralf Jung <post@ralfj.de> | 2020-09-20 15:52:09 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-09-20 15:52:09 +0200 |
| commit | fc58224b79627351225ad52cb93a9cb8063c5a71 (patch) | |
| tree | 1150816e83243d42a4ffb27fb26bd25c5f085a4b /src | |
| parent | 0a4eb2c31d3862461d0620b863f0cae64f19c7f0 (diff) | |
| parent | 367efa86d5df6c4aacbd0f1b28c4008527722d4c (diff) | |
Rollup merge of #76940 - Aaron1011:fix/trait-on-tait, r=oli-obk
Don't allow implementing trait directly on type-alias-impl-trait This is specifically disallowed by the RFC, but we never added a check for it. Fixes #76202
Diffstat (limited to 'src')
| -rw-r--r-- | src/test/ui/type-alias-impl-trait/issue-76202-trait-impl-for-tait.rs | 23 | ||||
| -rw-r--r-- | src/test/ui/type-alias-impl-trait/issue-76202-trait-impl-for-tait.stderr | 14 |
2 files changed, 37 insertions, 0 deletions
diff --git a/src/test/ui/type-alias-impl-trait/issue-76202-trait-impl-for-tait.rs b/src/test/ui/type-alias-impl-trait/issue-76202-trait-impl-for-tait.rs new file mode 100644 index 00000000000..9ce19536e79 --- /dev/null +++ b/src/test/ui/type-alias-impl-trait/issue-76202-trait-impl-for-tait.rs @@ -0,0 +1,23 @@ +// Regression test for issue #76202 +// Tests that we don't ICE when we have a trait impl on a TAIT. + +#![feature(type_alias_impl_trait)] + +trait Dummy {} +impl Dummy for () {} + +type F = impl Dummy; +fn f() -> F {} + +trait Test { + fn test(self); +} + +impl Test for F { //~ ERROR cannot implement trait + fn test(self) {} +} + +fn main() { + let x: F = f(); + x.test(); +} diff --git a/src/test/ui/type-alias-impl-trait/issue-76202-trait-impl-for-tait.stderr b/src/test/ui/type-alias-impl-trait/issue-76202-trait-impl-for-tait.stderr new file mode 100644 index 00000000000..8689ee53660 --- /dev/null +++ b/src/test/ui/type-alias-impl-trait/issue-76202-trait-impl-for-tait.stderr @@ -0,0 +1,14 @@ +error: cannot implement trait on type alias impl trait + --> $DIR/issue-76202-trait-impl-for-tait.rs:16:1 + | +LL | impl Test for F { + | ^^^^^^^^^^^^^^^ + | +note: type alias impl trait defined here + --> $DIR/issue-76202-trait-impl-for-tait.rs:9:10 + | +LL | type F = impl Dummy; + | ^^^^^^^^^^ + +error: aborting due to previous error + |
