Skip to content

Update toolchain to nightly-2026-03-08 - #94

Draft
coord-e wants to merge 2 commits into
mainfrom
claude/update-nightly-incremental-9hwgj
Draft

Update toolchain to nightly-2026-03-08#94
coord-e wants to merge 2 commits into
mainfrom
claude/update-nightly-incremental-9hwgj

Conversation

@coord-e

@coord-e coord-e commented May 24, 2026

Copy link
Copy Markdown
Owner

Adapts thrust to breaking MIR and API changes introduced between
nightly-2025-09-08 and nightly-2026-03-08:

  • rust-toolchain.toml: bump channel to nightly-2026-03-08

  • src/main.rs: update for new rustc query/provider API shape
    (mir_borrowck, StripTokens, AllowConstBlockItems, ExitCode return)

  • src/analyze.rs: fix mir_borrowck_skip_formula_fn signature for new
    ErrorGuaranteed / FxIndexMap types

  • src/analyze/basic_block.rs: handle ReifyFnPointer(_) wildcard and
    new Operand::RuntimeChecks variant

  • src/analyze/local_def.rs: handle two new MIR elaboration patterns
    that replace CopyForDeref in 2026-03-08:

    1. Two-stage box deref: _nonnull = copy box.Field(Unique).Field(NonNull)
      followed by _ptr = Transmute(_nonnull) — fixes list_length_const etc.
    2. Closure &mut T capture: _alias = copy (*closure).field with &mut T
      type — fixes closure_mut / closure_mut_0 false negatives
  • src/analyze/basic_block/drop_point.rs: count a copy operand whose type is
    not Copy as an ownership transfer. Runtime MIR passes a closure holding a
    &mut capture as apply::<C>(copy _2) where it used to pass move _2, so
    the closure local stayed live and was dropped at the call site, resolving the
    capture's prophecy against the caller's pre-call value while the call's own
    effect claimed the mutated one. The contradictory environment made every
    subsequent assertion provable — fixes closure_param_weaken_3 and
    closure_mut_capture_pre_post false negatives

  • src/refine/env.rs: fix large_enum_variant (box PlaceType), path_type
    deref, and locate_place loop style for new clippy lints

  • tests/ui/fail/{just_rec,split,fn_poly_param_order,adt_discr,
    extern_spec_take,annot_formula_fn,annot_preds_trait,
    annot_preds_trait_multi,iterators/range}.rs: add //@no-rustfix to
    suppress ui_test rustfix checks that now correctly detect Unsat

https://claude.ai/code/session_01URrtbSTUKNrVKLK2MNLBFc

@coord-e
coord-e marked this pull request as draft May 24, 2026 14:22
@coord-e
coord-e force-pushed the claude/update-nightly-incremental-9hwgj branch from eddc4c2 to abfa2ce Compare August 15, 2026 02:54
claude added 2 commits August 15, 2026 03:10
Adapts thrust to breaking MIR and API changes introduced between
nightly-2025-09-08 and nightly-2026-03-08:

- rust-toolchain.toml: bump channel to nightly-2026-03-08

- src/main.rs: update for new rustc query/provider API shape
  (mir_borrowck, StripTokens, AllowConstBlockItems, ExitCode return)

- src/analyze.rs: fix mir_borrowck_skip_formula_fn signature for new
  ErrorGuaranteed / FxIndexMap types

- src/analyze/basic_block.rs: handle ReifyFnPointer(_) wildcard and
  new Operand::RuntimeChecks variant

- src/analyze/local_def.rs: handle two new MIR elaboration patterns
  that replace CopyForDeref in 2026-03-08:
    1. Two-stage box deref: `_nonnull = copy box.Field(Unique).Field(NonNull)`
       followed by `_ptr = Transmute(_nonnull)` — fixes list_length_const etc.
    2. Closure &mut T capture: `_alias = copy (*closure).field` with &mut T
       type — fixes closure_mut / closure_mut_0 false negatives

- src/refine/env.rs: fix large_enum_variant (box PlaceType), path_type
  deref, and locate_place loop style for new clippy lints

- tests/ui/fail/{just_rec,split,fn_poly_param_order,fn_poly_annot_singleton,
  adt_discr,extern_spec_take,annot_formula_fn,annot_preds_trait,
  annot_preds_trait_multi,loop_invariant_trait_self,trait_assoc_type_spec,
  iterators/range,iterators/annot_range_next,iterators/annot_range_loop}.rs:
  add //@no-rustfix to suppress ui_test rustfix checks that now correctly
  detect Unsat

https://claude.ai/code/session_01URrtbSTUKNrVKLK2MNLBFc
Runtime MIR reads a local that is dead afterwards with `copy` even when its
type cannot be duplicated: passing a closure that holds a `&mut` capture to a
generic function now yields `apply::<C>(copy _2)` where it used to yield
`move _2`. Only `move` counted as a transfer, so the closure local stayed
live and was dropped at the call site, resolving the capture's prophecy
against the caller's pre-call value while the call's own effect claimed the
mutated one. The contradictory environment made every subsequent assertion
provable, turning closure_param_weaken_3 and closure_mut_capture_pre_post
into false negatives.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016qzTb7avxNn6UmoqQDoC5U
@coord-e
coord-e force-pushed the claude/update-nightly-incremental-9hwgj branch from abfa2ce to 082f381 Compare August 15, 2026 03:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants