diff options
Diffstat (limited to 'src/libsyntax/ext')
| -rw-r--r-- | src/libsyntax/ext/base.rs | 85 | ||||
| -rw-r--r-- | src/libsyntax/ext/build.rs | 19 | ||||
| -rw-r--r-- | src/libsyntax/ext/derive.rs | 19 | ||||
| -rw-r--r-- | src/libsyntax/ext/expand.rs | 49 | ||||
| -rw-r--r-- | src/libsyntax/ext/placeholders.rs | 23 | ||||
| -rw-r--r-- | src/libsyntax/ext/source_util.rs | 41 | ||||
| -rw-r--r-- | src/libsyntax/ext/tt/macro_parser.rs | 31 | ||||
| -rw-r--r-- | src/libsyntax/ext/tt/macro_rules.rs | 58 | ||||
| -rw-r--r-- | src/libsyntax/ext/tt/quoted.rs | 19 | ||||
| -rw-r--r-- | src/libsyntax/ext/tt/transcribe.rs | 23 |
10 files changed, 188 insertions, 179 deletions
diff --git a/src/libsyntax/ext/base.rs b/src/libsyntax/ext/base.rs index b53068f5bc2..465b53184dc 100644 --- a/src/libsyntax/ext/base.rs +++ b/src/libsyntax/ext/base.rs @@ -1,28 +1,29 @@ -pub use self::SyntaxExtension::*; - -use ast::{self, Attribute, Name, PatKind, MetaItem}; -use attr::HasAttrs; -use source_map::{SourceMap, Spanned, respan}; +pub use SyntaxExtension::*; + +use crate::ast::{self, Attribute, Name, PatKind, MetaItem}; +use crate::attr::HasAttrs; +use crate::source_map::{SourceMap, Spanned, respan}; +use crate::edition::Edition; +use crate::errors::{DiagnosticBuilder, DiagnosticId}; +use crate::ext::expand::{self, AstFragment, Invocation}; +use crate::ext::hygiene::{self, Mark, SyntaxContext, Transparency}; +use crate::mut_visit::{self, MutVisitor}; +use crate::parse::{self, parser, DirectoryOwnership}; +use crate::parse::token; +use crate::ptr::P; +use crate::symbol::{keywords, Ident, Symbol}; +use crate::ThinVec; +use crate::tokenstream::{self, TokenStream}; + +use smallvec::{smallvec, SmallVec}; use syntax_pos::{Span, MultiSpan, DUMMY_SP}; -use edition::Edition; -use errors::{DiagnosticBuilder, DiagnosticId}; -use ext::expand::{self, AstFragment, Invocation}; -use ext::hygiene::{self, Mark, SyntaxContext, Transparency}; -use mut_visit::{self, MutVisitor}; -use parse::{self, parser, DirectoryOwnership}; -use parse::token; -use ptr::P; -use smallvec::SmallVec; -use symbol::{keywords, Ident, Symbol}; -use ThinVec; use rustc_data_structures::fx::FxHashMap; +use rustc_data_structures::sync::{self, Lrc}; use std::iter; use std::path::PathBuf; use std::rc::Rc; -use rustc_data_structures::sync::{self, Lrc}; use std::default::Default; -use tokenstream::{self, TokenStream}; #[derive(Debug,Clone)] @@ -139,7 +140,7 @@ impl Annotatable { // A more flexible ItemDecorator. pub trait MultiItemDecorator { fn expand(&self, - ecx: &mut ExtCtxt, + ecx: &mut ExtCtxt<'_>, sp: Span, meta_item: &ast::MetaItem, item: &Annotatable, @@ -147,10 +148,10 @@ pub trait MultiItemDecorator { } impl<F> MultiItemDecorator for F - where F : Fn(&mut ExtCtxt, Span, &ast::MetaItem, &Annotatable, &mut dyn FnMut(Annotatable)) + where F : Fn(&mut ExtCtxt<'_>, Span, &ast::MetaItem, &Annotatable, &mut dyn FnMut(Annotatable)) { fn expand(&self, - ecx: &mut ExtCtxt, + ecx: &mut ExtCtxt<'_>, sp: Span, meta_item: &ast::MetaItem, item: &Annotatable, @@ -163,7 +164,7 @@ impl<F> MultiItemDecorator for F // FIXME Decorators should follow the same pattern too. pub trait MultiItemModifier { fn expand(&self, - ecx: &mut ExtCtxt, + ecx: &mut ExtCtxt<'_>, span: Span, meta_item: &ast::MetaItem, item: Annotatable) @@ -171,11 +172,11 @@ pub trait MultiItemModifier { } impl<F, T> MultiItemModifier for F - where F: Fn(&mut ExtCtxt, Span, &ast::MetaItem, Annotatable) -> T, + where F: Fn(&mut ExtCtxt<'_>, Span, &ast::MetaItem, Annotatable) -> T, T: Into<Vec<Annotatable>>, { fn expand(&self, - ecx: &mut ExtCtxt, + ecx: &mut ExtCtxt<'_>, span: Span, meta_item: &ast::MetaItem, item: Annotatable) @@ -192,7 +193,7 @@ impl Into<Vec<Annotatable>> for Annotatable { pub trait ProcMacro { fn expand<'cx>(&self, - ecx: &'cx mut ExtCtxt, + ecx: &'cx mut ExtCtxt<'_>, span: Span, ts: TokenStream) -> TokenStream; @@ -202,7 +203,7 @@ impl<F> ProcMacro for F where F: Fn(TokenStream) -> TokenStream { fn expand<'cx>(&self, - _ecx: &'cx mut ExtCtxt, + _ecx: &'cx mut ExtCtxt<'_>, _span: Span, ts: TokenStream) -> TokenStream { @@ -213,7 +214,7 @@ impl<F> ProcMacro for F pub trait AttrProcMacro { fn expand<'cx>(&self, - ecx: &'cx mut ExtCtxt, + ecx: &'cx mut ExtCtxt<'_>, span: Span, annotation: TokenStream, annotated: TokenStream) @@ -224,7 +225,7 @@ impl<F> AttrProcMacro for F where F: Fn(TokenStream, TokenStream) -> TokenStream { fn expand<'cx>(&self, - _ecx: &'cx mut ExtCtxt, + _ecx: &'cx mut ExtCtxt<'_>, _span: Span, annotation: TokenStream, annotated: TokenStream) @@ -238,7 +239,7 @@ impl<F> AttrProcMacro for F pub trait TTMacroExpander { fn expand<'cx>( &self, - ecx: &'cx mut ExtCtxt, + ecx: &'cx mut ExtCtxt<'_>, span: Span, input: TokenStream, def_span: Option<Span>, @@ -246,16 +247,16 @@ pub trait TTMacroExpander { } pub type MacroExpanderFn = - for<'cx> fn(&'cx mut ExtCtxt, Span, &[tokenstream::TokenTree]) + for<'cx> fn(&'cx mut ExtCtxt<'_>, Span, &[tokenstream::TokenTree]) -> Box<dyn MacResult+'cx>; impl<F> TTMacroExpander for F - where F: for<'cx> Fn(&'cx mut ExtCtxt, Span, &[tokenstream::TokenTree]) + where F: for<'cx> Fn(&'cx mut ExtCtxt<'_>, Span, &[tokenstream::TokenTree]) -> Box<dyn MacResult+'cx> { fn expand<'cx>( &self, - ecx: &'cx mut ExtCtxt, + ecx: &'cx mut ExtCtxt<'_>, span: Span, input: TokenStream, _def_span: Option<Span>, @@ -286,7 +287,7 @@ impl<F> TTMacroExpander for F pub trait IdentMacroExpander { fn expand<'cx>(&self, - cx: &'cx mut ExtCtxt, + cx: &'cx mut ExtCtxt<'_>, sp: Span, ident: ast::Ident, token_tree: Vec<tokenstream::TokenTree>) @@ -294,15 +295,15 @@ pub trait IdentMacroExpander { } pub type IdentMacroExpanderFn = - for<'cx> fn(&'cx mut ExtCtxt, Span, ast::Ident, Vec<tokenstream::TokenTree>) + for<'cx> fn(&'cx mut ExtCtxt<'_>, Span, ast::Ident, Vec<tokenstream::TokenTree>) -> Box<dyn MacResult+'cx>; impl<F> IdentMacroExpander for F - where F : for<'cx> Fn(&'cx mut ExtCtxt, Span, ast::Ident, + where F : for<'cx> Fn(&'cx mut ExtCtxt<'_>, Span, ast::Ident, Vec<tokenstream::TokenTree>) -> Box<dyn MacResult+'cx> { fn expand<'cx>(&self, - cx: &'cx mut ExtCtxt, + cx: &'cx mut ExtCtxt<'_>, sp: Span, ident: ast::Ident, token_tree: Vec<tokenstream::TokenTree>) @@ -567,7 +568,7 @@ impl MacResult for DummyResult { } pub type BuiltinDeriveFn = - for<'cx> fn(&'cx mut ExtCtxt, Span, &MetaItem, &Annotatable, &mut dyn FnMut(Annotatable)); + for<'cx> fn(&'cx mut ExtCtxt<'_>, Span, &MetaItem, &Annotatable, &mut dyn FnMut(Annotatable)); /// Represents different kinds of macro invocations that can be resolved. #[derive(Clone, Copy, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug)] @@ -979,7 +980,7 @@ impl<'a> ExtCtxt<'a> { /// emitting `err_msg` if `expr` is not a string literal. This does not stop /// compilation on error, merely emits a non-fatal error and returns None. pub fn expr_to_spanned_string<'a>( - cx: &'a mut ExtCtxt, + cx: &'a mut ExtCtxt<'_>, mut expr: P<ast::Expr>, err_msg: &str, ) -> Result<Spanned<(Symbol, ast::StrStyle)>, Option<DiagnosticBuilder<'a>>> { @@ -998,7 +999,7 @@ pub fn expr_to_spanned_string<'a>( }) } -pub fn expr_to_string(cx: &mut ExtCtxt, expr: P<ast::Expr>, err_msg: &str) +pub fn expr_to_string(cx: &mut ExtCtxt<'_>, expr: P<ast::Expr>, err_msg: &str) -> Option<(Symbol, ast::StrStyle)> { expr_to_spanned_string(cx, expr, err_msg) .map_err(|err| err.map(|mut err| err.emit())) @@ -1011,7 +1012,7 @@ pub fn expr_to_string(cx: &mut ExtCtxt, expr: P<ast::Expr>, err_msg: &str) /// compilation should call /// `cx.parse_sess.span_diagnostic.abort_if_errors()` (this should be /// done as rarely as possible). -pub fn check_zero_tts(cx: &ExtCtxt, +pub fn check_zero_tts(cx: &ExtCtxt<'_>, sp: Span, tts: &[tokenstream::TokenTree], name: &str) { @@ -1022,7 +1023,7 @@ pub fn check_zero_tts(cx: &ExtCtxt, /// Interpreting `tts` as a comma-separated sequence of expressions, /// expect exactly one string literal, or emit an error and return None. -pub fn get_single_str_from_tts(cx: &mut ExtCtxt, +pub fn get_single_str_from_tts(cx: &mut ExtCtxt<'_>, sp: Span, tts: &[tokenstream::TokenTree], name: &str) @@ -1045,7 +1046,7 @@ pub fn get_single_str_from_tts(cx: &mut ExtCtxt, /// Extract comma-separated expressions from `tts`. If there is a /// parsing error, emit a non-fatal error and return None. -pub fn get_exprs_from_tts(cx: &mut ExtCtxt, +pub fn get_exprs_from_tts(cx: &mut ExtCtxt<'_>, sp: Span, tts: &[tokenstream::TokenTree]) -> Option<Vec<P<ast::Expr>>> { let mut p = cx.new_parser_from_tts(tts); diff --git a/src/libsyntax/ext/build.rs b/src/libsyntax/ext/build.rs index a8eec1a74dd..1e83f6c03ec 100644 --- a/src/libsyntax/ext/build.rs +++ b/src/libsyntax/ext/build.rs @@ -1,17 +1,18 @@ +use crate::ast::{self, Ident, Generics, Expr, BlockCheckMode, UnOp, PatKind}; +use crate::attr; +use crate::source_map::{dummy_spanned, respan, Spanned}; +use crate::ext::base::ExtCtxt; +use crate::ptr::P; +use crate::symbol::{Symbol, keywords}; +use crate::ThinVec; + use rustc_target::spec::abi::Abi; -use ast::{self, Ident, Generics, Expr, BlockCheckMode, UnOp, PatKind}; -use attr; use syntax_pos::{Pos, Span, DUMMY_SP}; -use source_map::{dummy_spanned, respan, Spanned}; -use ext::base::ExtCtxt; -use ptr::P; -use symbol::{Symbol, keywords}; -use ThinVec; // Transitional re-exports so qquote can find the paths it is looking for mod syntax { - pub use ext; - pub use parse; + pub use crate::ext; + pub use crate::parse; } pub trait AstBuilder { diff --git a/src/libsyntax/ext/derive.rs b/src/libsyntax/ext/derive.rs index fa8cf6c496a..50cec9e7908 100644 --- a/src/libsyntax/ext/derive.rs +++ b/src/libsyntax/ext/derive.rs @@ -1,15 +1,16 @@ -use attr::HasAttrs; -use ast; -use source_map::{hygiene, ExpnInfo, ExpnFormat}; -use ext::base::ExtCtxt; -use ext::build::AstBuilder; -use parse::parser::PathStyle; -use symbol::Symbol; +use crate::attr::HasAttrs; +use crate::ast; +use crate::source_map::{hygiene, ExpnInfo, ExpnFormat}; +use crate::ext::base::ExtCtxt; +use crate::ext::build::AstBuilder; +use crate::parse::parser::PathStyle; +use crate::symbol::Symbol; + use syntax_pos::Span; use rustc_data_structures::fx::FxHashSet; -pub fn collect_derives(cx: &mut ExtCtxt, attrs: &mut Vec<ast::Attribute>) -> Vec<ast::Path> { +pub fn collect_derives(cx: &mut ExtCtxt<'_>, attrs: &mut Vec<ast::Attribute>) -> Vec<ast::Path> { let mut result = Vec::new(); attrs.retain(|attr| { if attr.path != "derive" { @@ -40,7 +41,7 @@ pub fn collect_derives(cx: &mut ExtCtxt, attrs: &mut Vec<ast::Attribute>) -> Vec result } -pub fn add_derived_markers<T>(cx: &mut ExtCtxt, span: Span, traits: &[ast::Path], item: &mut T) +pub fn add_derived_markers<T>(cx: &mut ExtCtxt<'_>, span: Span, traits: &[ast::Path], item: &mut T) where T: HasAttrs, { let (mut names, mut pretty_name) = (FxHashSet::default(), "derive(".to_owned()); diff --git a/src/libsyntax/ext/expand.rs b/src/libsyntax/ext/expand.rs index a0ccce98659..89d59478a5d 100644 --- a/src/libsyntax/ext/expand.rs +++ b/src/libsyntax/ext/expand.rs @@ -1,27 +1,28 @@ -use ast::{self, Block, Ident, LitKind, NodeId, PatKind, Path}; -use ast::{MacStmtStyle, StmtKind, ItemKind}; -use attr::{self, HasAttrs}; -use source_map::{ExpnInfo, MacroBang, MacroAttribute, dummy_spanned, respan}; -use config::StripUnconfigured; -use errors::{Applicability, FatalError}; -use ext::base::*; -use ext::derive::{add_derived_markers, collect_derives}; -use ext::hygiene::{self, Mark, SyntaxContext}; -use ext::placeholders::{placeholder, PlaceholderExpander}; -use feature_gate::{self, Features, GateIssue, is_builtin_attr, emit_feature_err}; -use mut_visit::*; -use parse::{DirectoryOwnership, PResult, ParseSess}; -use parse::token::{self, Token}; -use parse::parser::Parser; -use ptr::P; -use smallvec::SmallVec; -use symbol::Symbol; -use symbol::keywords; +use crate::ast::{self, Block, Ident, LitKind, NodeId, PatKind, Path}; +use crate::ast::{MacStmtStyle, StmtKind, ItemKind}; +use crate::attr::{self, HasAttrs}; +use crate::source_map::{ExpnInfo, MacroBang, MacroAttribute, dummy_spanned, respan}; +use crate::config::StripUnconfigured; +use crate::errors::{Applicability, FatalError}; +use crate::ext::base::*; +use crate::ext::derive::{add_derived_markers, collect_derives}; +use crate::ext::hygiene::{self, Mark, SyntaxContext}; +use crate::ext::placeholders::{placeholder, PlaceholderExpander}; +use crate::feature_gate::{self, Features, GateIssue, is_builtin_attr, emit_feature_err}; +use crate::mut_visit::*; +use crate::parse::{DirectoryOwnership, PResult, ParseSess}; +use crate::parse::token::{self, Token}; +use crate::parse::parser::Parser; +use crate::ptr::P; +use crate::symbol::Symbol; +use crate::symbol::keywords; +use crate::tokenstream::{TokenStream, TokenTree}; +use crate::visit::{self, Visitor}; +use crate::util::map_in_place::MapInPlace; + +use smallvec::{smallvec, SmallVec}; use syntax_pos::{Span, DUMMY_SP, FileName}; use syntax_pos::hygiene::ExpnFormat; -use tokenstream::{TokenStream, TokenTree}; -use visit::{self, Visitor}; -use util::map_in_place::MapInPlace; use rustc_data_structures::fx::FxHashMap; use std::fs; @@ -129,8 +130,8 @@ macro_rules! ast_fragments { })*)* } - impl<'a> MacResult for ::ext::tt::macro_rules::ParserAnyMacro<'a> { - $(fn $make_ast(self: Box<::ext::tt::macro_rules::ParserAnyMacro<'a>>) + impl<'a> MacResult for crate::ext::tt::macro_rules::ParserAnyMacro<'a> { + $(fn $make_ast(self: Box<crate::ext::tt::macro_rules::ParserAnyMacro<'a>>) -> Option<$AstTy> { Some(self.make(AstFragmentKind::$Kind).$make_ast()) })* diff --git a/src/libsyntax/ext/placeholders.rs b/src/libsyntax/ext/placeholders.rs index 23b34c2660b..3e60dd81a3b 100644 --- a/src/libsyntax/ext/placeholders.rs +++ b/src/libsyntax/ext/placeholders.rs @@ -1,14 +1,15 @@ -use ast::{self, NodeId}; -use source_map::{DUMMY_SP, dummy_spanned}; -use ext::base::ExtCtxt; -use ext::expand::{AstFragment, AstFragmentKind}; -use ext::hygiene::Mark; -use tokenstream::TokenStream; -use mut_visit::*; -use ptr::P; -use smallvec::SmallVec; -use symbol::keywords; -use ThinVec; +use crate::ast::{self, NodeId}; +use crate::source_map::{DUMMY_SP, dummy_spanned}; +use crate::ext::base::ExtCtxt; +use crate::ext::expand::{AstFragment, AstFragmentKind}; +use crate::ext::hygiene::Mark; +use crate::tokenstream::TokenStream; +use crate::mut_visit::*; +use crate::ptr::P; +use crate::symbol::keywords; +use crate::ThinVec; + +use smallvec::{smallvec, SmallVec}; use rustc_data_structures::fx::FxHashMap; diff --git a/src/libsyntax/ext/source_util.rs b/src/libsyntax/ext/source_util.rs index e63042a4208..31a134b856d 100644 --- a/src/libsyntax/ext/source_util.rs +++ b/src/libsyntax/ext/source_util.rs @@ -1,15 +1,14 @@ -use ast; -use syntax_pos::{self, Pos, Span, FileName}; -use ext::base::*; -use ext::base; -use ext::build::AstBuilder; -use parse::{token, DirectoryOwnership}; -use parse; -use print::pprust; -use ptr::P; +use crate::ast; +use crate::ext::base::{self, *}; +use crate::ext::build::AstBuilder; +use crate::parse::{self, token, DirectoryOwnership}; +use crate::print::pprust; +use crate::ptr::P; +use crate::symbol::Symbol; +use crate::tokenstream; + use smallvec::SmallVec; -use symbol::Symbol; -use tokenstream; +use syntax_pos::{self, Pos, Span, FileName}; use std::fs; use std::io::ErrorKind; @@ -21,7 +20,7 @@ use rustc_data_structures::sync::Lrc; // a given file into the current one. /// line!(): expands to the current line number -pub fn expand_line(cx: &mut ExtCtxt, sp: Span, tts: &[tokenstream::TokenTree]) +pub fn expand_line(cx: &mut ExtCtxt<'_>, sp: Span, tts: &[tokenstream::TokenTree]) -> Box<dyn base::MacResult+'static> { base::check_zero_tts(cx, sp, tts, "line!"); @@ -32,7 +31,7 @@ pub fn expand_line(cx: &mut ExtCtxt, sp: Span, tts: &[tokenstream::TokenTree]) } /* column!(): expands to the current column number */ -pub fn expand_column(cx: &mut ExtCtxt, sp: Span, tts: &[tokenstream::TokenTree]) +pub fn expand_column(cx: &mut ExtCtxt<'_>, sp: Span, tts: &[tokenstream::TokenTree]) -> Box<dyn base::MacResult+'static> { base::check_zero_tts(cx, sp, tts, "column!"); @@ -43,7 +42,7 @@ pub fn expand_column(cx: &mut ExtCtxt, sp: Span, tts: &[tokenstream::TokenTree]) } /* __rust_unstable_column!(): expands to the current column number */ -pub fn expand_column_gated(cx: &mut ExtCtxt, sp: Span, tts: &[tokenstream::TokenTree]) +pub fn expand_column_gated(cx: &mut ExtCtxt<'_>, sp: Span, tts: &[tokenstream::TokenTree]) -> Box<dyn base::MacResult+'static> { if sp.allows_unstable() { expand_column(cx, sp, tts) @@ -55,7 +54,7 @@ pub fn expand_column_gated(cx: &mut ExtCtxt, sp: Span, tts: &[tokenstream::Token /// file!(): expands to the current filename */ /// The source_file (`loc.file`) contains a bunch more information we could spit /// out if we wanted. -pub fn expand_file(cx: &mut ExtCtxt, sp: Span, tts: &[tokenstream::TokenTree]) +pub fn expand_file(cx: &mut ExtCtxt<'_>, sp: Span, tts: &[tokenstream::TokenTree]) -> Box<dyn base::MacResult+'static> { base::check_zero_tts(cx, sp, tts, "file!"); @@ -64,13 +63,13 @@ pub fn expand_file(cx: &mut ExtCtxt, sp: Span, tts: &[tokenstream::TokenTree]) base::MacEager::expr(cx.expr_str(topmost, Symbol::intern(&loc.file.name.to_string()))) } -pub fn expand_stringify(cx: &mut ExtCtxt, sp: Span, tts: &[tokenstream::TokenTree]) +pub fn expand_stringify(cx: &mut ExtCtxt<'_>, sp: Span, tts: &[tokenstream::TokenTree]) -> Box<dyn base::MacResult+'static> { let s = pprust::tts_to_string(tts); base::MacEager::expr(cx.expr_str(sp, Symbol::intern(&s))) } -pub fn expand_mod(cx: &mut ExtCtxt, sp: Span, tts: &[tokenstream::TokenTree]) +pub fn expand_mod(cx: &mut ExtCtxt<'_>, sp: Span, tts: &[tokenstream::TokenTree]) -> Box<dyn base::MacResult+'static> { base::check_zero_tts(cx, sp, tts, "module_path!"); let mod_path = &cx.current_expansion.module.mod_path; @@ -82,7 +81,7 @@ pub fn expand_mod(cx: &mut ExtCtxt, sp: Span, tts: &[tokenstream::TokenTree]) /// include! : parse the given file as an expr /// This is generally a bad idea because it's going to behave /// unhygienically. -pub fn expand_include<'cx>(cx: &'cx mut ExtCtxt, sp: Span, tts: &[tokenstream::TokenTree]) +pub fn expand_include<'cx>(cx: &'cx mut ExtCtxt<'_>, sp: Span, tts: &[tokenstream::TokenTree]) -> Box<dyn base::MacResult+'cx> { let file = match get_single_str_from_tts(cx, sp, tts, "include!") { Some(f) => f, @@ -120,7 +119,7 @@ pub fn expand_include<'cx>(cx: &'cx mut ExtCtxt, sp: Span, tts: &[tokenstream::T } // include_str! : read the given file, insert it as a literal string expr -pub fn expand_include_str(cx: &mut ExtCtxt, sp: Span, tts: &[tokenstream::TokenTree]) +pub fn expand_include_str(cx: &mut ExtCtxt<'_>, sp: Span, tts: &[tokenstream::TokenTree]) -> Box<dyn base::MacResult+'static> { let file = match get_single_str_from_tts(cx, sp, tts, "include_str!") { Some(f) => f, @@ -148,7 +147,7 @@ pub fn expand_include_str(cx: &mut ExtCtxt, sp: Span, tts: &[tokenstream::TokenT } } -pub fn expand_include_bytes(cx: &mut ExtCtxt, sp: Span, tts: &[tokenstream::TokenTree]) +pub fn expand_include_bytes(cx: &mut ExtCtxt<'_>, sp: Span, tts: &[tokenstream::TokenTree]) -> Box<dyn base::MacResult+'static> { let file = match get_single_str_from_tts(cx, sp, tts, "include_bytes!") { Some(f) => f, @@ -178,7 +177,7 @@ pub fn expand_include_bytes(cx: &mut ExtCtxt, sp: Span, tts: &[tokenstream::Toke // resolve a file-system path to an absolute file-system path (if it // isn't already) -fn res_rel_file(cx: &mut ExtCtxt, sp: syntax_pos::Span, arg: String) -> PathBuf { +fn res_rel_file(cx: &mut ExtCtxt<'_>, sp: syntax_pos::Span, arg: String) -> PathBuf { let arg = PathBuf::from(arg); // Relative paths are resolved relative to the file in which they are found // after macro expansion (that is, they are unhygienic). diff --git a/src/libsyntax/ext/tt/macro_parser.rs b/src/libsyntax/ext/tt/macro_parser.rs index b4003ac729a..a9000b89fb4 100644 --- a/src/libsyntax/ext/tt/macro_parser.rs +++ b/src/libsyntax/ext/tt/macro_parser.rs @@ -70,21 +70,22 @@ //! eof: [a $( a )* a b ยท] //! ``` -pub use self::NamedMatch::*; -pub use self::ParseResult::*; -use self::TokenTreeOrTokenTreeSlice::*; - -use ast::Ident; +pub use NamedMatch::*; +pub use ParseResult::*; +use TokenTreeOrTokenTreeSlice::*; + +use crate::ast::Ident; +use crate::errors::FatalError; +use crate::ext::tt::quoted::{self, TokenTree}; +use crate::parse::{Directory, ParseSess}; +use crate::parse::parser::{Parser, PathStyle}; +use crate::parse::token::{self, DocComment, Nonterminal, Token}; +use crate::print::pprust; +use crate::symbol::keywords; +use crate::tokenstream::{DelimSpan, TokenStream}; + +use smallvec::{smallvec, SmallVec}; use syntax_pos::{self, Span}; -use errors::FatalError; -use ext::tt::quoted::{self, TokenTree}; -use parse::{Directory, ParseSess}; -use parse::parser::{Parser, PathStyle}; -use parse::token::{self, DocComment, Nonterminal, Token}; -use print::pprust; -use smallvec::SmallVec; -use symbol::keywords; -use tokenstream::{DelimSpan, TokenStream}; use rustc_data_structures::fx::FxHashMap; use std::collections::hash_map::Entry::{Occupied, Vacant}; @@ -649,7 +650,7 @@ pub fn parse( sess: &ParseSess, tts: TokenStream, ms: &[TokenTree], - directory: Option<Directory>, + directory: Option<Directory<'_>>, recurse_into_modules: bool, ) -> NamedParseResult { // Create a parser that can be used for the "black box" parts. diff --git a/src/libsyntax/ext/tt/macro_rules.rs b/src/libsyntax/ext/tt/macro_rules.rs index 176575b67ea..b3ecaeaedbb 100644 --- a/src/libsyntax/ext/tt/macro_rules.rs +++ b/src/libsyntax/ext/tt/macro_rules.rs @@ -1,29 +1,31 @@ -use {ast, attr}; +use crate::{ast, attr}; +use crate::edition::Edition; +use crate::errors::FatalError; +use crate::ext::base::{DummyResult, ExtCtxt, MacResult, SyntaxExtension}; +use crate::ext::base::{NormalTT, TTMacroExpander}; +use crate::ext::expand::{AstFragment, AstFragmentKind}; +use crate::ext::tt::macro_parser::{Success, Error, Failure}; +use crate::ext::tt::macro_parser::{MatchedSeq, MatchedNonterminal}; +use crate::ext::tt::macro_parser::{parse, parse_failure_msg}; +use crate::ext::tt::quoted; +use crate::ext::tt::transcribe::transcribe; +use crate::feature_gate::Features; +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; +use crate::tokenstream::{DelimSpan, TokenStream, TokenTree}; + use syntax_pos::{Span, DUMMY_SP}; -use edition::Edition; -use errors::FatalError; -use ext::base::{DummyResult, ExtCtxt, MacResult, SyntaxExtension}; -use ext::base::{NormalTT, TTMacroExpander}; -use ext::expand::{AstFragment, AstFragmentKind}; -use ext::tt::macro_parser::{Success, Error, Failure}; -use ext::tt::macro_parser::{MatchedSeq, MatchedNonterminal}; -use ext::tt::macro_parser::{parse, parse_failure_msg}; -use ext::tt::quoted; -use ext::tt::transcribe::transcribe; -use feature_gate::Features; -use parse::{Directory, ParseSess}; -use parse::parser::Parser; -use parse::token::{self, NtTT}; -use parse::token::Token::*; -use symbol::Symbol; -use tokenstream::{DelimSpan, TokenStream, TokenTree}; +use log::debug; use rustc_data_structures::fx::FxHashMap; use std::borrow::Cow; use std::collections::hash_map::Entry; use rustc_data_structures::sync::Lrc; -use errors::Applicability; +use crate::errors::Applicability; const VALID_FRAGMENT_NAMES_MSG: &str = "valid fragment specifiers are \ `ident`, `block`, `stmt`, `expr`, `pat`, `ty`, `lifetime`, `literal`, \ @@ -91,7 +93,7 @@ struct MacroRulesMacroExpander { impl TTMacroExpander for MacroRulesMacroExpander { fn expand<'cx>( &self, - cx: &'cx mut ExtCtxt, + cx: &'cx mut ExtCtxt<'_>, sp: Span, input: TokenStream, def_span: Option<Span>, @@ -109,13 +111,13 @@ impl TTMacroExpander for MacroRulesMacroExpander { } } -fn trace_macros_note(cx: &mut ExtCtxt, sp: Span, message: String) { +fn trace_macros_note(cx: &mut ExtCtxt<'_>, sp: Span, message: String) { let sp = sp.macro_backtrace().last().map(|trace| trace.call_site).unwrap_or(sp); cx.expansions.entry(sp).or_default().push(message); } /// Given `lhses` and `rhses`, this is the new macro we create -fn generic_extension<'cx>(cx: &'cx mut ExtCtxt, +fn generic_extension<'cx>(cx: &'cx mut ExtCtxt<'_>, sp: Span, def_span: Option<Span>, name: ast::Ident, @@ -423,7 +425,7 @@ fn check_lhs_nt_follows(sess: &ParseSess, /// Check that the lhs contains no repetition which could match an empty token /// tree, because then the matcher would hang indefinitely. fn check_lhs_no_empty_seq(sess: &ParseSess, tts: &[quoted::TokenTree]) -> bool { - use self::quoted::TokenTree; + use quoted::TokenTree; for tt in tts { match *tt { TokenTree::Token(..) | TokenTree::MetaVar(..) | TokenTree::MetaVarDecl(..) => (), @@ -497,7 +499,7 @@ struct FirstSets { impl FirstSets { fn new(tts: &[quoted::TokenTree]) -> FirstSets { - use self::quoted::TokenTree; + use quoted::TokenTree; let mut sets = FirstSets { first: FxHashMap::default() }; build_recur(&mut sets, tts); @@ -567,7 +569,7 @@ impl FirstSets { // walks forward over `tts` until all potential FIRST tokens are // identified. fn first(&self, tts: &[quoted::TokenTree]) -> TokenSet { - use self::quoted::TokenTree; + use quoted::TokenTree; let mut first = TokenSet::empty(); for tt in tts.iter() { @@ -721,7 +723,7 @@ fn check_matcher_core(sess: &ParseSess, first_sets: &FirstSets, matcher: &[quoted::TokenTree], follow: &TokenSet) -> TokenSet { - use self::quoted::TokenTree; + use quoted::TokenTree; let mut last = TokenSet::empty(); @@ -940,7 +942,7 @@ enum IsInFollow { /// separator. // when changing this do not forget to update doc/book/macros.md! fn is_in_follow(tok: "ed::TokenTree, frag: &str) -> IsInFollow { - use self::quoted::TokenTree; + use quoted::TokenTree; if let TokenTree::Token(_, token::CloseDelim(_)) = *tok { // closing a token tree can never be matched by any fragment; @@ -1072,7 +1074,7 @@ fn is_legal_fragment_specifier(_sess: &ParseSess, fn quoted_tt_to_string(tt: "ed::TokenTree) -> String { match *tt { - quoted::TokenTree::Token(_, ref tok) => ::print::pprust::token_to_string(tok), + quoted::TokenTree::Token(_, ref tok) => crate::print::pprust::token_to_string(tok), quoted::TokenTree::MetaVar(_, name) => format!("${}", name), quoted::TokenTree::MetaVarDecl(_, name, kind) => format!("${}:{}", name, kind), _ => panic!("unexpected quoted::TokenTree::{{Sequence or Delimited}} \ diff --git a/src/libsyntax/ext/tt/quoted.rs b/src/libsyntax/ext/tt/quoted.rs index b56871a1885..6c3cf3e6312 100644 --- a/src/libsyntax/ext/tt/quoted.rs +++ b/src/libsyntax/ext/tt/quoted.rs @@ -1,13 +1,14 @@ -use ast::NodeId; -use early_buffered_lints::BufferedEarlyLintId; -use ext::tt::macro_parser; -use feature_gate::Features; -use parse::{token, ParseSess}; -use print::pprust; -use symbol::keywords; +use crate::ast::NodeId; +use crate::early_buffered_lints::BufferedEarlyLintId; +use crate::ext::tt::macro_parser; +use crate::feature_gate::Features; +use crate::parse::{token, ParseSess}; +use crate::print::pprust; +use crate::tokenstream::{self, DelimSpan}; +use crate::ast; +use crate::symbol::keywords; + use syntax_pos::{edition::Edition, BytePos, Span}; -use tokenstream::{self, DelimSpan}; -use ast; use rustc_data_structures::sync::Lrc; use std::iter::Peekable; diff --git a/src/libsyntax/ext/tt/transcribe.rs b/src/libsyntax/ext/tt/transcribe.rs index 08f34b22328..b9a50cc6488 100644 --- a/src/libsyntax/ext/tt/transcribe.rs +++ b/src/libsyntax/ext/tt/transcribe.rs @@ -1,13 +1,14 @@ -use ast::Ident; -use ext::base::ExtCtxt; -use ext::expand::Marker; -use ext::tt::macro_parser::{NamedMatch, MatchedSeq, MatchedNonterminal}; -use ext::tt::quoted; -use mut_visit::noop_visit_tt; -use parse::token::{self, Token, NtTT}; -use smallvec::SmallVec; +use crate::ast::Ident; +use crate::ext::base::ExtCtxt; +use crate::ext::expand::Marker; +use crate::ext::tt::macro_parser::{NamedMatch, MatchedSeq, MatchedNonterminal}; +use crate::ext::tt::quoted; +use crate::mut_visit::noop_visit_tt; +use crate::parse::token::{self, Token, NtTT}; +use crate::tokenstream::{DelimSpan, TokenStream, TokenTree, TreeAndJoint}; + +use smallvec::{smallvec, SmallVec}; use syntax_pos::DUMMY_SP; -use tokenstream::{DelimSpan, TokenStream, TokenTree, TreeAndJoint}; use rustc_data_structures::fx::FxHashMap; use rustc_data_structures::sync::Lrc; @@ -56,7 +57,7 @@ impl Iterator for Frame { /// This can do Macro-By-Example transcription. On the other hand, if /// `src` contains no `TokenTree::{Sequence, MetaVar, MetaVarDecl}`s, `interp` can /// (and should) be None. -pub fn transcribe(cx: &ExtCtxt, +pub fn transcribe(cx: &ExtCtxt<'_>, interp: Option<FxHashMap<Ident, Rc<NamedMatch>>>, src: Vec<quoted::TokenTree>) -> TokenStream { @@ -230,7 +231,7 @@ fn lockstep_iter_size(tree: "ed::TokenTree, interpolations: &FxHashMap<Ident, Rc<NamedMatch>>, repeats: &[(usize, usize)]) -> LockstepIterSize { - use self::quoted::TokenTree; + use quoted::TokenTree; match *tree { TokenTree::Delimited(_, ref delimed) => { delimed.tts.iter().fold(LockstepIterSize::Unconstrained, |size, tt| { |
