Skip to content

ICE with lifetime-generic type alias impl trait #70121

Closed
@jonas-schievink

Description

@jonas-schievink
#![feature(type_alias_impl_trait)]

pub type Successors<'a> = impl Iterator<Item = &'a ()>;

pub fn f<'a>() -> Successors<'a> {
    None.into_iter()
}

trait Tr {
    type Item;
}

impl<'a> Tr for &'a () {
    type Item = Successors<'a>;
}

fn ohno<'a>() -> <&'a () as Tr>::Item {
    None.into_iter()
}

gives:

error: internal compiler error: free_scope: DefId(0:3 ~ playground[ad24]::Successors[0]) not recognized by the region scope tree for None / Some(DefId(0:13 ~ playground[ad24]::ohno[0]))

My guess is that this has the same underlying cause as #56445, but this one doesn't involve associated consts or arrays at all, so it might be different still.

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-associated-itemsArea: Associated items (types, constants & functions)A-lifetimesArea: Lifetimes / regionsA-trait-systemArea: Trait systemC-bugCategory: This is a bug.E-needs-testCall for participation: An issue has been fixed and does not reproduce, but no test has been added.F-type_alias_impl_trait`#[feature(type_alias_impl_trait)]`I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️P-mediumMedium priorityT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.glacierICE tracked in rust-lang/glacier.requires-nightlyThis issue requires a nightly compiler in some way.

    Type

    No type

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions