Rollup merge of #52224 - ljedrz:dyn_libsyntax, r=oli-obk
Deny bare trait objects in in src/libsyntax Enforce `#![deny(bare_trait_objects)]` in `src/libsyntax`.
This commit is contained in:
commit
2d49909f45
|
@ -131,7 +131,7 @@ pub(super) struct CodeMapFiles {
|
|||
|
||||
pub struct CodeMap {
|
||||
pub(super) files: Lock<CodeMapFiles>,
|
||||
file_loader: Box<FileLoader + Sync + Send>,
|
||||
file_loader: Box<dyn FileLoader + Sync + Send>,
|
||||
// This is used to apply the file path remapping as specified via
|
||||
// --remap-path-prefix to all FileMaps allocated within this CodeMap.
|
||||
path_mapping: FilePathMapping,
|
||||
|
@ -162,7 +162,7 @@ impl CodeMap {
|
|||
|
||||
}
|
||||
|
||||
pub fn with_file_loader(file_loader: Box<FileLoader + Sync + Send>,
|
||||
pub fn with_file_loader(file_loader: Box<dyn FileLoader + Sync + Send>,
|
||||
path_mapping: FilePathMapping)
|
||||
-> CodeMap {
|
||||
CodeMap {
|
||||
|
|
|
@ -73,7 +73,7 @@ fn get_metadata_path(directory: PathBuf, name: &str) -> PathBuf {
|
|||
/// For our current purposes the prefix is the target architecture and the name is a crate name.
|
||||
/// If an error occurs steps will be taken to ensure that no file is created.
|
||||
pub fn output_metadata(ecx: &ExtCtxt, prefix: &str, name: &str, err_map: &ErrorMap)
|
||||
-> Result<(), Box<Error>>
|
||||
-> Result<(), Box<dyn Error>>
|
||||
{
|
||||
// Create the directory to place the file in.
|
||||
let metadata_dir = get_metadata_dir(prefix);
|
||||
|
|
|
@ -42,7 +42,7 @@ pub type ErrorMap = BTreeMap<Name, ErrorInfo>;
|
|||
pub fn expand_diagnostic_used<'cx>(ecx: &'cx mut ExtCtxt,
|
||||
span: Span,
|
||||
token_tree: &[TokenTree])
|
||||
-> Box<MacResult+'cx> {
|
||||
-> Box<dyn MacResult+'cx> {
|
||||
let code = match (token_tree.len(), token_tree.get(0)) {
|
||||
(1, Some(&TokenTree::Token(_, token::Ident(code, _)))) => code,
|
||||
_ => unreachable!()
|
||||
|
@ -75,7 +75,7 @@ pub fn expand_diagnostic_used<'cx>(ecx: &'cx mut ExtCtxt,
|
|||
pub fn expand_register_diagnostic<'cx>(ecx: &'cx mut ExtCtxt,
|
||||
span: Span,
|
||||
token_tree: &[TokenTree])
|
||||
-> Box<MacResult+'cx> {
|
||||
-> Box<dyn MacResult+'cx> {
|
||||
let (code, description) = match (
|
||||
token_tree.len(),
|
||||
token_tree.get(0),
|
||||
|
@ -145,7 +145,7 @@ pub fn expand_register_diagnostic<'cx>(ecx: &'cx mut ExtCtxt,
|
|||
pub fn expand_build_diagnostic_array<'cx>(ecx: &'cx mut ExtCtxt,
|
||||
span: Span,
|
||||
token_tree: &[TokenTree])
|
||||
-> Box<MacResult+'cx> {
|
||||
-> Box<dyn MacResult+'cx> {
|
||||
assert_eq!(token_tree.len(), 3);
|
||||
let (crate_name, name) = match (&token_tree[0], &token_tree[2]) {
|
||||
(
|
||||
|
|
|
@ -153,18 +153,18 @@ pub trait MultiItemDecorator {
|
|||
sp: Span,
|
||||
meta_item: &ast::MetaItem,
|
||||
item: &Annotatable,
|
||||
push: &mut FnMut(Annotatable));
|
||||
push: &mut dyn FnMut(Annotatable));
|
||||
}
|
||||
|
||||
impl<F> MultiItemDecorator for F
|
||||
where F : Fn(&mut ExtCtxt, Span, &ast::MetaItem, &Annotatable, &mut FnMut(Annotatable))
|
||||
where F : Fn(&mut ExtCtxt, Span, &ast::MetaItem, &Annotatable, &mut dyn FnMut(Annotatable))
|
||||
{
|
||||
fn expand(&self,
|
||||
ecx: &mut ExtCtxt,
|
||||
sp: Span,
|
||||
meta_item: &ast::MetaItem,
|
||||
item: &Annotatable,
|
||||
push: &mut FnMut(Annotatable)) {
|
||||
push: &mut dyn FnMut(Annotatable)) {
|
||||
(*self)(ecx, sp, meta_item, item, push)
|
||||
}
|
||||
}
|
||||
|
@ -247,18 +247,19 @@ impl<F> AttrProcMacro for F
|
|||
/// Represents a thing that maps token trees to Macro Results
|
||||
pub trait TTMacroExpander {
|
||||
fn expand<'cx>(&self, ecx: &'cx mut ExtCtxt, span: Span, input: TokenStream)
|
||||
-> Box<MacResult+'cx>;
|
||||
-> Box<dyn MacResult+'cx>;
|
||||
}
|
||||
|
||||
pub type MacroExpanderFn =
|
||||
for<'cx> fn(&'cx mut ExtCtxt, Span, &[tokenstream::TokenTree])
|
||||
-> Box<MacResult+'cx>;
|
||||
-> Box<dyn MacResult+'cx>;
|
||||
|
||||
impl<F> TTMacroExpander for F
|
||||
where F: for<'cx> Fn(&'cx mut ExtCtxt, Span, &[tokenstream::TokenTree]) -> Box<MacResult+'cx>
|
||||
where F: for<'cx> Fn(&'cx mut ExtCtxt, Span, &[tokenstream::TokenTree])
|
||||
-> Box<dyn MacResult+'cx>
|
||||
{
|
||||
fn expand<'cx>(&self, ecx: &'cx mut ExtCtxt, span: Span, input: TokenStream)
|
||||
-> Box<MacResult+'cx> {
|
||||
-> Box<dyn MacResult+'cx> {
|
||||
struct AvoidInterpolatedIdents;
|
||||
|
||||
impl Folder for AvoidInterpolatedIdents {
|
||||
|
@ -289,23 +290,23 @@ pub trait IdentMacroExpander {
|
|||
sp: Span,
|
||||
ident: ast::Ident,
|
||||
token_tree: Vec<tokenstream::TokenTree>)
|
||||
-> Box<MacResult+'cx>;
|
||||
-> Box<dyn MacResult+'cx>;
|
||||
}
|
||||
|
||||
pub type IdentMacroExpanderFn =
|
||||
for<'cx> fn(&'cx mut ExtCtxt, Span, ast::Ident, Vec<tokenstream::TokenTree>)
|
||||
-> Box<MacResult+'cx>;
|
||||
-> Box<dyn MacResult+'cx>;
|
||||
|
||||
impl<F> IdentMacroExpander for F
|
||||
where F : for<'cx> Fn(&'cx mut ExtCtxt, Span, ast::Ident,
|
||||
Vec<tokenstream::TokenTree>) -> Box<MacResult+'cx>
|
||||
Vec<tokenstream::TokenTree>) -> Box<dyn MacResult+'cx>
|
||||
{
|
||||
fn expand<'cx>(&self,
|
||||
cx: &'cx mut ExtCtxt,
|
||||
sp: Span,
|
||||
ident: ast::Ident,
|
||||
token_tree: Vec<tokenstream::TokenTree>)
|
||||
-> Box<MacResult+'cx>
|
||||
-> Box<dyn MacResult+'cx>
|
||||
{
|
||||
(*self)(cx, sp, ident, token_tree)
|
||||
}
|
||||
|
@ -378,7 +379,7 @@ macro_rules! make_MacEager {
|
|||
|
||||
impl MacEager {
|
||||
$(
|
||||
pub fn $fld(v: $t) -> Box<MacResult> {
|
||||
pub fn $fld(v: $t) -> Box<dyn MacResult> {
|
||||
Box::new(MacEager {
|
||||
$fld: Some(v),
|
||||
..Default::default()
|
||||
|
@ -462,7 +463,7 @@ impl DummyResult {
|
|||
///
|
||||
/// Use this as a return value after hitting any errors and
|
||||
/// calling `span_err`.
|
||||
pub fn any(sp: Span) -> Box<MacResult+'static> {
|
||||
pub fn any(sp: Span) -> Box<dyn MacResult+'static> {
|
||||
Box::new(DummyResult { expr_only: false, span: sp })
|
||||
}
|
||||
|
||||
|
@ -471,7 +472,7 @@ impl DummyResult {
|
|||
/// Use this for macros that must expand to an expression, so even
|
||||
/// if an error is encountered internally, the user will receive
|
||||
/// an error that they also used it in the wrong place.
|
||||
pub fn expr(sp: Span) -> Box<MacResult+'static> {
|
||||
pub fn expr(sp: Span) -> Box<dyn MacResult+'static> {
|
||||
Box::new(DummyResult { expr_only: true, span: sp })
|
||||
}
|
||||
|
||||
|
@ -559,7 +560,7 @@ impl MacResult for DummyResult {
|
|||
}
|
||||
|
||||
pub type BuiltinDeriveFn =
|
||||
for<'cx> fn(&'cx mut ExtCtxt, Span, &MetaItem, &Annotatable, &mut 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)]
|
||||
|
@ -590,15 +591,15 @@ pub enum SyntaxExtension {
|
|||
/// `#[derive(...)]` is a `MultiItemDecorator`.
|
||||
///
|
||||
/// Prefer ProcMacro or MultiModifier since they are more flexible.
|
||||
MultiDecorator(Box<MultiItemDecorator + sync::Sync + sync::Send>),
|
||||
MultiDecorator(Box<dyn MultiItemDecorator + sync::Sync + sync::Send>),
|
||||
|
||||
/// A syntax extension that is attached to an item and modifies it
|
||||
/// in-place. Also allows decoration, i.e., creating new items.
|
||||
MultiModifier(Box<MultiItemModifier + sync::Sync + sync::Send>),
|
||||
MultiModifier(Box<dyn MultiItemModifier + sync::Sync + sync::Send>),
|
||||
|
||||
/// A function-like procedural macro. TokenStream -> TokenStream.
|
||||
ProcMacro {
|
||||
expander: Box<ProcMacro + sync::Sync + sync::Send>,
|
||||
expander: Box<dyn ProcMacro + sync::Sync + sync::Send>,
|
||||
allow_internal_unstable: bool,
|
||||
edition: Edition,
|
||||
},
|
||||
|
@ -607,13 +608,13 @@ pub enum SyntaxExtension {
|
|||
/// The first TokenSteam is the attribute, the second is the annotated item.
|
||||
/// Allows modification of the input items and adding new items, similar to
|
||||
/// MultiModifier, but uses TokenStreams, rather than AST nodes.
|
||||
AttrProcMacro(Box<AttrProcMacro + sync::Sync + sync::Send>, Edition),
|
||||
AttrProcMacro(Box<dyn AttrProcMacro + sync::Sync + sync::Send>, Edition),
|
||||
|
||||
/// A normal, function-like syntax extension.
|
||||
///
|
||||
/// `bytes!` is a `NormalTT`.
|
||||
NormalTT {
|
||||
expander: Box<TTMacroExpander + sync::Sync + sync::Send>,
|
||||
expander: Box<dyn TTMacroExpander + sync::Sync + sync::Send>,
|
||||
def_info: Option<(ast::NodeId, Span)>,
|
||||
/// Whether the contents of the macro can
|
||||
/// directly use `#[unstable]` things (true == yes).
|
||||
|
@ -633,13 +634,13 @@ pub enum SyntaxExtension {
|
|||
/// A function-like syntax extension that has an extra ident before
|
||||
/// the block.
|
||||
///
|
||||
IdentTT(Box<IdentMacroExpander + sync::Sync + sync::Send>, Option<Span>, bool),
|
||||
IdentTT(Box<dyn IdentMacroExpander + sync::Sync + sync::Send>, Option<Span>, bool),
|
||||
|
||||
/// An attribute-like procedural macro. TokenStream -> TokenStream.
|
||||
/// The input is the annotated item.
|
||||
/// Allows generating code to implement a Trait for a given struct
|
||||
/// or enum item.
|
||||
ProcMacroDerive(Box<MultiItemModifier + sync::Sync + sync::Send>,
|
||||
ProcMacroDerive(Box<dyn MultiItemModifier + sync::Sync + sync::Send>,
|
||||
Vec<Symbol> /* inert attribute names */, Edition),
|
||||
|
||||
/// An attribute-like procedural macro that derives a builtin trait.
|
||||
|
@ -647,7 +648,7 @@ pub enum SyntaxExtension {
|
|||
|
||||
/// A declarative macro, e.g. `macro m() {}`.
|
||||
DeclMacro {
|
||||
expander: Box<TTMacroExpander + sync::Sync + sync::Send>,
|
||||
expander: Box<dyn TTMacroExpander + sync::Sync + sync::Send>,
|
||||
def_info: Option<(ast::NodeId, Span)>,
|
||||
is_transparent: bool,
|
||||
edition: Edition,
|
||||
|
@ -778,7 +779,7 @@ pub struct ExtCtxt<'a> {
|
|||
pub parse_sess: &'a parse::ParseSess,
|
||||
pub ecfg: expand::ExpansionConfig<'a>,
|
||||
pub root_path: PathBuf,
|
||||
pub resolver: &'a mut Resolver,
|
||||
pub resolver: &'a mut dyn Resolver,
|
||||
pub resolve_err_count: usize,
|
||||
pub current_expansion: ExpansionData,
|
||||
pub expansions: HashMap<Span, Vec<String>>,
|
||||
|
@ -787,7 +788,7 @@ pub struct ExtCtxt<'a> {
|
|||
impl<'a> ExtCtxt<'a> {
|
||||
pub fn new(parse_sess: &'a parse::ParseSess,
|
||||
ecfg: expand::ExpansionConfig<'a>,
|
||||
resolver: &'a mut Resolver)
|
||||
resolver: &'a mut dyn Resolver)
|
||||
-> ExtCtxt<'a> {
|
||||
ExtCtxt {
|
||||
parse_sess,
|
||||
|
|
|
@ -71,7 +71,7 @@ macro_rules! ast_fragments {
|
|||
}
|
||||
}
|
||||
|
||||
fn make_from<'a>(self, result: Box<MacResult + 'a>) -> Option<AstFragment> {
|
||||
fn make_from<'a>(self, result: Box<dyn MacResult + 'a>) -> Option<AstFragment> {
|
||||
match self {
|
||||
AstFragmentKind::OptExpr =>
|
||||
result.make_expr().map(Some).map(AstFragment::OptExpr),
|
||||
|
|
|
@ -452,7 +452,7 @@ pub fn parse_path_panic(parser: &mut Parser, mode: PathStyle) -> ast::Path {
|
|||
pub fn expand_quote_tokens<'cx>(cx: &'cx mut ExtCtxt,
|
||||
sp: Span,
|
||||
tts: &[TokenTree])
|
||||
-> Box<base::MacResult+'cx> {
|
||||
-> Box<dyn base::MacResult+'cx> {
|
||||
let (cx_expr, expr) = expand_tts(cx, sp, tts);
|
||||
let expanded = expand_wrapper(cx, sp, cx_expr, expr, &[&["syntax", "ext", "quote", "rt"]]);
|
||||
base::MacEager::expr(expanded)
|
||||
|
@ -461,7 +461,7 @@ pub fn expand_quote_tokens<'cx>(cx: &'cx mut ExtCtxt,
|
|||
pub fn expand_quote_expr<'cx>(cx: &'cx mut ExtCtxt,
|
||||
sp: Span,
|
||||
tts: &[TokenTree])
|
||||
-> Box<base::MacResult+'cx> {
|
||||
-> Box<dyn base::MacResult+'cx> {
|
||||
let expanded = expand_parse_call(cx, sp, "parse_expr_panic", vec![], tts);
|
||||
base::MacEager::expr(expanded)
|
||||
}
|
||||
|
@ -469,7 +469,7 @@ pub fn expand_quote_expr<'cx>(cx: &'cx mut ExtCtxt,
|
|||
pub fn expand_quote_item<'cx>(cx: &'cx mut ExtCtxt,
|
||||
sp: Span,
|
||||
tts: &[TokenTree])
|
||||
-> Box<base::MacResult+'cx> {
|
||||
-> Box<dyn base::MacResult+'cx> {
|
||||
let expanded = expand_parse_call(cx, sp, "parse_item_panic", vec![], tts);
|
||||
base::MacEager::expr(expanded)
|
||||
}
|
||||
|
@ -477,7 +477,7 @@ pub fn expand_quote_item<'cx>(cx: &'cx mut ExtCtxt,
|
|||
pub fn expand_quote_pat<'cx>(cx: &'cx mut ExtCtxt,
|
||||
sp: Span,
|
||||
tts: &[TokenTree])
|
||||
-> Box<base::MacResult+'cx> {
|
||||
-> Box<dyn base::MacResult+'cx> {
|
||||
let expanded = expand_parse_call(cx, sp, "parse_pat_panic", vec![], tts);
|
||||
base::MacEager::expr(expanded)
|
||||
}
|
||||
|
@ -485,7 +485,7 @@ pub fn expand_quote_pat<'cx>(cx: &'cx mut ExtCtxt,
|
|||
pub fn expand_quote_arm(cx: &mut ExtCtxt,
|
||||
sp: Span,
|
||||
tts: &[TokenTree])
|
||||
-> Box<base::MacResult+'static> {
|
||||
-> Box<dyn base::MacResult+'static> {
|
||||
let expanded = expand_parse_call(cx, sp, "parse_arm_panic", vec![], tts);
|
||||
base::MacEager::expr(expanded)
|
||||
}
|
||||
|
@ -493,7 +493,7 @@ pub fn expand_quote_arm(cx: &mut ExtCtxt,
|
|||
pub fn expand_quote_ty(cx: &mut ExtCtxt,
|
||||
sp: Span,
|
||||
tts: &[TokenTree])
|
||||
-> Box<base::MacResult+'static> {
|
||||
-> Box<dyn base::MacResult+'static> {
|
||||
let expanded = expand_parse_call(cx, sp, "parse_ty_panic", vec![], tts);
|
||||
base::MacEager::expr(expanded)
|
||||
}
|
||||
|
@ -501,7 +501,7 @@ pub fn expand_quote_ty(cx: &mut ExtCtxt,
|
|||
pub fn expand_quote_stmt(cx: &mut ExtCtxt,
|
||||
sp: Span,
|
||||
tts: &[TokenTree])
|
||||
-> Box<base::MacResult+'static> {
|
||||
-> Box<dyn base::MacResult+'static> {
|
||||
let expanded = expand_parse_call(cx, sp, "parse_stmt_panic", vec![], tts);
|
||||
base::MacEager::expr(expanded)
|
||||
}
|
||||
|
@ -509,7 +509,7 @@ pub fn expand_quote_stmt(cx: &mut ExtCtxt,
|
|||
pub fn expand_quote_attr(cx: &mut ExtCtxt,
|
||||
sp: Span,
|
||||
tts: &[TokenTree])
|
||||
-> Box<base::MacResult+'static> {
|
||||
-> Box<dyn base::MacResult+'static> {
|
||||
let expanded = expand_parse_call(cx, sp, "parse_attribute_panic",
|
||||
vec![cx.expr_bool(sp, true)], tts);
|
||||
|
||||
|
@ -519,7 +519,7 @@ pub fn expand_quote_attr(cx: &mut ExtCtxt,
|
|||
pub fn expand_quote_arg(cx: &mut ExtCtxt,
|
||||
sp: Span,
|
||||
tts: &[TokenTree])
|
||||
-> Box<base::MacResult+'static> {
|
||||
-> Box<dyn base::MacResult+'static> {
|
||||
let expanded = expand_parse_call(cx, sp, "parse_arg_panic", vec![], tts);
|
||||
base::MacEager::expr(expanded)
|
||||
}
|
||||
|
@ -527,7 +527,7 @@ pub fn expand_quote_arg(cx: &mut ExtCtxt,
|
|||
pub fn expand_quote_block(cx: &mut ExtCtxt,
|
||||
sp: Span,
|
||||
tts: &[TokenTree])
|
||||
-> Box<base::MacResult+'static> {
|
||||
-> Box<dyn base::MacResult+'static> {
|
||||
let expanded = expand_parse_call(cx, sp, "parse_block_panic", vec![], tts);
|
||||
base::MacEager::expr(expanded)
|
||||
}
|
||||
|
@ -535,7 +535,7 @@ pub fn expand_quote_block(cx: &mut ExtCtxt,
|
|||
pub fn expand_quote_meta_item(cx: &mut ExtCtxt,
|
||||
sp: Span,
|
||||
tts: &[TokenTree])
|
||||
-> Box<base::MacResult+'static> {
|
||||
-> Box<dyn base::MacResult+'static> {
|
||||
let expanded = expand_parse_call(cx, sp, "parse_meta_item_panic", vec![], tts);
|
||||
base::MacEager::expr(expanded)
|
||||
}
|
||||
|
@ -543,7 +543,7 @@ pub fn expand_quote_meta_item(cx: &mut ExtCtxt,
|
|||
pub fn expand_quote_path(cx: &mut ExtCtxt,
|
||||
sp: Span,
|
||||
tts: &[TokenTree])
|
||||
-> Box<base::MacResult+'static> {
|
||||
-> Box<dyn base::MacResult+'static> {
|
||||
let mode = mk_parser_path(cx, sp, &["PathStyle", "Type"]);
|
||||
let expanded = expand_parse_call(cx, sp, "parse_path_panic", vec![mode], tts);
|
||||
base::MacEager::expr(expanded)
|
||||
|
|
|
@ -32,7 +32,7 @@ use rustc_data_structures::sync::Lrc;
|
|||
|
||||
/// line!(): expands to the current line number
|
||||
pub fn expand_line(cx: &mut ExtCtxt, sp: Span, tts: &[tokenstream::TokenTree])
|
||||
-> Box<base::MacResult+'static> {
|
||||
-> Box<dyn base::MacResult+'static> {
|
||||
base::check_zero_tts(cx, sp, tts, "line!");
|
||||
|
||||
let topmost = cx.expansion_cause().unwrap_or(sp);
|
||||
|
@ -43,7 +43,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])
|
||||
-> Box<base::MacResult+'static> {
|
||||
-> Box<dyn base::MacResult+'static> {
|
||||
base::check_zero_tts(cx, sp, tts, "column!");
|
||||
|
||||
let topmost = cx.expansion_cause().unwrap_or(sp);
|
||||
|
@ -54,7 +54,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])
|
||||
-> Box<base::MacResult+'static> {
|
||||
-> Box<dyn base::MacResult+'static> {
|
||||
if sp.allows_unstable() {
|
||||
expand_column(cx, sp, tts)
|
||||
} else {
|
||||
|
@ -66,7 +66,7 @@ pub fn expand_column_gated(cx: &mut ExtCtxt, sp: Span, tts: &[tokenstream::Token
|
|||
/// The filemap (`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])
|
||||
-> Box<base::MacResult+'static> {
|
||||
-> Box<dyn base::MacResult+'static> {
|
||||
base::check_zero_tts(cx, sp, tts, "file!");
|
||||
|
||||
let topmost = cx.expansion_cause().unwrap_or(sp);
|
||||
|
@ -75,13 +75,13 @@ pub fn expand_file(cx: &mut ExtCtxt, sp: Span, tts: &[tokenstream::TokenTree])
|
|||
}
|
||||
|
||||
pub fn expand_stringify(cx: &mut ExtCtxt, sp: Span, tts: &[tokenstream::TokenTree])
|
||||
-> Box<base::MacResult+'static> {
|
||||
-> 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])
|
||||
-> Box<base::MacResult+'static> {
|
||||
-> Box<dyn base::MacResult+'static> {
|
||||
base::check_zero_tts(cx, sp, tts, "module_path!");
|
||||
let mod_path = &cx.current_expansion.module.mod_path;
|
||||
let string = mod_path.iter().map(|x| x.to_string()).collect::<Vec<String>>().join("::");
|
||||
|
@ -93,7 +93,7 @@ pub fn expand_mod(cx: &mut ExtCtxt, sp: Span, tts: &[tokenstream::TokenTree])
|
|||
/// 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])
|
||||
-> Box<base::MacResult+'cx> {
|
||||
-> Box<dyn base::MacResult+'cx> {
|
||||
let file = match get_single_str_from_tts(cx, sp, tts, "include!") {
|
||||
Some(f) => f,
|
||||
None => return DummyResult::expr(sp),
|
||||
|
@ -131,7 +131,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])
|
||||
-> Box<base::MacResult+'static> {
|
||||
-> Box<dyn base::MacResult+'static> {
|
||||
let file = match get_single_str_from_tts(cx, sp, tts, "include_str!") {
|
||||
Some(f) => f,
|
||||
None => return DummyResult::expr(sp)
|
||||
|
@ -168,7 +168,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])
|
||||
-> Box<base::MacResult+'static> {
|
||||
-> Box<dyn base::MacResult+'static> {
|
||||
let file = match get_single_str_from_tts(cx, sp, tts, "include_bytes!") {
|
||||
Some(f) => f,
|
||||
None => return DummyResult::expr(sp)
|
||||
|
|
|
@ -73,7 +73,7 @@ impl TTMacroExpander for MacroRulesMacroExpander {
|
|||
cx: &'cx mut ExtCtxt,
|
||||
sp: Span,
|
||||
input: TokenStream)
|
||||
-> Box<MacResult+'cx> {
|
||||
-> Box<dyn MacResult+'cx> {
|
||||
if !self.valid {
|
||||
return DummyResult::any(sp);
|
||||
}
|
||||
|
@ -99,7 +99,7 @@ fn generic_extension<'cx>(cx: &'cx mut ExtCtxt,
|
|||
arg: TokenStream,
|
||||
lhses: &[quoted::TokenTree],
|
||||
rhses: &[quoted::TokenTree])
|
||||
-> Box<MacResult+'cx> {
|
||||
-> Box<dyn MacResult+'cx> {
|
||||
if cx.trace_macros() {
|
||||
trace_macros_note(cx, sp, format!("expanding `{}! {{ {} }}`", name, arg));
|
||||
}
|
||||
|
|
|
@ -34,9 +34,9 @@ use std::sync::{Arc, Mutex};
|
|||
use rustc_serialize::json::{as_json, as_pretty_json};
|
||||
|
||||
pub struct JsonEmitter {
|
||||
dst: Box<Write + Send>,
|
||||
dst: Box<dyn Write + Send>,
|
||||
registry: Option<Registry>,
|
||||
cm: Lrc<CodeMapper + sync::Send + sync::Sync>,
|
||||
cm: Lrc<dyn CodeMapper + sync::Send + sync::Sync>,
|
||||
pretty: bool,
|
||||
ui_testing: bool,
|
||||
}
|
||||
|
@ -60,7 +60,7 @@ impl JsonEmitter {
|
|||
pretty)
|
||||
}
|
||||
|
||||
pub fn new(dst: Box<Write + Send>,
|
||||
pub fn new(dst: Box<dyn Write + Send>,
|
||||
registry: Option<Registry>,
|
||||
code_map: Lrc<CodeMap>,
|
||||
pretty: bool) -> JsonEmitter {
|
||||
|
|
|
@ -14,6 +14,8 @@
|
|||
//!
|
||||
//! This API is completely unstable and subject to change.
|
||||
|
||||
#![deny(bare_trait_objects)]
|
||||
|
||||
#![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
|
||||
html_favicon_url = "https://doc.rust-lang.org/favicon.ico",
|
||||
html_root_url = "https://doc.rust-lang.org/nightly/",
|
||||
|
|
|
@ -357,7 +357,7 @@ pub struct Literal {
|
|||
|
||||
// it appears this function is called only from pprust... that's
|
||||
// probably not a good thing.
|
||||
pub fn gather_comments_and_literals(sess: &ParseSess, path: FileName, srdr: &mut Read)
|
||||
pub fn gather_comments_and_literals(sess: &ParseSess, path: FileName, srdr: &mut dyn Read)
|
||||
-> (Vec<Comment>, Vec<Literal>) {
|
||||
let mut src = Vec::new();
|
||||
srdr.read_to_end(&mut src).unwrap();
|
||||
|
|
|
@ -241,7 +241,7 @@ pub struct PrintStackElem {
|
|||
|
||||
const SIZE_INFINITY: isize = 0xffff;
|
||||
|
||||
pub fn mk_printer<'a>(out: Box<io::Write+'a>, linewidth: usize) -> Printer<'a> {
|
||||
pub fn mk_printer<'a>(out: Box<dyn io::Write+'a>, linewidth: usize) -> Printer<'a> {
|
||||
// Yes 55, it makes the ring buffers big enough to never fall behind.
|
||||
let n: usize = 55 * linewidth;
|
||||
debug!("mk_printer {}", linewidth);
|
||||
|
@ -264,7 +264,7 @@ pub fn mk_printer<'a>(out: Box<io::Write+'a>, linewidth: usize) -> Printer<'a> {
|
|||
}
|
||||
|
||||
pub struct Printer<'a> {
|
||||
out: Box<io::Write+'a>,
|
||||
out: Box<dyn io::Write+'a>,
|
||||
buf_max_len: usize,
|
||||
/// Width of lines we're constrained to
|
||||
margin: isize,
|
||||
|
|
|
@ -62,10 +62,10 @@ pub struct State<'a> {
|
|||
literals: Peekable<vec::IntoIter<comments::Literal>>,
|
||||
cur_cmnt: usize,
|
||||
boxes: Vec<pp::Breaks>,
|
||||
ann: &'a (PpAnn+'a),
|
||||
ann: &'a (dyn PpAnn+'a),
|
||||
}
|
||||
|
||||
fn rust_printer<'a>(writer: Box<Write+'a>, ann: &'a PpAnn) -> State<'a> {
|
||||
fn rust_printer<'a>(writer: Box<dyn Write+'a>, ann: &'a dyn PpAnn) -> State<'a> {
|
||||
State {
|
||||
s: pp::mk_printer(writer, DEFAULT_COLUMNS),
|
||||
cm: None,
|
||||
|
@ -88,9 +88,9 @@ pub fn print_crate<'a>(cm: &'a CodeMap,
|
|||
sess: &ParseSess,
|
||||
krate: &ast::Crate,
|
||||
filename: FileName,
|
||||
input: &mut Read,
|
||||
out: Box<Write+'a>,
|
||||
ann: &'a PpAnn,
|
||||
input: &mut dyn Read,
|
||||
out: Box<dyn Write+'a>,
|
||||
ann: &'a dyn PpAnn,
|
||||
is_expanded: bool) -> io::Result<()> {
|
||||
let mut s = State::new_from_input(cm, sess, filename, input, out, ann, is_expanded);
|
||||
|
||||
|
@ -121,9 +121,9 @@ impl<'a> State<'a> {
|
|||
pub fn new_from_input(cm: &'a CodeMap,
|
||||
sess: &ParseSess,
|
||||
filename: FileName,
|
||||
input: &mut Read,
|
||||
out: Box<Write+'a>,
|
||||
ann: &'a PpAnn,
|
||||
input: &mut dyn Read,
|
||||
out: Box<dyn Write+'a>,
|
||||
ann: &'a dyn PpAnn,
|
||||
is_expanded: bool) -> State<'a> {
|
||||
let (cmnts, lits) = comments::gather_comments_and_literals(sess, filename, input);
|
||||
|
||||
|
@ -139,8 +139,8 @@ impl<'a> State<'a> {
|
|||
}
|
||||
|
||||
pub fn new(cm: &'a CodeMap,
|
||||
out: Box<Write+'a>,
|
||||
ann: &'a PpAnn,
|
||||
out: Box<dyn Write+'a>,
|
||||
ann: &'a dyn PpAnn,
|
||||
comments: Option<Vec<comments::Comment>>,
|
||||
literals: Option<Vec<comments::Literal>>) -> State<'a> {
|
||||
State {
|
||||
|
|
|
@ -72,7 +72,7 @@ struct TestCtxt<'a> {
|
|||
// Traverse the crate, collecting all the test functions, eliding any
|
||||
// existing main functions, and synthesizing a main test harness
|
||||
pub fn modify_for_testing(sess: &ParseSess,
|
||||
resolver: &mut Resolver,
|
||||
resolver: &mut dyn Resolver,
|
||||
should_test: bool,
|
||||
krate: ast::Crate,
|
||||
span_diagnostic: &errors::Handler,
|
||||
|
@ -278,7 +278,7 @@ fn mk_reexport_mod(cx: &mut TestCtxt,
|
|||
}
|
||||
|
||||
fn generate_test_harness(sess: &ParseSess,
|
||||
resolver: &mut Resolver,
|
||||
resolver: &mut dyn Resolver,
|
||||
reexport_test_harness_main: Option<Symbol>,
|
||||
krate: ast::Crate,
|
||||
sd: &errors::Handler,
|
||||
|
|
Loading…
Reference in New Issue