Skip to content

using impl candidates shadowed by where-bound overflows by using impl with only super trait bounds #76

@lcnr

Description

@lcnr

https://rust.godbolt.org/z/8fzsP4MbE

trait Super { type SuperAssoc; } trait Trait: Super<SuperAssoc = Self::TraitAssoc> { type TraitAssoc; } impl<T, U> Trait for T where T: Super<SuperAssoc = U>, { type TraitAssoc = U; } fn overflow<T: Trait>() { let x: <T as Trait>::TraitAssoc; }

normalizing <T as Trait>::TraitAssoc in the elaborated environment [T: Trait, T: Super, <T as Super>::SuperAssoc = <T as Trait>::TraitAssoc] has a single impl candidate, which uses the environment to normalize <T as Trait>::TraitAssoc to itself :3

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions