Rollup merge of #113755 - fmease:probe-adt-norm-lazy-ty-alias, r=oli-obk
Normalize lazy type aliases when probing for ADTs Fixes #113736. r? ```@oli-obk```
This commit is contained in:
commit
b42ada2b12
@ -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,
|
||||
|
17
tests/ui/type-alias/lazy-type-alias-enum-variant.rs
Normal file
17
tests/ui/type-alias/lazy-type-alias-enum-variant.rs
Normal 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 {};
|
||||
}
|
Loading…
Reference in New Issue
Block a user