Enumify CompilerExpansion in ExpnInfo
This commit is contained in:
@@ -19,7 +19,8 @@ use ext::build::AstBuilder;
|
||||
use attr;
|
||||
use attr::AttrMetaMethods;
|
||||
use codemap;
|
||||
use codemap::{Span, Spanned, ExpnInfo, NameAndSpan, MacroBang, MacroAttribute, CompilerExpansion};
|
||||
use codemap::{Span, Spanned, ExpnInfo, NameAndSpan, MacroBang, MacroAttribute};
|
||||
use codemap::{CompilerExpansion, CompilerExpansionFormat};
|
||||
use ext::base::*;
|
||||
use feature_gate::{self, Features, GatedCfg};
|
||||
use fold;
|
||||
@@ -43,12 +44,12 @@ fn mk_core_path(fld: &mut MacroExpander,
|
||||
}
|
||||
|
||||
pub fn expand_expr(e: P<ast::Expr>, fld: &mut MacroExpander) -> P<ast::Expr> {
|
||||
fn push_compiler_expansion(fld: &mut MacroExpander, span: Span, expansion_desc: &str) {
|
||||
fn push_compiler_expansion(fld: &mut MacroExpander, span: Span,
|
||||
expansion_type: CompilerExpansionFormat) {
|
||||
fld.cx.bt_push(ExpnInfo {
|
||||
call_site: span,
|
||||
callee: NameAndSpan {
|
||||
name: expansion_desc.to_string(),
|
||||
format: CompilerExpansion,
|
||||
format: CompilerExpansion(expansion_type),
|
||||
|
||||
// This does *not* mean code generated after
|
||||
// `push_compiler_expansion` is automatically exempt
|
||||
@@ -111,7 +112,7 @@ pub fn expand_expr(e: P<ast::Expr>, fld: &mut MacroExpander) -> P<ast::Expr> {
|
||||
&fld.cx.parse_sess.span_diagnostic,
|
||||
expr_span);
|
||||
|
||||
push_compiler_expansion(fld, expr_span, "placement-in expansion");
|
||||
push_compiler_expansion(fld, expr_span, CompilerExpansionFormat::PlacementIn);
|
||||
|
||||
let value_span = value_expr.span;
|
||||
let placer_span = placer.span;
|
||||
@@ -223,7 +224,7 @@ pub fn expand_expr(e: P<ast::Expr>, fld: &mut MacroExpander) -> P<ast::Expr> {
|
||||
// }
|
||||
// }
|
||||
|
||||
push_compiler_expansion(fld, span, "while let expansion");
|
||||
push_compiler_expansion(fld, span, CompilerExpansionFormat::WhileLet);
|
||||
|
||||
// `<pat> => <body>`
|
||||
let pat_arm = {
|
||||
@@ -262,7 +263,7 @@ pub fn expand_expr(e: P<ast::Expr>, fld: &mut MacroExpander) -> P<ast::Expr> {
|
||||
// _ => [<elseopt> | ()]
|
||||
// }
|
||||
|
||||
push_compiler_expansion(fld, span, "if let expansion");
|
||||
push_compiler_expansion(fld, span, CompilerExpansionFormat::IfLet);
|
||||
|
||||
// `<pat> => <body>`
|
||||
let pat_arm = {
|
||||
@@ -334,7 +335,7 @@ pub fn expand_expr(e: P<ast::Expr>, fld: &mut MacroExpander) -> P<ast::Expr> {
|
||||
ast::ExprIf(cond, blk, elseopt) => {
|
||||
let elseopt = elseopt.map(|els| els.and_then(|els| match els.node {
|
||||
ast::ExprIfLet(..) => {
|
||||
push_compiler_expansion(fld, span, "if let expansion");
|
||||
push_compiler_expansion(fld, span, CompilerExpansionFormat::IfLet);
|
||||
// wrap the if-let expr in a block
|
||||
let span = els.span;
|
||||
let blk = P(ast::Block {
|
||||
@@ -378,7 +379,7 @@ pub fn expand_expr(e: P<ast::Expr>, fld: &mut MacroExpander) -> P<ast::Expr> {
|
||||
// result
|
||||
// }
|
||||
|
||||
push_compiler_expansion(fld, span, "for loop expansion");
|
||||
push_compiler_expansion(fld, span, CompilerExpansionFormat::ForLoop);
|
||||
|
||||
let span = fld.new_span(span);
|
||||
|
||||
@@ -458,7 +459,7 @@ pub fn expand_expr(e: P<ast::Expr>, fld: &mut MacroExpander) -> P<ast::Expr> {
|
||||
}
|
||||
|
||||
ast::ExprClosure(capture_clause, fn_decl, block) => {
|
||||
push_compiler_expansion(fld, span, "closure expansion");
|
||||
push_compiler_expansion(fld, span, CompilerExpansionFormat::Closure);
|
||||
let (rewritten_fn_decl, rewritten_block)
|
||||
= expand_and_rename_fn_decl_and_block(fn_decl, block, fld);
|
||||
let new_node = ast::ExprClosure(capture_clause,
|
||||
@@ -542,8 +543,7 @@ fn expand_mac_invoc<T, F, G>(mac: ast::Mac,
|
||||
fld.cx.bt_push(ExpnInfo {
|
||||
call_site: span,
|
||||
callee: NameAndSpan {
|
||||
name: extname.to_string(),
|
||||
format: MacroBang,
|
||||
format: MacroBang(extname.to_string()),
|
||||
span: exp_span,
|
||||
allow_internal_unstable: allow_internal_unstable,
|
||||
},
|
||||
@@ -721,8 +721,7 @@ pub fn expand_item_mac(it: P<ast::Item>,
|
||||
fld.cx.bt_push(ExpnInfo {
|
||||
call_site: it.span,
|
||||
callee: NameAndSpan {
|
||||
name: extname.to_string(),
|
||||
format: MacroBang,
|
||||
format: MacroBang(extname.to_string()),
|
||||
span: span,
|
||||
allow_internal_unstable: allow_internal_unstable,
|
||||
}
|
||||
@@ -741,8 +740,7 @@ pub fn expand_item_mac(it: P<ast::Item>,
|
||||
fld.cx.bt_push(ExpnInfo {
|
||||
call_site: it.span,
|
||||
callee: NameAndSpan {
|
||||
name: extname.to_string(),
|
||||
format: MacroBang,
|
||||
format: MacroBang(extname.to_string()),
|
||||
span: span,
|
||||
allow_internal_unstable: allow_internal_unstable,
|
||||
}
|
||||
@@ -762,8 +760,7 @@ pub fn expand_item_mac(it: P<ast::Item>,
|
||||
fld.cx.bt_push(ExpnInfo {
|
||||
call_site: it.span,
|
||||
callee: NameAndSpan {
|
||||
name: extname.to_string(),
|
||||
format: MacroBang,
|
||||
format: MacroBang(extname.to_string()),
|
||||
span: None,
|
||||
// `macro_rules!` doesn't directly allow
|
||||
// unstable (this is orthogonal to whether
|
||||
@@ -1090,8 +1087,7 @@ fn expand_pat(p: P<ast::Pat>, fld: &mut MacroExpander) -> P<ast::Pat> {
|
||||
fld.cx.bt_push(ExpnInfo {
|
||||
call_site: span,
|
||||
callee: NameAndSpan {
|
||||
name: extname.to_string(),
|
||||
format: MacroBang,
|
||||
format: MacroBang(extname.to_string()),
|
||||
span: tt_span,
|
||||
allow_internal_unstable: allow_internal_unstable,
|
||||
}
|
||||
@@ -1302,8 +1298,7 @@ fn expand_decorators(a: Annotatable,
|
||||
fld.cx.bt_push(ExpnInfo {
|
||||
call_site: attr.span,
|
||||
callee: NameAndSpan {
|
||||
name: mname.to_string(),
|
||||
format: MacroAttribute,
|
||||
format: MacroAttribute(mname.to_string()),
|
||||
span: Some(attr.span),
|
||||
// attributes can do whatever they like,
|
||||
// for now.
|
||||
@@ -1330,8 +1325,7 @@ fn expand_decorators(a: Annotatable,
|
||||
fld.cx.bt_push(ExpnInfo {
|
||||
call_site: attr.span,
|
||||
callee: NameAndSpan {
|
||||
name: mname.to_string(),
|
||||
format: MacroAttribute,
|
||||
format: MacroAttribute(mname.to_string()),
|
||||
span: Some(attr.span),
|
||||
// attributes can do whatever they like,
|
||||
// for now.
|
||||
@@ -1381,8 +1375,7 @@ fn expand_item_multi_modifier(mut it: Annotatable,
|
||||
fld.cx.bt_push(ExpnInfo {
|
||||
call_site: attr.span,
|
||||
callee: NameAndSpan {
|
||||
name: mname.to_string(),
|
||||
format: MacroAttribute,
|
||||
format: MacroAttribute(mname.to_string()),
|
||||
span: Some(attr.span),
|
||||
// attributes can do whatever they like,
|
||||
// for now
|
||||
@@ -1430,8 +1423,7 @@ fn expand_item_modifiers(mut it: P<ast::Item>,
|
||||
fld.cx.bt_push(ExpnInfo {
|
||||
call_site: attr.span,
|
||||
callee: NameAndSpan {
|
||||
name: mname.to_string(),
|
||||
format: MacroAttribute,
|
||||
format: MacroAttribute(mname.to_string()),
|
||||
span: Some(attr.span),
|
||||
// attributes can do whatever they like,
|
||||
// for now
|
||||
|
||||
Reference in New Issue
Block a user