fix(resolve): not defined extern crate shadow_name
This commit is contained in:
parent
8b4b20836b
commit
c41b2089c7
4 changed files with 34 additions and 1 deletions
|
@ -873,6 +873,11 @@ impl<'a, 'b, 'tcx> BuildReducedGraphVisitor<'a, 'b, 'tcx> {
|
||||||
let msg = "macro-expanded `extern crate` items cannot \
|
let msg = "macro-expanded `extern crate` items cannot \
|
||||||
shadow names passed with `--extern`";
|
shadow names passed with `--extern`";
|
||||||
self.r.tcx.sess.span_err(item.span, msg);
|
self.r.tcx.sess.span_err(item.span, msg);
|
||||||
|
// `return` is intended to discard this binding because it's an
|
||||||
|
// unregistered ambiguity error which would result in a panic
|
||||||
|
// caused by inconsistency `path_res`
|
||||||
|
// more details: https://github.com/rust-lang/rust/pull/111761
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let entry = self.r.extern_prelude.entry(ident.normalize_to_macros_2_0()).or_insert(
|
let entry = self.r.extern_prelude.entry(ident.normalize_to_macros_2_0()).or_insert(
|
||||||
|
|
|
@ -106,7 +106,7 @@ impl Determinacy {
|
||||||
/// A specific scope in which a name can be looked up.
|
/// A specific scope in which a name can be looked up.
|
||||||
/// This enum is currently used only for early resolution (imports and macros),
|
/// This enum is currently used only for early resolution (imports and macros),
|
||||||
/// but not for late resolution yet.
|
/// but not for late resolution yet.
|
||||||
#[derive(Clone, Copy)]
|
#[derive(Clone, Copy, Debug)]
|
||||||
enum Scope<'a> {
|
enum Scope<'a> {
|
||||||
DeriveHelpers(LocalExpnId),
|
DeriveHelpers(LocalExpnId),
|
||||||
DeriveHelpersCompat,
|
DeriveHelpersCompat,
|
||||||
|
|
15
tests/ui/imports/issue-109148.rs
Normal file
15
tests/ui/imports/issue-109148.rs
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
// edition: 2021
|
||||||
|
|
||||||
|
// https://github.com/rust-lang/rust/pull/111761#issuecomment-1557777314
|
||||||
|
macro_rules! m {
|
||||||
|
() => {
|
||||||
|
extern crate core as std;
|
||||||
|
//~^ ERROR macro-expanded `extern crate` items cannot shadow names passed with `--extern`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
m!();
|
||||||
|
|
||||||
|
use std::mem;
|
||||||
|
|
||||||
|
fn main() {}
|
13
tests/ui/imports/issue-109148.stderr
Normal file
13
tests/ui/imports/issue-109148.stderr
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
error: macro-expanded `extern crate` items cannot shadow names passed with `--extern`
|
||||||
|
--> $DIR/issue-109148.rs:6:9
|
||||||
|
|
|
||||||
|
LL | extern crate core as std;
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
...
|
||||||
|
LL | m!();
|
||||||
|
| ---- in this macro invocation
|
||||||
|
|
|
||||||
|
= note: this error originates in the macro `m` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
|
error: aborting due to previous error
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue