Skip to content

Refactor AliasTy. AliasTerm & UnevaluatedConst to use Alias#156538

Merged
rust-bors[bot] merged 2 commits into
rust-lang:mainfrom
Jamesbarford:chore/merge-AliasTy-AliasTerm
Jun 16, 2026
Merged

Refactor AliasTy. AliasTerm & UnevaluatedConst to use Alias#156538
rust-bors[bot] merged 2 commits into
rust-lang:mainfrom
Jamesbarford:chore/merge-AliasTy-AliasTerm

Conversation

@Jamesbarford

@Jamesbarford Jamesbarford commented May 13, 2026

Copy link
Copy Markdown
Contributor

View all comments

Refactors AliasTy, AliasTerm & UnevaluatedConst to use Alias.

Part of #156181

r? @lcnr

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver) labels May 13, 2026
@rust-log-analyzer

This comment has been minimized.

@rust-log-analyzer

This comment has been minimized.

@Jamesbarford Jamesbarford force-pushed the chore/merge-AliasTy-AliasTerm branch from a630681 to 89cd50d Compare May 13, 2026 12:56
@lcnr

lcnr commented May 13, 2026

Copy link
Copy Markdown
Contributor

can you say more about the errors you had to work around? this feels odd to me and something we should fix in the derives instead of requiring manual impls here imo

Comment thread compiler/rustc_type_ir/src/ty_kind.rs Outdated
)]
pub struct AliasTy<I: Interner> {
/// The parameters of the associated or opaque type.
pub struct Alias<I: Interner, K> {

@lcnr lcnr May 13, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can you move Alias and AliasTerm in a separate rustc_type_ir/ty/alias module?

View changes since the review

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

667b095 👍, Only moved Alias & AliasTerm, not AliasTy

Comment thread compiler/rustc_type_ir/src/predicate.rs Outdated
@Jamesbarford

Jamesbarford commented May 13, 2026

Copy link
Copy Markdown
Contributor Author

Edit: I've been experimenting and think I've expanded Lift_Generic to be able to handle more use cases so I've collapsed my original message as it is a wall of text. But does contextualise what Lift_Generic can now do for us.

Original Message

I've whittled it down to only a manual Lift implementation for Alias as below.

(comments omitted for brevity)

#[derive_where(Clone, Copy, Hash, PartialEq, Debug; I: Interner, K)]
#[derive(TypeVisitable_Generic, GenericTypeVisitable, TypeFoldable_Generic, Lift_Generic)]
#[cfg_attr(
    feature = "nightly",
    derive(Decodable_NoContext, Encodable_NoContext, StableHash_NoContext)
)]
pub struct Alias<I: Interner, K> {
    pub args: I::GenericArgs,

    pub kind: K,

    #[derive_where(skip(Debug))]
    #[type_visitable(ignore)]
    #[type_foldable(identity)]
    pub(crate) _use_alias_new_instead: (),
}

I get 2000+ errors of which fall into the following;

error[E0308]: mismatched types
error[E0521]: borrowed data escapes outside of associated function
error[E0521]: borrowed data escapes outside of function
error[E0521]: borrowed data escapes outside of method

A sample of errors being;

error[E0521]: borrowed data escapes outside of method
   --> compiler/rustc_middle/src/ty/trait_def.rs:229:13
    |
181 | impl<'tcx> TyCtxt<'tcx> {
    |      ---- lifetime `'tcx` defined here
...
223 |         self,
    |         ---- `self` is a reference that is only valid in the method body
...
229 |             fast_reject::simplify_type(self, self_ty, TreatParams::InstantiateWithInfer)
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |             |
    |             `self` escapes the method body here
    |             argument requires that `'tcx` must outlive `'static`
    |
    = note: requirement occurs because of the type `context::TyCtxt<'_>`, which makes the generic argument `'_` invariant
    = note: the struct `context::TyCtxt<'tcx>` is invariant over the parameter `'tcx`
    = help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
note: due to a current limitation of the type system, this implies a `'static` lifetime
   --> compiler/rustc_middle/src/ty/print/mod.rs:416:15
    |
416 |     T: Copy + for<'a, 'tcx> Lift<TyCtxt<'tcx>, Lifted: Print<FmtPrinter<'a, 'tcx>>>,
    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

...

error[E0308]: mismatched types
   --> compiler/rustc_middle/src/ty/trait_def.rs:229:13
    |
229 |             fast_reject::simplify_type(self, self_ty, TreatParams::InstantiateWithInfer)
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ one type is more general than the other
    |
    = note: expected enum `rustc_type_ir::AliasTyKind<context::TyCtxt<'tcx>>`
               found enum `rustc_type_ir::AliasTyKind<context::TyCtxt<'_>>`
note: the lifetime requirement is introduced here
   --> compiler/rustc_type_ir/src/interner.rs:25:7
    |
 25 |     + IrPrint<ty::AliasTy<Self>>
    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^

error: implementation of `Interner` is not general enough
   --> compiler/rustc_middle/src/ty/trait_def.rs:229:13
    |
229 |             fast_reject::simplify_type(self, self_ty, TreatParams::InstantiateWithInfer)
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ implementation of `Interner` is not general enough
    |
    = note: `Interner` would have to be implemented for the type `context::TyCtxt<'tcx>`
    = note: ...but `Interner` is actually implemented for the type `context::TyCtxt<'0>`, for some specific lifetime `'0`


...pub struct Placeholder

error[E0308]: mismatched types
   --> compiler/rustc_middle/src/ty/trait_def.rs:229:13
    |
229 |             fast_reject::simplify_type(self, self_ty, TreatParams::InstantiateWithInfer)
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ one type is more general than the other
    |
    = note: expected enum `rustc_type_ir::AliasTermKind<context::TyCtxt<'tcx>>`
               found enum `rustc_type_ir::AliasTermKind<context::TyCtxt<'_>>`
note: the lifetime requirement is introduced here
   --> compiler/rustc_type_ir/src/interner.rs:33:7
    |
 33 |     + IrPrint<ty::NormalizesTo<Self>>
    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

...

error[E0308]: mismatched types
   --> compiler/rustc_middle/src/ty/relate.rs:55:12
    |
 55 | impl<'tcx> Relate<TyCtxt<'tcx>> for &'tcx ty::List<ty::PolyExistentialPredicate<'tcx>> {
    |            ^^^^^^^^^^^^^^^^^^^^ lifetime mismatch
    |
    = note: expected enum `rustc_type_ir::AliasTermKind<context::TyCtxt<'tcx>>`
               found enum `rustc_type_ir::AliasTermKind<context::TyCtxt<'tcx>>`
note: the required lifetime does not necessarily outlive the lifetime `'tcx` as defined here
   --> compiler/rustc_middle/src/ty/relate.rs:55:6
    |
 55 | impl<'tcx> Relate<TyCtxt<'tcx>> for &'tcx ty::List<ty::PolyExistentialPredicate<'tcx>> {
    |      ^^^^
note: the lifetime requirement is introduced here
   --> compiler/rustc_type_ir/src/relate.rs:116:21
    |
116 | pub trait Relate<I: Interner>: TypeFoldable<I> + PartialEq + Copy {
    |                     ^^^^^^^^

And so on... This was similar to pub struct Placeholder<I: Interner, T> where I think the the generic parameter T required manually implementing Lift. Though this is a superficial understanding

@rust-log-analyzer

This comment has been minimized.

@rust-log-analyzer

This comment has been minimized.

@Jamesbarford Jamesbarford force-pushed the chore/merge-AliasTy-AliasTerm branch from 667b095 to b7965ca Compare May 21, 2026 08:30
@rustbot

This comment has been minimized.

@Jamesbarford

Jamesbarford commented May 21, 2026

Copy link
Copy Markdown
Contributor Author

The latest commits expand Lift_Generic to be able to handle:

pub struct Binder<I: Interner, T> {
    //
}

and then

pub struct Binder<I: Interner, T = SomeKind<I>> {
    //
}

e83546d, fbf009a Not sure if these would be best in a separate PR that also clean up binder.rs then this PR can be solely focused on Alias refactoring?

Which I then used to clean up pub struct Binder {} which is out of scope for these changes but was satisfying to remove a FIXME: e2ba945

I can't get Eq to work for Alias, error bellow;

Eq Error
error[E0277]: the trait bound `AliasTyKind<rustc_middle::ty::TyCtxt<'tcx>>: std::cmp::Eq` is not satisfied
   --> compiler/rustc_infer/src/infer/region_constraints/mod.rs:191:11
    |
187 | #[derive(Copy, Clone, PartialEq, Eq, Hash, TypeFoldable, TypeVisitable)]
    |                                  -- in this derive macro expansion
...
191 |     Alias(ty::AliasTy<'tcx>),
    |           ^^^^^^^^^^^^^^^^^ the trait `std::cmp::Eq` is not implemented for `AliasTyKind<rustc_middle::ty::TyCtxt<'tcx>>`
    |
   --> /rustc/ef0fb8a2563200e322fa4419f09f65a63742038c/library/core/src/cmp.rs:364:0
    |
    = note: in this expansion of `#[derive(Eq)]`
help: the trait `std::cmp::Eq` is implemented for `rustc_type_ir::Alias<I, K>`
   --> compiler/rustc_type_ir/src/ty/alias.rs:15:1

edit: Actually we can remove the empty implementation if we make AliasTyKind derive Eq

@rust-bors

This comment has been minimized.

JonathanBrouwer added a commit to JonathanBrouwer/rust that referenced this pull request Jun 4, 2026
…ric-capabilities, r=lcnr

Support generic params in `Lift_Generic`

Handle generic type parameters, including nested occurrences, when deriving `Lift_Generic`.

This lets types like `Binder<I, T>` use `#[derive(Lift_Generic)]` instead of requiring a manual `Lift` impl.

Concretely it can now handle structs as follows;

```rs
// Generic type parameter
struct Binder<I: Interner, T> {
    // body
}

// Nested generic type parameter
pub struct Binder<I: Interner, T = SomeKind<I>> {
    //
}
```

Split off from the `Alias` refactor work; rust-lang#156538

r? @lcnr
rust-timer added a commit that referenced this pull request Jun 4, 2026
Rollup merge of #156956 - Jamesbarford:feat/extend-lift-generic-capabilities, r=lcnr

Support generic params in `Lift_Generic`

Handle generic type parameters, including nested occurrences, when deriving `Lift_Generic`.

This lets types like `Binder<I, T>` use `#[derive(Lift_Generic)]` instead of requiring a manual `Lift` impl.

Concretely it can now handle structs as follows;

```rs
// Generic type parameter
struct Binder<I: Interner, T> {
    // body
}

// Nested generic type parameter
pub struct Binder<I: Interner, T = SomeKind<I>> {
    //
}
```

Split off from the `Alias` refactor work; #156538

r? @lcnr
@Jamesbarford Jamesbarford force-pushed the chore/merge-AliasTy-AliasTerm branch from e2ba945 to c3bdf72 Compare June 5, 2026 08:16
@rustbot

This comment has been minimized.

@Jamesbarford Jamesbarford force-pushed the chore/merge-AliasTy-AliasTerm branch from 71c7efb to bf409af Compare June 5, 2026 08:42
Comment thread compiler/rustc_type_ir/src/ty/alias.rs Outdated
Comment thread compiler/rustc_type_ir/src/ty/alias.rs Outdated
interner.debug_assert_args_compatible(kind.into(), args);
Alias { kind, args, _use_alias_new_instead: () }
}
}

@lcnr lcnr Jun 8, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hmm, could we change this to

trait AliasKind<I: Interner>: Copy {
    fn assert_args_compatible(self, cx: I, args: I::GenericArgs);

    #[inline]
    fn debug_assert_args_compatible(self, cx: I, args: I::GenericArgs) {
        if cfg!(debug_assertions) { self.assert... }
    }
}

impl<I: Interner, K: AliasKind> Alias<I, K> {
    pub fn new(
        cx: I,
        kind: K,
        args: I::GenericArgs,
    ) -> Self {
        kind.debug_assert_args_compatible(interner, args);
        Alias { kind, args, _use_alias_new_instead: () }
    }

    pub fn new_from_iter(
        cx: I,
        kind: K,
        args: impl IntoIterator<...>,
    ) -> Self { ... }
}

View changes since the review

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Following from @khyperia's comment I've reverted the change to the fn normalize_anon_const(...) which has led to this change I made being redundant

@khyperia khyperia Jun 15, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(this is more of a comment to @lcnr for future work than feedback for this PR) - I do like the concept of a trait AliasKind. Here's some thoughts for a sketch for a future refactor:

enum InherentAliasTermKind { // or InherentTermKind? idk
    Ty { def_id },
    Const { def_id },
}
trait AliasKindWithDefId {
    fn def_id(self) -> DefId;
}
impl AliasKindWithDefId for InherentAliasTermKind { ... }
// N.B: NO AliasKindWithDefId impl for AliasTermKind
impl<T: AliasKindWithDefId> AliasKindWithDefId for Alias<T> { // optional (for convenience)
    fn def_id(self) -> DefId { self.kind.def_id() }
} 

impl Alias<AliasTermKind> {
    fn expect_ct(self) -> Alias<AliasConstKind> { .. can panic .. } // already exists today (the rest are new)
    fn expect_inherent(self) -> Alias<InherentAliasTermKind> { .. can panic .. }
    fn expect_anon_ct(self) -> Alias<I::UnevaluatedConstId> { .. can panic .. }
}

impl From<InherentAliasTermKind> for AliasTermKind { ... }
impl From<Alias<InherentAliasTermKind>> for Alias<AliasTermKind> { ... }
// (or a blanket impl for anything whose kind is From)

// delete fn expect_inherent_def_id(), replace with alias.expect_inherent().def_id()

I should probably just make an issue for this...

Comment thread compiler/rustc_type_ir/src/predicate.rs Outdated
goal.predicate.alias.args,
);
let alias = ty::AliasTerm::from(uv);
let goal = goal.with(cx, ty::NormalizesTo { alias, term: goal.predicate.term });

@khyperia khyperia Jun 10, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm extremely on board with the style of thing that lcnr said with

with this we can now update NormalizesTo to also be generic over the kind, and e.g. for normalize_anon_const have the argument be Goal<I, ty::NormalizesTo<I, I::UnevaluatedConstId>>

there's a lot of places in the code that could hugely benefit from this (e.g. there's a large number of unwraps in #157653 that could be avoided), but this particular case with normalize_anon_const is a bit gross, and I would prefer keeping this as NormalizesTo<I, K = AliasTermKind<I>> (at least until additional refactorings happen that would e.g. allow evaluate_const_and_instantiate_normalizes_to_term to be more generic)

(this is just my code style opinion though, up to you!)


edit: just want to clarify, that PR has a lot of unwraps of the form:

let def_id = match inherent.kind {
    ty::AliasTermKind::InherentTy { def_id } => def_id.into(),
    ty::AliasTermKind::InherentConst { def_id } => def_id.into(),
    kind => panic!("expected inherent alias, found {kind:?}"),
};

having the Alias have a more specific Kind in all the cases that PR does that style of unwrap (it's so common that projections already have a helper method for it, expect_projection_def_id) would be super nice, but yeah

JonathanBrouwer added a commit to JonathanBrouwer/rust that referenced this pull request Jun 11, 2026
…able-generic, r=lcnr

Extend capabilities of `TypeFoldable_Generic`

Split from rust-lang#156538.

- Lets `TypeFoldable_Generic` derive structural folding for types with extra generic parameters by adding the necessary `T: TypeFoldable<I>` bounds automatically
- Means in rust-lang#156538 we can remove the manual `TypeFoldable` implementation for `NormalizesTo`
- Refactors shared traversal logic between `Lift_Generic` and `TypeFoldable_Generic` into a shared helper with a callback.

r? @lcnr
@rust-bors

This comment has been minimized.

@lcnr lcnr left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

one nit, then r=me

View changes since this review

@lcnr lcnr left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

r=me on unevaluated const changes, so only CI + maybe a derie for the manual lift impl

View changes since this review

@lcnr

lcnr commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

@bors delegate+

@rust-bors

rust-bors Bot commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

✌️ @Jamesbarford, you can now approve this pull request!

If @lcnr told you to "r=me" after making some further change, then please make that change and post @bors r=lcnr.

View changes since this delegation.

impl<I: Interner> fmt::Debug for NormalizesTo<I> {
impl<I: Interner, K> fmt::Debug for NormalizesTo<I, K>
where
Alias<I, K>: fmt::Debug,

@lcnr lcnr Jun 15, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Alias<I, K>: fmt::Debug,
K: fmt::Debug,

this does not work? 🤔

does Alias implement Debug in a weird way?

View changes since the review

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nope 😞. TypeVisitable_Generic creates Alias<I, K>: TypeVisitable<I> and;

pub trait TypeVisitable<I: Interner>: fmt::Debug {
    // ...
}

So can prove Alias<I, K>: fmt::Debug but not K: Debug

Error;

error[E0277]: `K` doesn't implement `Debug`
   --> compiler/rustc_type_ir/src/predicate.rs:957:12
    |
957 | pub struct NormalizesTo<I: Interner, K = AliasTermKind<I>> {
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Debug` is not implemented for `K`
    |
note: required for `predicate::NormalizesTo<I, K>` to implement `Debug`
   --> compiler/rustc_type_ir/src/predicate.rs:976:22
    |
976 | impl<I: Interner, K> fmt::Debug for NormalizesTo<I, K>
    |                      ^^^^^^^^^^     ^^^^^^^^^^^^^^^^^^
977 | where
978 |     K: fmt::Debug,
    |        ---------- unsatisfied trait bound introduced here
note: required by a bound in `visit::TypeVisitable`
   --> compiler/rustc_type_ir/src/visit.rs:62:39
    |
 62 | pub trait TypeVisitable<I: Interner>: fmt::Debug {
    |                                       ^^^^^^^^^^ required by this bound in `TypeVisitable`

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

annoying 😭 alright, r=me if CI passes

@rust-log-analyzer

This comment has been minimized.

@rust-log-analyzer

This comment has been minimized.

@rust-log-analyzer

This comment has been minimized.

@Jamesbarford Jamesbarford force-pushed the chore/merge-AliasTy-AliasTerm branch from bf1ae1c to 30e608d Compare June 16, 2026 09:12
@Jamesbarford Jamesbarford changed the title Refactor AliasTy & AliasTerm to use Alias Refactor AliasTy. AliasTerm & UnevaluatedConst to use Alias Jun 16, 2026
@Jamesbarford

Copy link
Copy Markdown
Contributor Author

@bors r=lcnr

@rust-bors

rust-bors Bot commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

📌 Commit 30e608d has been approved by lcnr

It is now in the queue for this repository.

@rust-bors rust-bors Bot added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jun 16, 2026
JonathanBrouwer added a commit to JonathanBrouwer/rust that referenced this pull request Jun 16, 2026
…liasTerm, r=lcnr

Refactor `AliasTy`. `AliasTerm` & `UnevaluatedConst` to use `Alias`

Refactors `AliasTy`, `AliasTerm` & `UnevaluatedConst` to use `Alias`.

Part of rust-lang#156181

r? @lcnr
JonathanBrouwer added a commit to JonathanBrouwer/rust that referenced this pull request Jun 16, 2026
…liasTerm, r=lcnr

Refactor `AliasTy`. `AliasTerm` & `UnevaluatedConst` to use `Alias`

Refactors `AliasTy`, `AliasTerm` & `UnevaluatedConst` to use `Alias`.

Part of rust-lang#156181

r? @lcnr
rust-bors Bot pushed a commit that referenced this pull request Jun 16, 2026
…uwer

Rollup of 10 pull requests

Successful merges:

 - #155535 (export symbols: support macos/windows(32/64))
 - #156538 (Refactor `AliasTy`. `AliasTerm` & `UnevaluatedConst` to use `Alias`)
 - #156807 (Add `T: PartialEq` bounds to derived `StructuralPartialEq` impls.)
 - #156950 (Staticlib rename internal symbols)
 - #157702 (Add expansion info to implied bounds)
 - #155616 (constify `TryFrom<Vec>` for array)
 - #156226 (diagnostics: point to coroutine body on higher-ranked auto trait errors)
 - #157873 (mips: set llvm_args -mno-check-zero-division for all mips targets)
 - #157953 (fix(rustc_codegen_ssa): Use cg_operand for Freeze check)
 - #157958 (doc: Document `-Zlint-rust-version`)
JonathanBrouwer added a commit to JonathanBrouwer/rust that referenced this pull request Jun 16, 2026
…liasTerm, r=lcnr

Refactor `AliasTy`. `AliasTerm` & `UnevaluatedConst` to use `Alias`

Refactors `AliasTy`, `AliasTerm` & `UnevaluatedConst` to use `Alias`.

Part of rust-lang#156181

r? @lcnr
rust-bors Bot pushed a commit that referenced this pull request Jun 16, 2026
…uwer

Rollup of 13 pull requests

Successful merges:

 - #156538 (Refactor `AliasTy`. `AliasTerm` & `UnevaluatedConst` to use `Alias`)
 - #156807 (Add `T: PartialEq` bounds to derived `StructuralPartialEq` impls.)
 - #156950 (Staticlib rename internal symbols)
 - #156983 (Add `io::Read::read_le` and `io::Read::read_be`)
 - #157306 (tests: codegen-llvm: Expect the new mangling scheme in bpf-abi-indirect-return)
 - #157702 (Add expansion info to implied bounds)
 - #155616 (constify `TryFrom<Vec>` for array)
 - #156226 (diagnostics: point to coroutine body on higher-ranked auto trait errors)
 - #157870 (std: sys: solid: clamp connect_timeout tv_sec instead of truncating)
 - #157952 (Configure Renovate for GitHub Actions)
 - #157953 (fix(rustc_codegen_ssa): Use cg_operand for Freeze check)
 - #157958 (doc: Document `-Zlint-rust-version`)
 - #157974 (Rename `errors.rs` file to `diagnostics.rs` (11/N))
@rust-bors rust-bors Bot merged commit 2f47e57 into rust-lang:main Jun 16, 2026
13 checks passed
@rustbot rustbot added this to the 1.98.0 milestone Jun 16, 2026
@Jamesbarford Jamesbarford deleted the chore/merge-AliasTy-AliasTerm branch June 17, 2026 06:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants