Skip to content

Remove @JohnTitor from diagnostics pings#3

Closed
JohnTitor wants to merge 1 commit intomasterfrom
rm-jtitor-diag-pings
Closed

Remove @JohnTitor from diagnostics pings#3
JohnTitor wants to merge 1 commit intomasterfrom
rm-jtitor-diag-pings

Conversation

@JohnTitor
Copy link
Copy Markdown
Owner

I've been inactive around diagnostics for a while so would like to remove myself from the diagnostics-related ping groups for now.

I've been inactive around diagnostics for a while so would like to remove myself from the diagnostics-related ping groups for now.
@JohnTitor JohnTitor closed this Dec 15, 2023
@JohnTitor JohnTitor deleted the rm-jtitor-diag-pings branch December 16, 2023 10:49
JohnTitor pushed a commit that referenced this pull request Mar 25, 2026
…rochenkov

Avoid prematurely choosing a glob import

Fixes rust-lang#153842

Use the following without introducing trait to explain:
```rust
mod a {
    pub use crate::x::y as x; // single import #1
}

mod b {
    pub mod x {
        pub mod y {}
    }
}

use a::x; // single import #2
use b::*; // glob import #3

fn main() {}
```

In current implementation, when `#1` is first resolved, `crate::x` is temporarily taken from glob import `#3` as `crate::b::x`. This happens because `single_import_can_define_name` will see that `#2` cannot define `x` (because it depends on `#1` and `#1` is ignored) and then return `false`. Later, during finalization, `crate::x` in `#1` resolves through single import `#2` instead, which no longer matches the initially cached module `crate::b::x` and triggers the ICE.

I think the resolver should keep this unresolved because `#2` may still define `x` to avoid prematurely choosing a glob import.

r? petrochenkov
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.

1 participant