Normalize lazy type aliases when probing for ADTs

This commit is contained in:
León Orell Valerian Liehr 2023-07-16 12:38:43 +02:00
parent ffb9b61294
commit c856c74764
No known key found for this signature in database
GPG key ID: D17A07215F68E713
2 changed files with 20 additions and 1 deletions

View file

@ -302,7 +302,9 @@ fn probe_adt(&self, span: Span, ty: Ty<'tcx>) -> Option<ty::AdtDef<'tcx>> {
match ty.kind() {
ty::Adt(adt_def, _) => Some(*adt_def),
// FIXME(#104767): Should we handle bound regions here?
ty::Alias(ty::Projection | ty::Inherent, _) if !ty.has_escaping_bound_vars() => {
ty::Alias(ty::Projection | ty::Inherent | ty::Weak, _)
if !ty.has_escaping_bound_vars() =>
{
self.normalize(span, ty).ty_adt_def()
}
_ => None,

View file

@ -0,0 +1,17 @@
// Regression test for issue #113736.
// check-pass
#![feature(lazy_type_alias)]
enum Enum {
Unit,
Tuple(),
Struct {},
}
fn main() {
type Alias = Enum;
let _ = Alias::Unit;
let _ = Alias::Tuple();
let _ = Alias::Struct {};
}