Skip to content

Fix ICE in label_fn_like for splatted args and add UI tests#157434

Draft
Ajay-singh1 wants to merge 13 commits into
rust-lang:mainfrom
Ajay-singh1:pr-153697
Draft

Fix ICE in label_fn_like for splatted args and add UI tests#157434
Ajay-singh1 wants to merge 13 commits into
rust-lang:mainfrom
Ajay-singh1:pr-153697

Conversation

@Ajay-singh1

@Ajay-singh1 Ajay-singh1 commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

This PR builds on top of #153697 (teor's #[splat] implementation).

Bug Fix

While writing UI tests for the unhappy path of the overload-at-home example, I discovered an ICE when calling a splatted function with an argument combination that has no registered impl:

foo.method(42i32, 42i32); // no impl for (i32, i32)
// ICE: arg index 1 out of bounds for method with 1 inputs

The condition !tuple_arguments.is_splatted() in label_fn_like was inverted , the safe use_splat_fallback path ran for non-splatted functions, and the span_bug! fired for splatted ones. Fix is removing the !.

After the fix the compiler gives a clean error instead:

error[E0308]: mismatched types expected String, found i32

CC: @teor2345

@rustbot

rustbot commented Jun 4, 2026

Copy link
Copy Markdown
Collaborator

Some changes occurred in compiler/rustc_hir/src/attrs

cc @jdonszelmann, @JonathanBrouwer

Some changes occurred in compiler/rustc_attr_parsing

cc @jdonszelmann, @JonathanBrouwer

rust-analyzer is developed in its own repository. If possible, consider making this change to rust-lang/rust-analyzer instead.

cc @rust-lang/rust-analyzer

HIR ty lowering was modified

cc @fmease

Some changes occurred to the CTFE / Miri interpreter

cc @rust-lang/miri

The reflection data structures are tied exactly to the implementation
in the compiler. Make sure to also adjust rustc_const_eval/src/const_eval/type_info.rs

cc @oli-obk

Some changes occurred to the CTFE machinery

cc @RalfJung, @oli-obk, @lcnr

The Miri subtree was changed

cc @rust-lang/miri

This PR changes rustc_public

cc @oli-obk, @celinval, @ouz-a, @makai410

Some changes occurred in compiler/rustc_passes/src/check_attr.rs

cc @jdonszelmann, @JonathanBrouwer

The Cranelift subtree was changed

cc @bjorn3

@rustbot rustbot added A-attributes Area: Attributes (`#[…]`, `#![…]`) 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. T-libs Relevant to the library team, which will review and decide on the PR/issue. T-rust-analyzer Relevant to the rust-analyzer team, which will review and decide on the PR/issue. labels Jun 4, 2026
@rustbot

rustbot commented Jun 4, 2026

Copy link
Copy Markdown
Collaborator

Failed to set assignee to teor2345: invalid assignee

Note: Only org members with at least the repository "read" role, users with write permissions, or people who have commented on the PR may be assigned.

@RalfJung

RalfJung commented Jun 4, 2026

Copy link
Copy Markdown
Member

I'd recommend opening such PRs as a draft until they are ready for review. That avoids pinging everyone. :)

@Ajay-singh1 Ajay-singh1 marked this pull request as draft June 4, 2026 13:41
@rustbot rustbot added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jun 4, 2026
teor2345

This comment was marked as resolved.

@teor2345

teor2345 commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

r? teor2345

@teor2345

teor2345 commented Jun 5, 2026

Copy link
Copy Markdown
Contributor

I cherry-picked the fix and extra tests to #153697, so any code either of us write on top of that PR is run on the full set of tests. I also made the minor comment fixes I suggested in commit 8d7a905

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-attributes Area: Attributes (`#[…]`, `#![…]`) S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue. T-rust-analyzer Relevant to the rust-analyzer team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants