WIP: don't suggest placing `use` statements into expanded code

上级 f9a07bc1
......@@ -605,7 +605,7 @@ fn visit_mod(
ItemKind::Use(..) => {
// don't suggest placing a use before the prelude
// import or other generated ones
if item.span == DUMMY_SP {
if item.span.ctxt().outer().expn_info().is_none() {
self.span = Some(item.span.with_hi(item.span.lo()));
self.found_use = true;
return;
......@@ -615,7 +615,19 @@ fn visit_mod(
ItemKind::ExternCrate(_) => {}
// but place them before the first other item
_ => if self.span.map_or(true, |span| item.span < span ) {
self.span = Some(item.span.with_hi(item.span.lo()));
if item.span.ctxt().outer().expn_info().is_none() {
// don't insert between attributes and an item
if item.attrs.is_empty() {
self.span = Some(item.span.with_hi(item.span.lo()));
} else {
// find the first attribute on the item
for attr in &item.attrs {
if self.span.map_or(true, |span| attr.span < span) {
self.span = Some(attr.span.with_hi(attr.span.lo()));
}
}
}
}
},
}
}
......
......@@ -10,7 +10,7 @@ error[E0423]: expected value, found struct `Z`
|
help: possible better candidate is found in another module, you can import it into scope
|
16 | use m::n::Z;
22 | use m::n::Z;
|
error[E0423]: expected value, found struct `S`
......@@ -24,7 +24,7 @@ error[E0423]: expected value, found struct `S`
|
help: possible better candidate is found in another module, you can import it into scope
|
15 | use m::S;
32 | use m::S;
|
error[E0423]: expected value, found struct `xcrate::S`
......@@ -38,7 +38,7 @@ error[E0423]: expected value, found struct `xcrate::S`
|
help: possible better candidate is found in another module, you can import it into scope
|
15 | use m::S;
32 | use m::S;
|
error[E0603]: tuple struct `Z` is private
......
......@@ -6,7 +6,7 @@ error[E0412]: cannot find type `Path` in this scope
|
help: possible candidate is found in another module, you can import it into scope
|
20 | #[derive(use std::path::Path;
21 | use std::path::Path;
|
error[E0425]: cannot find value `A` in this scope
......
......@@ -6,7 +6,7 @@ error[E0404]: expected trait, found type parameter `Add`
|
help: possible better candidate is found in another module, you can import it into scope
|
11 | use std::ops::Add;
13 | use std::ops::Add;
|
error[E0601]: main function not found
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册