Change:
<!-- [31mICE[0m: Rustc '' 'error: internal compiler error: inconsistent resolution for an import', 'error: internal compiler error: inconsistent resolution for an import' File: --auto-reduced (treereduce-rust): original: Version information ` Command: <!-- Include a backtrace in the code block by setting in your environment. E.g. . --<details<summary<strongProgram output</strong</summary<p</p</details<!-- query stack: [resolverforlowering_raw] getting the resolver for lowering --
Isn't this example identical to EDIT: oh I see, the PR that closes doesn't actually have this test, so it's possible this is a different ICE.
This one has an additional which indeed causes the ICE to trigger again :laughing:
Regression in nightly-2020-11-09 commit[0] 2020-11-07: Auto merge of - Mark-Simulacrum:debug-asserts, r=pietroalbini commit[1] 2020-11-07: Auto merge of - Mark-Simulacrum:revert-, r=petrochenkov commit[2] 2020-11-08: Auto merge of - petrochenkov:mergetarg, r=Mark-Simulacrum commit[3] 2020-11-08: Auto merge of - lcnr:revert75443, r=nikomatsakis commit[4] 2020-11-08: Auto merge of - m-ou-se:rollup-3jp1ijj, r=m-ou-se commit[5] 2020-11-08: Auto merge of - petrochenkov:visitok, r=Aaron1011

Discussion:
for single_import in &resolution.single_imports { let Some(import_vis) = single_import.vis.get() else { // This branch handles a cycle in single imports, which occurs <del> // when we've previously captured the `vis` value during an import </del> <ins> // when we've previously **steal** the `vis` value during an import </ins> // process. // // For example:

let Some(module) = single_import.imported_module.get() else { return Err((Undetermined, Weak::No)); }; <del> let ImportKind::Single { source: ident, target, target_bindings, .. } = &single_import.kind </del> <ins> let ImportKind::Single { source, target, target_bindings, .. } = &single_import.kind </ins> else { unreachable!(); }; <del> if (ident != target) && target_bindings.iter().all(|binding| binding.get().is_none()) { </del> <ins> if source != target { </ins> // This branch allows the binding to be defined or updated later if the target name <del> // can hide the source but these bindings are not obtained. // avoiding module inconsistency between the resolve process and the finalize process. // See more details in #124840 return Err((Undetermined, Weak::No)); </del> <ins> // can hide the source. if target_bindings.iter().all(|binding| binding.get().is_none()) { // None of the target bindings are available, so we can't determine // if this binding is correct or not. // See more details in #124840 return Err((Undetermined, Weak::No)); } else if target_bindings[ns].get().is_none() && binding.is_some() { // `binding.is_some()` avoids the condition where the binding // truly doesn't exist in this namespace and should return `Err(Determined)`. return Err((Undetermined, Weak::No)); } </ins> } match self.resolve_ident_in_module( module, <del> *ident, </del> <ins> *source, </ins> ns, &single_import.parent_scope, None,

<del> //@ known-bug: rust-lang/rust#126376 mod a { pub mod b { pub mod c { pub trait D {} } } } use a::*; use e as b; use b::c::D as e; fn e() {} </del>

<del> //@ known-bug: rust-lang/rust#126389 mod a { pub mod b { pub mod c {} } } use a::*; use b::c; use c as b; fn c() {} </del>

<ins> // https://github.com/rust-lang/rust/issues/126389 mod a { pub mod b { pub mod c {} } } use a::*; use b::c; //~^ ERROR: unresolved import `b::c` //~| ERROR: cannot determine resolution for the import //~| ERROR: cannot determine resolution for the import use c as b; fn c() {} fn main() { } </ins>

<ins> error: cannot determine resolution for the import --> $DIR/shadow-glob-module-resolution-3.rs:11:5 | LL | use b::c; |     ^^^^ error: cannot determine resolution for the import --> $DIR/shadow-glob-module-resolution-3.rs:11:5 | LL | use b::c; |     ^^^^ | = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no` error[E0432]: unresolved import `b::c` --> $DIR/shadow-glob-module-resolution-3.rs:11:5 | LL | use b::c; |     ^^^^ error: aborting due to 3 previous errors For more information about this error, try `rustc --explain E0432`. </ins>

<ins> // https://github.com/rust-lang/rust/issues/126376 mod a { pub mod b { pub trait C {} } } use a::*; use e as b; use b::C as e; //~^ ERROR: unresolved import `b::C` //~| ERROR: cannot determine resolution for the import //~| ERROR: cannot determine resolution for the import fn e() {} fn main() { } </ins>

<ins> error: cannot determine resolution for the import --> $DIR/shadow-glob-module-resolution-4.rs:13:5 | LL | use b::C as e; |     ^^^^^^^^^ error: cannot determine resolution for the import --> $DIR/shadow-glob-module-resolution-4.rs:13:5 | LL | use b::C as e; |     ^^^^^^^^^ | = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no` error[E0432]: unresolved import `b::C` --> $DIR/shadow-glob-module-resolution-4.rs:13:5 | LL | use b::C as e; |     ^^^^^^^^^ error: aborting due to 3 previous errors For more information about this error, try `rustc --explain E0432`. </ins>