Skip to content

Internal Tracking Issue for normalization redesign #155345

Description

@lcnr

This is a tracking issue to migrate the way we handle alias types (associated types, opaque types, etc) in the type system, and especially the next-generation trait solver -Znext-solver. This is a large change and requires a lot of churn, because of this, it will land in multiple steps.

This refactor includes the addition of a wrapper struct Unnormalized to explicitly track whether a type needs should be eagerly normalized. It also adds a IsRigid flag to TyKind::Alias, marking whether an alias is known to be rigid in the current context.

This is in progress and we've somewhat adjusted this design as we've tried to implement it. For a terse and likely slightly outdated description, see https://hackmd.io/d4spupEOTySQmkz1gaPk1g.

Please contact @lcnr on the #t-types zulip stream in case there are questions or issues. While we're changing this, please do not hesitate to reach out in case the current state is unclear or confusing. If you want to help out, see the links to messages in the #t-types/trait-system-refactor zulip.

Steps

Rigid aliases

ty::Unnormalized cleanup

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-technical-debtArea: Internal cleanup workC-cleanupCategory: PRs that clean code up or issues documenting cleanup.C-enhancementCategory: An issue proposing an enhancement or a PR with one.C-tracking-issueCategory: An issue tracking the progress of sth. like the implementation of an RFCT-typesRelevant to the types team, which will review and decide on the PR/issue.WG-trait-system-refactorThe Rustc Trait System Refactor Initiative (-Znext-solver)

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions