Skip to content

Commit 4a38408

Browse files
committed
Remove eliminate_crate_var and special pretty-printing for $crate
1 parent 0a4a4ff commit 4a38408

File tree

8 files changed

+7
-112
lines changed

8 files changed

+7
-112
lines changed

src/librustc/hir/print.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1622,8 +1622,7 @@ impl<'a> State<'a> {
16221622
if i > 0 {
16231623
self.s.word("::")?
16241624
}
1625-
if segment.ident.name != keywords::PathRoot.name() &&
1626-
segment.ident.name != keywords::DollarCrate.name() {
1625+
if segment.ident.name != keywords::PathRoot.name() {
16271626
self.print_ident(segment.ident)?;
16281627
segment.with_generic_args(|generic_args| {
16291628
self.print_generic_args(generic_args, segment.infer_types,
@@ -1636,8 +1635,7 @@ impl<'a> State<'a> {
16361635
}
16371636

16381637
pub fn print_path_segment(&mut self, segment: &hir::PathSegment) -> io::Result<()> {
1639-
if segment.ident.name != keywords::PathRoot.name() &&
1640-
segment.ident.name != keywords::DollarCrate.name() {
1638+
if segment.ident.name != keywords::PathRoot.name() {
16411639
self.print_ident(segment.ident)?;
16421640
segment.with_generic_args(|generic_args| {
16431641
self.print_generic_args(generic_args, segment.infer_types, false)
@@ -1664,8 +1662,7 @@ impl<'a> State<'a> {
16641662
if i > 0 {
16651663
self.s.word("::")?
16661664
}
1667-
if segment.ident.name != keywords::PathRoot.name() &&
1668-
segment.ident.name != keywords::DollarCrate.name() {
1665+
if segment.ident.name != keywords::PathRoot.name() {
16691666
self.print_ident(segment.ident)?;
16701667
segment.with_generic_args(|generic_args| {
16711668
self.print_generic_args(generic_args,

src/librustc_resolve/lib.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1173,10 +1173,6 @@ impl<'a> ModuleData<'a> {
11731173
}
11741174
}
11751175

1176-
fn is_local(&self) -> bool {
1177-
self.normal_ancestor_id.is_local()
1178-
}
1179-
11801176
fn nearest_item_scope(&'a self) -> Module<'a> {
11811177
if self.is_trait() { self.parent.unwrap() } else { self }
11821178
}

src/librustc_resolve/macros.rs

Lines changed: 1 addition & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
use {AmbiguityError, AmbiguityKind, AmbiguityErrorMisc};
1212
use {CrateLint, Resolver, ResolutionError, ScopeSet, Weak};
13-
use {Module, ModuleKind, NameBinding, NameBindingKind, PathResult, Segment, ToNameBinding};
13+
use {Module, NameBinding, NameBindingKind, PathResult, Segment, ToNameBinding};
1414
use {is_known_tool, resolve_error};
1515
use ModuleOrUniformRoot;
1616
use Namespace::*;
@@ -30,8 +30,6 @@ use syntax::ext::expand::{AstFragment, Invocation, InvocationKind};
3030
use syntax::ext::hygiene::{self, Mark};
3131
use syntax::ext::tt::macro_rules;
3232
use syntax::feature_gate::{feature_err, is_builtin_attr_name, GateIssue};
33-
use syntax::fold::{self, Folder};
34-
use syntax::ptr::P;
3533
use syntax::symbol::{Symbol, keywords};
3634
use syntax::util::lev_distance::find_best_match_for_name;
3735
use syntax_pos::{Span, DUMMY_SP};
@@ -138,58 +136,6 @@ impl<'a> base::Resolver for Resolver<'a> {
138136
mark
139137
}
140138

141-
fn eliminate_crate_var(&mut self, item: P<ast::Item>) -> P<ast::Item> {
142-
struct EliminateCrateVar<'b, 'a: 'b>(
143-
&'b mut Resolver<'a>, Span
144-
);
145-
146-
impl<'a, 'b> Folder for EliminateCrateVar<'a, 'b> {
147-
fn fold_path(&mut self, path: ast::Path) -> ast::Path {
148-
match self.fold_qpath(None, path) {
149-
(None, path) => path,
150-
_ => unreachable!(),
151-
}
152-
}
153-
154-
fn fold_qpath(&mut self, mut qself: Option<ast::QSelf>, mut path: ast::Path)
155-
-> (Option<ast::QSelf>, ast::Path) {
156-
qself = qself.map(|ast::QSelf { ty, path_span, position }| {
157-
ast::QSelf {
158-
ty: self.fold_ty(ty),
159-
path_span: self.new_span(path_span),
160-
position,
161-
}
162-
});
163-
164-
if path.segments[0].ident.name == keywords::DollarCrate.name() {
165-
let module = self.0.resolve_crate_root(path.segments[0].ident);
166-
path.segments[0].ident.name = keywords::PathRoot.name();
167-
if !module.is_local() {
168-
let span = path.segments[0].ident.span;
169-
path.segments.insert(1, match module.kind {
170-
ModuleKind::Def(_, name) => ast::PathSegment::from_ident(
171-
ast::Ident::with_empty_ctxt(name).with_span_pos(span)
172-
),
173-
_ => unreachable!(),
174-
});
175-
if let Some(qself) = &mut qself {
176-
qself.position += 1;
177-
}
178-
}
179-
}
180-
(qself, path)
181-
}
182-
183-
fn fold_mac(&mut self, mac: ast::Mac) -> ast::Mac {
184-
fold::noop_fold_mac(mac, self)
185-
}
186-
}
187-
188-
let ret = EliminateCrateVar(self, item.span).fold_item(item);
189-
assert!(ret.len() == 1);
190-
ret.into_iter().next().unwrap()
191-
}
192-
193139
fn visit_ast_fragment_with_placeholders(&mut self, mark: Mark, fragment: &AstFragment,
194140
derives: &[Mark]) {
195141
let invocation = self.invocations[&mark];
@@ -259,7 +205,6 @@ impl<'a> base::Resolver for Resolver<'a> {
259205
self.definitions.add_parent_module_of_macro_def(invoc.expansion_data.mark,
260206
normal_module_def_id);
261207
invoc.expansion_data.mark.set_default_transparency(ext.default_transparency());
262-
invoc.expansion_data.mark.set_is_builtin(def_id.krate == CrateNum::BuiltinMacros);
263208
}
264209

265210
Ok(Some(ext))

src/libsyntax/ext/base.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -732,7 +732,6 @@ pub type NamedSyntaxExtension = (Name, SyntaxExtension);
732732
pub trait Resolver {
733733
fn next_node_id(&mut self) -> ast::NodeId;
734734
fn get_module_scope(&mut self, id: ast::NodeId) -> Mark;
735-
fn eliminate_crate_var(&mut self, item: P<ast::Item>) -> P<ast::Item>;
736735

737736
fn visit_ast_fragment_with_placeholders(&mut self, mark: Mark, fragment: &AstFragment,
738737
derives: &[Mark]);
@@ -766,7 +765,6 @@ pub struct DummyResolver;
766765
impl Resolver for DummyResolver {
767766
fn next_node_id(&mut self) -> ast::NodeId { ast::DUMMY_NODE_ID }
768767
fn get_module_scope(&mut self, _id: ast::NodeId) -> Mark { Mark::root() }
769-
fn eliminate_crate_var(&mut self, item: P<ast::Item>) -> P<ast::Item> { item }
770768

771769
fn visit_ast_fragment_with_placeholders(&mut self, _invoc: Mark, _fragment: &AstFragment,
772770
_derives: &[Mark]) {}

src/libsyntax/ext/expand.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -203,10 +203,7 @@ fn macro_bang_format(path: &ast::Path) -> ExpnFormat {
203203
if i != 0 {
204204
path_str.push_str("::");
205205
}
206-
207-
if segment.ident.name != keywords::PathRoot.name() &&
208-
segment.ident.name != keywords::DollarCrate.name()
209-
{
206+
if segment.ident.name != keywords::PathRoot.name() {
210207
path_str.push_str(&segment.ident.as_str())
211208
}
212209
}

src/libsyntax/print/pprust.rs

Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ use util::parser::{self, AssocOp, Fixity};
1616
use attr;
1717
use source_map::{self, SourceMap, Spanned};
1818
use syntax_pos::{self, BytePos};
19-
use syntax_pos::hygiene::{Mark, SyntaxContext};
2019
use parse::token::{self, BinOpToken, Token};
2120
use parse::lexer::comments;
2221
use parse::{self, ParseSess};
@@ -724,12 +723,8 @@ pub trait PrintState<'a> {
724723
if i > 0 {
725724
self.writer().word("::")?
726725
}
727-
if segment.ident.name != keywords::PathRoot.name() &&
728-
segment.ident.name != keywords::DollarCrate.name()
729-
{
726+
if segment.ident.name != keywords::PathRoot.name() {
730727
self.writer().word(segment.ident.as_str().get())?;
731-
} else if segment.ident.name == keywords::DollarCrate.name() {
732-
self.print_dollar_crate(segment.ident.span.ctxt())?;
733728
}
734729
}
735730
Ok(())
@@ -842,19 +837,6 @@ pub trait PrintState<'a> {
842837
}
843838

844839
fn nbsp(&mut self) -> io::Result<()> { self.writer().word(" ") }
845-
846-
fn print_dollar_crate(&mut self, mut ctxt: SyntaxContext) -> io::Result<()> {
847-
if let Some(mark) = ctxt.adjust(Mark::root()) {
848-
// Make a best effort to print something that complies
849-
if mark.is_builtin() {
850-
if let Some(name) = std_inject::injected_crate_name() {
851-
self.writer().word("::")?;
852-
self.writer().word(name)?;
853-
}
854-
}
855-
}
856-
Ok(())
857-
}
858840
}
859841

860842
impl<'a> PrintState<'a> for State<'a> {
@@ -2463,14 +2445,11 @@ impl<'a> State<'a> {
24632445
colons_before_params: bool)
24642446
-> io::Result<()>
24652447
{
2466-
if segment.ident.name != keywords::PathRoot.name() &&
2467-
segment.ident.name != keywords::DollarCrate.name() {
2448+
if segment.ident.name != keywords::PathRoot.name() {
24682449
self.print_ident(segment.ident)?;
24692450
if let Some(ref args) = segment.args {
24702451
self.print_generic_args(args, colons_before_params)?;
24712452
}
2472-
} else if segment.ident.name == keywords::DollarCrate.name() {
2473-
self.print_dollar_crate(segment.ident.span.ctxt())?;
24742453
}
24752454
Ok(())
24762455
}

src/libsyntax_ext/deriving/custom.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@ impl MultiItemModifier for ProcMacroDerive {
7474
// Mark attributes as known, and used.
7575
MarkAttrs(&self.attrs).visit_item(&item);
7676

77-
let item = ecx.resolver.eliminate_crate_var(item);
7877
let token = Token::interpolated(token::NtItem(item));
7978
let input = tokenstream::TokenTree::Token(DUMMY_SP, token).into();
8079

src/libsyntax_pos/hygiene.rs

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ pub struct Mark(u32);
4747
struct MarkData {
4848
parent: Mark,
4949
default_transparency: Transparency,
50-
is_builtin: bool,
5150
expn_info: Option<ExpnInfo>,
5251
}
5352

@@ -77,7 +76,6 @@ impl Mark {
7776
parent,
7877
// By default expansions behave like `macro_rules`.
7978
default_transparency: Transparency::SemiTransparent,
80-
is_builtin: false,
8179
expn_info: None,
8280
});
8381
Mark(data.marks.len() as u32 - 1)
@@ -121,18 +119,6 @@ impl Mark {
121119
HygieneData::with(|data| data.marks[self.0 as usize].default_transparency = transparency)
122120
}
123121

124-
#[inline]
125-
pub fn is_builtin(self) -> bool {
126-
assert_ne!(self, Mark::root());
127-
HygieneData::with(|data| data.marks[self.0 as usize].is_builtin)
128-
}
129-
130-
#[inline]
131-
pub fn set_is_builtin(self, is_builtin: bool) {
132-
assert_ne!(self, Mark::root());
133-
HygieneData::with(|data| data.marks[self.0 as usize].is_builtin = is_builtin)
134-
}
135-
136122
pub fn is_descendant_of(mut self, ancestor: Mark) -> bool {
137123
HygieneData::with(|data| {
138124
while self != ancestor {
@@ -206,7 +192,6 @@ impl HygieneData {
206192
// If the root is opaque, then loops searching for an opaque mark
207193
// will automatically stop after reaching it.
208194
default_transparency: Transparency::Opaque,
209-
is_builtin: true,
210195
expn_info: None,
211196
}],
212197
syntax_contexts: vec![SyntaxContextData {
@@ -262,7 +247,6 @@ impl SyntaxContext {
262247
data.marks.push(MarkData {
263248
parent: Mark::root(),
264249
default_transparency: Transparency::SemiTransparent,
265-
is_builtin: false,
266250
expn_info: Some(expansion_info),
267251
});
268252

0 commit comments

Comments
 (0)