From a1885cdba38a63448ceec02f951ddc0844d0ff38 Mon Sep 17 00:00:00 2001 From: Vadim Petrochenkov Date: Mon, 13 May 2019 22:46:20 +0300 Subject: [PATCH] Restore the old behavior of the rustdoc keyword check + Fix rebase --- src/librustc/ty/print/pretty.rs | 16 ++++++++-------- src/librustc_allocator/expand.rs | 5 ++--- src/librustc_plugin/load.rs | 4 ++-- src/librustc_resolve/resolve_imports.rs | 2 +- src/librustdoc/html/highlight.rs | 14 +++++++------- src/librustdoc/html/layout.rs | 2 +- src/libsyntax/attr/mod.rs | 4 ++-- src/libsyntax/ext/tt/macro_rules.rs | 12 ++++++------ src/libsyntax/feature_gate.rs | 4 ++-- src/libsyntax/parse/diagnostics.rs | 4 ++-- src/libsyntax/parse/literal.rs | 11 +++++------ src/libsyntax/test.rs | 2 +- src/libsyntax_pos/symbol.rs | 5 +++++ 13 files changed, 44 insertions(+), 41 deletions(-) diff --git a/src/librustc/ty/print/pretty.rs b/src/librustc/ty/print/pretty.rs index 5199da8fbbc..7a8d5d3bb9a 100644 --- a/src/librustc/ty/print/pretty.rs +++ b/src/librustc/ty/print/pretty.rs @@ -8,7 +8,7 @@ use crate::ty::{self, DefIdTree, ParamConst, Ty, TyCtxt, TypeFoldable}; use crate::ty::subst::{Kind, Subst, UnpackedKind}; use crate::mir::interpret::ConstValue; use rustc_target::spec::abi::Abi; -use syntax::symbol::{keywords, InternedString}; +use syntax::symbol::{kw, InternedString}; use std::cell::Cell; use std::fmt::{self, Write as _}; @@ -1140,16 +1140,16 @@ impl PrettyPrinter<'gcx, 'tcx> for FmtPrinter<'_, 'gcx, 'tcx, F> match *region { ty::ReEarlyBound(ref data) => { - data.name.as_symbol() != keywords::Invalid.name() && - data.name.as_symbol() != keywords::UnderscoreLifetime.name() + data.name.as_symbol() != kw::Invalid && + data.name.as_symbol() != kw::UnderscoreLifetime } ty::ReLateBound(_, br) | ty::ReFree(ty::FreeRegion { bound_region: br, .. }) | ty::RePlaceholder(ty::Placeholder { name: br, .. }) => { if let ty::BrNamed(_, name) = br { - if name.as_symbol() != keywords::Invalid.name() && - name.as_symbol() != keywords::UnderscoreLifetime.name() { + if name.as_symbol() != kw::Invalid && + name.as_symbol() != kw::UnderscoreLifetime { return true; } } @@ -1205,7 +1205,7 @@ impl FmtPrinter<'_, '_, '_, F> { // `explain_region()` or `note_and_explain_region()`. match *region { ty::ReEarlyBound(ref data) => { - if data.name.as_symbol() != keywords::Invalid.name() { + if data.name.as_symbol() != kw::Invalid { p!(write("{}", data.name)); return Ok(self); } @@ -1214,8 +1214,8 @@ impl FmtPrinter<'_, '_, '_, F> { ty::ReFree(ty::FreeRegion { bound_region: br, .. }) | ty::RePlaceholder(ty::Placeholder { name: br, .. }) => { if let ty::BrNamed(_, name) = br { - if name.as_symbol() != keywords::Invalid.name() && - name.as_symbol() != keywords::UnderscoreLifetime.name() { + if name.as_symbol() != kw::Invalid && + name.as_symbol() != kw::UnderscoreLifetime { p!(write("{}", name)); return Ok(self); } diff --git a/src/librustc_allocator/expand.rs b/src/librustc_allocator/expand.rs index 0c19d770194..b9cd30694f6 100644 --- a/src/librustc_allocator/expand.rs +++ b/src/librustc_allocator/expand.rs @@ -19,7 +19,7 @@ use syntax::{ mut_visit::{self, MutVisitor}, parse::ParseSess, ptr::P, - symbol::{keywords, Symbol, sym} + symbol::{kw, sym, Symbol} }; use syntax_pos::Span; @@ -116,8 +116,7 @@ impl MutVisitor for ExpandAllocatorDirectives<'_> { // We will generate a new submodule. To `use` the static from that module, we need to get // the `super::...` path. - let super_path = - f.cx.path(f.span, vec![Ident::with_empty_ctxt(keywords::Super.name()), f.global]); + let super_path = f.cx.path(f.span, vec![Ident::with_empty_ctxt(kw::Super), f.global]); // Generate the items in the submodule let mut items = vec![ diff --git a/src/librustc_plugin/load.rs b/src/librustc_plugin/load.rs index 680bdcc4bbe..46cd66fe585 100644 --- a/src/librustc_plugin/load.rs +++ b/src/librustc_plugin/load.rs @@ -11,7 +11,7 @@ use std::mem; use std::path::PathBuf; use syntax::ast; use syntax::span_err; -use syntax::symbol::{Symbol, keywords, sym}; +use syntax::symbol::{Symbol, kw, sym}; use syntax_pos::{Span, DUMMY_SP}; /// Pointer to a registrar function. @@ -58,7 +58,7 @@ pub fn load_plugins(sess: &Session, for plugin in plugins { // plugins must have a name and can't be key = value let name = plugin.name_or_empty(); - if name != keywords::Invalid.name() && !plugin.is_value_str() { + if name != kw::Invalid && !plugin.is_value_str() { let args = plugin.meta_item_list().map(ToOwned::to_owned); loader.load_plugin(plugin.span(), name, args.unwrap_or_default()); } else { diff --git a/src/librustc_resolve/resolve_imports.rs b/src/librustc_resolve/resolve_imports.rs index ef71bd51167..c0ff7b310b5 100644 --- a/src/librustc_resolve/resolve_imports.rs +++ b/src/librustc_resolve/resolve_imports.rs @@ -707,7 +707,7 @@ impl<'a, 'b:'a> ImportResolver<'a, 'b> { has_errors = true; if let SingleImport { source, ref source_bindings, .. } = import.subclass { - if source.name == keywords::SelfLower.name() { + if source.name == kw::SelfLower { // Silence `unresolved import` error if E0429 is already emitted if let Err(Determined) = source_bindings.value_ns.get() { continue; diff --git a/src/librustdoc/html/highlight.rs b/src/librustdoc/html/highlight.rs index 5bb06516ac4..e5b44077fc9 100644 --- a/src/librustdoc/html/highlight.rs +++ b/src/librustdoc/html/highlight.rs @@ -15,6 +15,7 @@ use syntax::source_map::{SourceMap, FilePathMapping}; use syntax::parse::lexer::{self, TokenAndSpan}; use syntax::parse::token; use syntax::parse; +use syntax::symbol::{kw, sym}; use syntax_pos::{Span, FileName}; /// Highlights `src`, returning the HTML output. @@ -325,16 +326,15 @@ impl<'a> Classifier<'a> { // Keywords are also included in the identifier set. token::Ident(ident, is_raw) => { - match &*ident.as_str() { - "ref" | "mut" if !is_raw => Class::RefKeyWord, + match ident.name { + kw::Ref | kw::Mut if !is_raw => Class::RefKeyWord, - "self" | "Self" => Class::Self_, - "false" | "true" if !is_raw => Class::Bool, + kw::SelfLower | kw::SelfUpper => Class::Self_, + kw::False | kw::True if !is_raw => Class::Bool, - "Option" | "Result" => Class::PreludeTy, - "Some" | "None" | "Ok" | "Err" => Class::PreludeVal, + sym::Option | sym::Result => Class::PreludeTy, + sym::Some | sym::None | sym::Ok | sym::Err => Class::PreludeVal, - "$crate" => Class::KeyWord, _ if tas.tok.is_reserved_ident() => Class::KeyWord, _ => { diff --git a/src/librustdoc/html/layout.rs b/src/librustdoc/html/layout.rs index 71d8665f3b3..ae0bd1aafa8 100644 --- a/src/librustdoc/html/layout.rs +++ b/src/librustdoc/html/layout.rs @@ -44,7 +44,7 @@ pub fn render( \ \ \ - \ + \ {title}\ \ Symbol { - self.ident().unwrap_or(Ident.invalid()).name + self.ident().unwrap_or(Ident::invalid()).name } // #[attribute(name = "value")] diff --git a/src/libsyntax/ext/tt/macro_rules.rs b/src/libsyntax/ext/tt/macro_rules.rs index 8adee4be75f..37c49112dca 100644 --- a/src/libsyntax/ext/tt/macro_rules.rs +++ b/src/libsyntax/ext/tt/macro_rules.rs @@ -13,7 +13,7 @@ use crate::parse::{Directory, ParseSess}; use crate::parse::parser::Parser; use crate::parse::token::{self, NtTT}; use crate::parse::token::Token::*; -use crate::symbol::{Symbol, keywords, sym}; +use crate::symbol::{Symbol, kw, sym}; use crate::tokenstream::{DelimSpan, TokenStream, TokenTree}; use errors::FatalError; @@ -1046,8 +1046,8 @@ fn is_in_follow(tok: "ed::TokenTree, frag: &str) -> IsInFollow { match *tok { TokenTree::Token(_, ref tok) => match *tok { FatArrow | Comma | Eq | BinOp(token::Or) => IsInFollow::Yes, - Ident(i, false) if i.name == keywords::If.name() || - i.name == keywords::In.name() => IsInFollow::Yes, + Ident(i, false) if i.name == kw::If || + i.name == kw::In => IsInFollow::Yes, _ => IsInFollow::No(tokens), }, _ => IsInFollow::No(tokens), @@ -1064,8 +1064,8 @@ fn is_in_follow(tok: "ed::TokenTree, frag: &str) -> IsInFollow { OpenDelim(token::DelimToken::Bracket) | Comma | FatArrow | Colon | Eq | Gt | BinOp(token::Shr) | Semi | BinOp(token::Or) => IsInFollow::Yes, - Ident(i, false) if i.name == keywords::As.name() || - i.name == keywords::Where.name() => IsInFollow::Yes, + Ident(i, false) if i.name == kw::As || + i.name == kw::Where => IsInFollow::Yes, _ => IsInFollow::No(tokens), }, TokenTree::MetaVarDecl(_, _, frag) if frag.name == sym::block => @@ -1092,7 +1092,7 @@ fn is_in_follow(tok: "ed::TokenTree, frag: &str) -> IsInFollow { match *tok { TokenTree::Token(_, ref tok) => match *tok { Comma => IsInFollow::Yes, - Ident(i, is_raw) if is_raw || i.name != keywords::Priv.name() => + Ident(i, is_raw) if is_raw || i.name != kw::Priv => IsInFollow::Yes, ref tok => if tok.can_begin_type() { IsInFollow::Yes diff --git a/src/libsyntax/feature_gate.rs b/src/libsyntax/feature_gate.rs index 5b1a9bb739f..57a6656140f 100644 --- a/src/libsyntax/feature_gate.rs +++ b/src/libsyntax/feature_gate.rs @@ -22,7 +22,7 @@ use crate::source_map::Spanned; use crate::edition::{ALL_EDITIONS, Edition}; use crate::visit::{self, FnKind, Visitor}; use crate::parse::{token, ParseSess}; -use crate::symbol::{Symbol, keywords, sym}; +use crate::symbol::{Symbol, kw, sym}; use crate::tokenstream::TokenTree; use errors::{DiagnosticBuilder, Handler}; @@ -1948,7 +1948,7 @@ impl<'a> Visitor<'a> for PostExpansionVisitor<'a> { fn visit_item(&mut self, i: &'a ast::Item) { match i.node { ast::ItemKind::Const(_,_) => { - if i.ident.name == keywords::Underscore.name() { + if i.ident.name == kw::Underscore { gate_feature_post!(&self, underscore_const_names, i.span, "naming constants with `_` is unstable"); } diff --git a/src/libsyntax/parse/diagnostics.rs b/src/libsyntax/parse/diagnostics.rs index 1a2393be806..d48fcbbd672 100644 --- a/src/libsyntax/parse/diagnostics.rs +++ b/src/libsyntax/parse/diagnostics.rs @@ -6,7 +6,7 @@ use crate::parse::PResult; use crate::parse::Parser; use crate::print::pprust; use crate::ptr::P; -use crate::symbol::keywords; +use crate::symbol::kw; use crate::ThinVec; use errors::{Applicability, DiagnosticBuilder}; use syntax_pos::Span; @@ -405,7 +405,7 @@ impl<'a> Parser<'a> { /// Recover from `pub` keyword in places where it seems _reasonable_ but isn't valid. crate fn eat_bad_pub(&mut self) { - if self.token.is_keyword(keywords::Pub) { + if self.token.is_keyword(kw::Pub) { match self.parse_visibility(false) { Ok(vis) => { self.diagnostic() diff --git a/src/libsyntax/parse/literal.rs b/src/libsyntax/parse/literal.rs index 6db1a669493..f277f0522b8 100644 --- a/src/libsyntax/parse/literal.rs +++ b/src/libsyntax/parse/literal.rs @@ -43,8 +43,8 @@ impl LitKind { Some(match lit { token::Bool(i) => { - assert!(i == keywords::True.name() || i == keywords::False.name()); - LitKind::Bool(i == keywords::True.name()) + assert!(i == kw::True || i == kw::False); + LitKind::Bool(i == kw::True) } token::Byte(i) => { match unescape_byte(&i.as_str()) { @@ -156,8 +156,8 @@ impl LitKind { } LitKind::FloatUnsuffixed(symbol) => (token::Lit::Float(symbol), None), LitKind::Bool(value) => { - let kw = if value { keywords::True } else { keywords::False }; - (token::Lit::Bool(kw.name()), None) + let kw = if value { kw::True } else { kw::False }; + (token::Lit::Bool(kw), None) } LitKind::Err(val) => (token::Lit::Err(val), None), } @@ -175,8 +175,7 @@ impl Lit { diag: Option<(Span, &Handler)>, ) -> Option { let (token, suffix) = match *token { - token::Ident(ident, false) if ident.name == keywords::True.name() || - ident.name == keywords::False.name() => + token::Ident(ident, false) if ident.name == kw::True || ident.name == kw::False => (token::Bool(ident.name), None), token::Literal(token, suffix) => (token, suffix), diff --git a/src/libsyntax/test.rs b/src/libsyntax/test.rs index 206320f58b7..d1e11da4e7c 100644 --- a/src/libsyntax/test.rs +++ b/src/libsyntax/test.rs @@ -215,7 +215,7 @@ fn mk_reexport_mod(cx: &mut TestCtxt<'_>, tests: Vec, tested_submods: Vec<(Ident, Ident)>) -> (P, Ident) { - let super_ = Ident::with_empty_ctxt(keywords::Super.name()); + let super_ = Ident::with_empty_ctxt(kw::Super); let items = tests.into_iter().map(|r| { cx.ext_cx.item_use_simple(DUMMY_SP, dummy_spanned(ast::VisibilityKind::Public), diff --git a/src/libsyntax_pos/symbol.rs b/src/libsyntax_pos/symbol.rs index f9f0b097f7a..070bb1d8ef7 100644 --- a/src/libsyntax_pos/symbol.rs +++ b/src/libsyntax_pos/symbol.rs @@ -951,6 +951,11 @@ impl Symbol { fn is_unused_keyword_2018(self) -> bool { self >= kw::Async && self <= kw::Try } + + /// Used for sanity checking rustdoc keyword sections. + pub fn is_doc_keyword(self) -> bool { + self <= kw::Union + } } impl Ident {