diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2022-11-13 17:37:37 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-11-13 17:37:37 +0100 |
| commit | 5c764da9b05cd78d0b89d5b4f7b6b401fc773571 (patch) | |
| tree | 1efd02c8512a81cbd42f67eb3fd491de3224aa32 | |
| parent | a1b0702ea5efd2f1bacc2bb5cfac7b82abc58bc5 (diff) | |
| parent | c7b28913151927e8fdda3878d0188ab02b767eae (diff) | |
| download | rust-5c764da9b05cd78d0b89d5b4f7b6b401fc773571.tar.gz rust-5c764da9b05cd78d0b89d5b4f7b6b401fc773571.zip | |
Rollup merge of #104315 - SparkyPotato:fix-104276, r=cjgillot
Improve spans with `use crate::{self}`
Fixes #104276.
The error becomes:
```
error: crate root imports need to be explicitly named: `use crate as name;`
--> src/lib.rs.rs:1:13
|
1 | use crate::{self};
| ^^^^
warning: unused import: `self`
--> src/lib.rs:1:13
|
1 | use crate::{self};
| ^^^^
|
= note: `#[warn(unused_imports)]` on by default
```
| -rw-r--r-- | compiler/rustc_resolve/src/build_reduced_graph.rs | 4 | ||||
| -rw-r--r-- | src/test/ui/use/use-crate-self.rs | 4 | ||||
| -rw-r--r-- | src/test/ui/use/use-crate-self.stderr | 8 |
3 files changed, 15 insertions, 1 deletions
diff --git a/compiler/rustc_resolve/src/build_reduced_graph.rs b/compiler/rustc_resolve/src/build_reduced_graph.rs index 423c5727533..e7e419c9b42 100644 --- a/compiler/rustc_resolve/src/build_reduced_graph.rs +++ b/compiler/rustc_resolve/src/build_reduced_graph.rs @@ -469,9 +469,11 @@ impl<'a, 'b> BuildReducedGraphVisitor<'a, 'b> { } // Replace `use foo::{ self };` with `use foo;` + let self_span = source.ident.span; source = module_path.pop().unwrap(); if rename.is_none() { - ident = source.ident; + // Keep the span of `self`, but the name of `foo` + ident = Ident { name: source.ident.name, span: self_span }; } } } else { diff --git a/src/test/ui/use/use-crate-self.rs b/src/test/ui/use/use-crate-self.rs new file mode 100644 index 00000000000..65ab948147c --- /dev/null +++ b/src/test/ui/use/use-crate-self.rs @@ -0,0 +1,4 @@ +use crate::{self}; + //~^ ERROR crate root imports need to be explicitly named: `use crate as name;` + +fn main() {} diff --git a/src/test/ui/use/use-crate-self.stderr b/src/test/ui/use/use-crate-self.stderr new file mode 100644 index 00000000000..dd4036bfff4 --- /dev/null +++ b/src/test/ui/use/use-crate-self.stderr @@ -0,0 +1,8 @@ +error: crate root imports need to be explicitly named: `use crate as name;` + --> $DIR/use-crate-self.rs:1:13 + | +LL | use crate::{self}; + | ^^^^ + +error: aborting due to previous error + |
