mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 23:04:33 +00:00
Normalize lazy type aliases when probing for ADTs
This commit is contained in:
parent
ffb9b61294
commit
c856c74764
@ -302,7 +302,9 @@ impl<'a, 'tcx> AstConv<'tcx> for FnCtxt<'a, '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