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
This commit is contained in:
Aaron Hill 2020-09-19 16:25:50 -04:00
parent 59fb88d061
commit 367efa86d5
No known key found for this signature in database
GPG key ID: B4087E510E98B164
3 changed files with 45 additions and 0 deletions

View file

@ -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();
}

View file

@ -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