Skip to content

Fix ICE Caused by Incorrectly Delaying E0107 #128377

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Merged
merged 2 commits into from
Aug 7, 2024

Conversation

veera-sivarajan
Copy link
Contributor

Fixes #128249

For the following code:

trait Foo<T> {}
impl Foo<T: Default> for u8 {}

#126054 added some logic to delay emitting E0107 as the names of associated type T in the impl header and generic parameter T in trait Foo match.

But it failed to ensure whether such unexpected associated type bounds are coming from a impl block header. This caused an ICE as the compiler was delaying E0107 for code like:

trait Trait<Type> {
    type Type;
    
    fn method(&self) -> impl Trait<Type: '_>;
}

because it assumed the associated type bound Type: '_ is for the generic parameter Type in trait Trait since the names are same.

This PR adds a check to ensure that E0107 is delayed only in the context of impl block header.

@rustbot
Copy link
Collaborator

rustbot commented Jul 30, 2024

r? @davidtwco

rustbot has assigned @davidtwco.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

@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. labels Jul 30, 2024
@rustbot
Copy link
Collaborator

rustbot commented Jul 30, 2024

HIR ty lowering was modified

cc @fmease

@davidtwco
Copy link
Member

@bors r+ rollup

@bors
Copy link
Collaborator

bors commented Aug 6, 2024

📌 Commit 3d5bd95 has been approved by davidtwco

It is now in the queue for this repository.

@bors bors 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 Aug 6, 2024
bors added a commit to rust-lang-ci/rust that referenced this pull request Aug 6, 2024
…iaskrgr

Rollup of 7 pull requests

Successful merges:

 - rust-lang#128369 (rustc_lint: make `let-underscore-lock` translatable)
 - rust-lang#128377 (Fix ICE Caused by Incorrectly Delaying E0107)
 - rust-lang#128517 (Fallback to string formatting if source is not available for lint)
 - rust-lang#128685 (Remove the root Cargo.lock from the rust-src component)
 - rust-lang#128693 (rustdoc-search: account for numeric disambiguators on impls)
 - rust-lang#128720 (Pass the right `ParamEnv` to `might_permit_raw_init_strict`)
 - rust-lang#128736 (Fix rustdoc missing handling of remap-path-prefix option)

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors merged commit 333c63b into rust-lang:master Aug 7, 2024
6 checks passed
@rustbot rustbot added this to the 1.82.0 milestone Aug 7, 2024
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Aug 7, 2024
Rollup merge of rust-lang#128377 - veera-sivarajan:fix-128249, r=davidtwco

Fix ICE Caused by Incorrectly Delaying E0107

Fixes  rust-lang#128249

For the following code:
```rust
trait Foo<T> {}
impl Foo<T: Default> for u8 {}
```
rust-lang#126054 added some logic to delay emitting E0107 as the names of associated type `T` in the impl header and generic parameter `T` in `trait Foo` match.

But it failed to ensure whether such unexpected associated type bounds are coming from a impl block header. This caused an ICE as the compiler was delaying E0107 for code like:
```rust
trait Trait<Type> {
    type Type;

    fn method(&self) -> impl Trait<Type: '_>;
}
```
because it assumed the associated type bound `Type: '_` is for the generic parameter `Type` in `trait Trait` since the names are same.

This PR adds a check to ensure that E0107 is delayed only in the context of impl block header.
@veera-sivarajan veera-sivarajan deleted the fix-128249 branch August 7, 2024 01:27
# for free to join this conversation on GitHub. Already have an account? # 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.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

ICE: trait takes 1 generic argument but 0 generic arguments were supplied
4 participants