Skip to content

Commit 5d06c89

Browse files
committed
syntax: Make _ an identifier
1 parent 61b6bf5 commit 5d06c89

File tree

20 files changed

+109
-119
lines changed

20 files changed

+109
-119
lines changed

src/libproc_macro/lib.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -680,7 +680,6 @@ impl TokenTree {
680680
Pound => op!('#'),
681681
Dollar => op!('$'),
682682
Question => op!('?'),
683-
Underscore => op!('_'),
684683

685684
Ident(ident) | Lifetime(ident) => TokenNode::Term(Term(ident.name)),
686685
Literal(..) | DocComment(..) => TokenNode::Literal(self::Literal(token)),
@@ -743,7 +742,6 @@ impl TokenTree {
743742
'#' => Pound,
744743
'$' => Dollar,
745744
'?' => Question,
746-
'_' => Underscore,
747745
_ => panic!("unsupported character {}", op),
748746
};
749747

src/librustc/hir/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ impl LifetimeName {
214214
use self::LifetimeName::*;
215215
match *self {
216216
Implicit => keywords::Invalid.name(),
217-
Underscore => Symbol::intern("'_"),
217+
Underscore => keywords::UnderscoreLifetime.name(),
218218
Static => keywords::StaticLifetime.name(),
219219
Name(name) => name,
220220
}

src/librustc/ich/impls_syntax.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,6 @@ fn hash_token<'a, 'gcx, W: StableHasherResult>(
287287
token::Token::Pound |
288288
token::Token::Dollar |
289289
token::Token::Question |
290-
token::Token::Underscore |
291290
token::Token::Whitespace |
292291
token::Token::Comment |
293292
token::Token::Eof => {}

src/librustc_passes/ast_validation.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,15 +37,17 @@ impl<'a> AstValidator<'a> {
3737
}
3838

3939
fn check_lifetime(&self, lifetime: &Lifetime) {
40-
let valid_names = [keywords::StaticLifetime.name(), keywords::Invalid.name()];
40+
let valid_names = [keywords::UnderscoreLifetime.name(),
41+
keywords::StaticLifetime.name(),
42+
keywords::Invalid.name()];
4143
if !valid_names.contains(&lifetime.ident.name) &&
4244
token::Ident(lifetime.ident.without_first_quote()).is_reserved_ident() {
4345
self.err_handler().span_err(lifetime.span, "lifetimes cannot use keyword names");
4446
}
4547
}
4648

4749
fn check_label(&self, label: Ident, span: Span) {
48-
if token::Ident(label.without_first_quote()).is_reserved_ident() || label.name == "'_" {
50+
if token::Ident(label.without_first_quote()).is_reserved_ident() {
4951
self.err_handler().span_err(span, &format!("invalid label name `{}`", label.name));
5052
}
5153
}

src/librustdoc/html/highlight.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -352,7 +352,7 @@ impl<'a> Classifier<'a> {
352352

353353
token::Lifetime(..) => Class::Lifetime,
354354

355-
token::Underscore | token::Eof | token::Interpolated(..) |
355+
token::Eof | token::Interpolated(..) |
356356
token::Tilde | token::At | token::DotEq => Class::None,
357357
};
358358

src/libsyntax/diagnostics/plugin.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use ext::base::{ExtCtxt, MacEager, MacResult};
1919
use ext::build::AstBuilder;
2020
use parse::token;
2121
use ptr::P;
22-
use symbol::Symbol;
22+
use symbol::{keywords, Symbol};
2323
use tokenstream::{TokenTree};
2424
use util::small_vector::SmallVector;
2525

@@ -192,7 +192,7 @@ pub fn expand_build_diagnostic_array<'cx>(ecx: &'cx mut ExtCtxt,
192192
(descriptions.len(), ecx.expr_vec(span, descriptions))
193193
});
194194

195-
let static_ = ecx.lifetime(span, Ident::from_str("'static"));
195+
let static_ = ecx.lifetime(span, keywords::StaticLifetime.ident());
196196
let ty_str = ecx.ty_rptr(
197197
span,
198198
ecx.ty_ident(span, ecx.ident_of("str")),

src/libsyntax/ext/quote.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -709,7 +709,6 @@ fn expr_mk_token(cx: &ExtCtxt, sp: Span, tok: &token::Token) -> P<ast::Expr> {
709709
token::Pound => "Pound",
710710
token::Dollar => "Dollar",
711711
token::Question => "Question",
712-
token::Underscore => "Underscore",
713712
token::Eof => "Eof",
714713

715714
token::Whitespace | token::Comment | token::Shebang(_) => {

src/libsyntax/ext/tt/macro_parser.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -765,8 +765,7 @@ fn may_begin_with(name: &str, token: &Token) -> bool {
765765
Token::DotDotDot | // range pattern (future compat)
766766
Token::ModSep | // path
767767
Token::Lt | // path (UFCS constant)
768-
Token::BinOp(token::Shl) | // path (double UFCS)
769-
Token::Underscore => true, // placeholder
768+
Token::BinOp(token::Shl) => true, // path (double UFCS)
770769
Token::Interpolated(ref nt) => may_be_ident(&nt.0),
771770
_ => false,
772771
},

src/libsyntax/feature_gate.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1790,7 +1790,7 @@ impl<'a> Visitor<'a> for PostExpansionVisitor<'a> {
17901790
}
17911791

17921792
fn visit_lifetime(&mut self, lt: &'a ast::Lifetime) {
1793-
if lt.ident.name == "'_" {
1793+
if lt.ident.name == keywords::UnderscoreLifetime.name() {
17941794
gate_feature_post!(&self, underscore_lifetimes, lt.span,
17951795
"underscore lifetimes are unstable");
17961796
}

src/libsyntax/parse/lexer/mod.rs

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ pub struct TokenAndSpan {
3434

3535
impl Default for TokenAndSpan {
3636
fn default() -> Self {
37-
TokenAndSpan { tok: token::Underscore, sp: syntax_pos::DUMMY_SP }
37+
TokenAndSpan { tok: token::Whitespace, sp: syntax_pos::DUMMY_SP }
3838
}
3939
}
4040

@@ -126,7 +126,7 @@ impl<'a> StringReader<'a> {
126126
pub fn try_next_token(&mut self) -> Result<TokenAndSpan, ()> {
127127
assert!(self.fatal_errs.is_empty());
128128
let ret_val = TokenAndSpan {
129-
tok: replace(&mut self.peek_tok, token::Underscore),
129+
tok: replace(&mut self.peek_tok, token::Whitespace),
130130
sp: self.peek_span,
131131
};
132132
self.advance_token()?;
@@ -1133,14 +1133,8 @@ impl<'a> StringReader<'a> {
11331133
self.bump();
11341134
}
11351135

1136-
return Ok(self.with_str_from(start, |string| {
1137-
if string == "_" {
1138-
token::Underscore
1139-
} else {
1140-
// FIXME: perform NFKC normalization here. (Issue #2253)
1141-
token::Ident(self.mk_ident(string))
1142-
}
1143-
}));
1136+
// FIXME: perform NFKC normalization here. (Issue #2253)
1137+
return Ok(self.with_str_from(start, |string| token::Ident(self.mk_ident(string))));
11441138
}
11451139

11461140
if is_dec_digit(c) {

0 commit comments

Comments
 (0)