1
Fork 0

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

@ -230,6 +230,14 @@ impl ItemLikeVisitor<'v> for OrphanChecker<'tcx> {
return;
}
}
if let ty::Opaque(def_id, _) = *trait_ref.self_ty().kind() {
self.tcx
.sess
.struct_span_err(sp, "cannot implement trait on type alias impl trait")
.span_note(self.tcx.def_span(def_id), "type alias impl trait defined here")
.emit();
}
}
}