Skip to content

Commit 1328bde

Browse files
committed
resolve: Cleanup resolve_crate_root
1 parent 1029775 commit 1328bde

File tree

4 files changed

+10
-13
lines changed

4 files changed

+10
-13
lines changed

src/librustc_resolve/build_reduced_graph.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ impl<'a> Resolver<'a> {
156156

157157
// Disallow `use $crate;`
158158
if source.name == keywords::DollarCrate.name() && path.segments.len() == 1 {
159-
let crate_root = self.resolve_crate_root(source.span.ctxt(), true);
159+
let crate_root = self.resolve_crate_root(source);
160160
let crate_name = match crate_root.kind {
161161
ModuleKind::Def(_, name) => name,
162162
ModuleKind::Block(..) => unreachable!(),

src/librustc_resolve/lib.rs

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1981,8 +1981,9 @@ impl<'a> Resolver<'a> {
19811981
result
19821982
}
19831983

1984-
fn resolve_crate_root(&mut self, mut ctxt: SyntaxContext, legacy: bool) -> Module<'a> {
1985-
let mark = if legacy {
1984+
fn resolve_crate_root(&mut self, ident: Ident) -> Module<'a> {
1985+
let mut ctxt = ident.span.ctxt();
1986+
let mark = if ident.name == keywords::DollarCrate.name() {
19861987
// When resolving `$crate` from a `macro_rules!` invoked in a `macro`,
19871988
// we don't want to pretend that the `macro_rules!` definition is in the `macro`
19881989
// as described in `SyntaxContext::apply_mark`, so we ignore prepended modern marks.
@@ -3345,14 +3346,11 @@ impl<'a> Resolver<'a> {
33453346
if ns == TypeNS {
33463347
if (i == 0 && name == keywords::CrateRoot.name()) ||
33473348
(i == 0 && name == keywords::Crate.name()) ||
3349+
(i == 0 && name == keywords::DollarCrate.name()) ||
33483350
(i == 1 && name == keywords::Crate.name() &&
33493351
path[0].name == keywords::CrateRoot.name()) {
3350-
// `::a::b` or `::crate::a::b`
3351-
module = Some(self.resolve_crate_root(ident.span.ctxt(), false));
3352-
continue
3353-
} else if i == 0 && name == keywords::DollarCrate.name() {
3354-
// `$crate::a::b`
3355-
module = Some(self.resolve_crate_root(ident.span.ctxt(), true));
3352+
// `::a::b`, `crate::a::b`, `::crate::a::b` or `$crate::a::b`
3353+
module = Some(self.resolve_crate_root(ident));
33563354
continue
33573355
} else if i == 1 && !ident.is_path_segment_keyword() {
33583356
let prev_name = path[0].name;

src/librustc_resolve/macros.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -155,10 +155,9 @@ impl<'a> base::Resolver for Resolver<'a> {
155155
}
156156
});
157157

158-
let ident = path.segments[0].ident;
159-
if ident.name == keywords::DollarCrate.name() {
158+
if path.segments[0].ident.name == keywords::DollarCrate.name() {
159+
let module = self.0.resolve_crate_root(path.segments[0].ident);
160160
path.segments[0].ident.name = keywords::CrateRoot.name();
161-
let module = self.0.resolve_crate_root(ident.span.ctxt(), true);
162161
if !module.is_local() {
163162
let span = path.segments[0].ident.span;
164163
path.segments.insert(1, match module.kind {

src/librustc_resolve/resolve_imports.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -698,7 +698,7 @@ impl<'a, 'b:'a> ImportResolver<'a, 'b> {
698698
"crate root imports need to be explicitly named: \
699699
`use crate as name;`".to_string()));
700700
} else {
701-
Some(self.resolve_crate_root(source.span.ctxt().modern(), false))
701+
Some(self.resolve_crate_root(source))
702702
}
703703
} else if is_extern && !source.is_path_segment_keyword() {
704704
let crate_id =

0 commit comments

Comments
 (0)