@@ -606,6 +606,8 @@ options! {DebuggingOptions, DebuggingSetter, basic_debugging_options,
|
|||||||
"Force overflow checks on or off"),
|
"Force overflow checks on or off"),
|
||||||
force_dropflag_checks: Option<bool> = (None, parse_opt_bool,
|
force_dropflag_checks: Option<bool> = (None, parse_opt_bool,
|
||||||
"Force drop flag checks on or off"),
|
"Force drop flag checks on or off"),
|
||||||
|
trace_macros: bool = (false, parse_bool,
|
||||||
|
"For every macro invocation, print its name and arguments"),
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn default_lib_output() -> CrateType {
|
pub fn default_lib_output() -> CrateType {
|
||||||
|
|||||||
@@ -482,6 +482,7 @@ pub fn phase_2_configure_and_expand(sess: &Session,
|
|||||||
crate_name: crate_name.to_string(),
|
crate_name: crate_name.to_string(),
|
||||||
features: Some(&features),
|
features: Some(&features),
|
||||||
recursion_limit: sess.recursion_limit.get(),
|
recursion_limit: sess.recursion_limit.get(),
|
||||||
|
trace_mac: sess.opt.debugging_opts.trace_macros,
|
||||||
};
|
};
|
||||||
let ret = syntax::ext::expand::expand_crate(&sess.parse_sess,
|
let ret = syntax::ext::expand::expand_crate(&sess.parse_sess,
|
||||||
cfg,
|
cfg,
|
||||||
|
|||||||
@@ -554,7 +554,6 @@ pub struct ExtCtxt<'a> {
|
|||||||
pub use_std: bool,
|
pub use_std: bool,
|
||||||
|
|
||||||
pub mod_path: Vec<ast::Ident> ,
|
pub mod_path: Vec<ast::Ident> ,
|
||||||
pub trace_mac: bool,
|
|
||||||
pub exported_macros: Vec<ast::MacroDef>,
|
pub exported_macros: Vec<ast::MacroDef>,
|
||||||
|
|
||||||
pub syntax_env: SyntaxEnv,
|
pub syntax_env: SyntaxEnv,
|
||||||
@@ -572,7 +571,6 @@ impl<'a> ExtCtxt<'a> {
|
|||||||
mod_path: Vec::new(),
|
mod_path: Vec::new(),
|
||||||
ecfg: ecfg,
|
ecfg: ecfg,
|
||||||
use_std: true,
|
use_std: true,
|
||||||
trace_mac: false,
|
|
||||||
exported_macros: Vec::new(),
|
exported_macros: Vec::new(),
|
||||||
syntax_env: env,
|
syntax_env: env,
|
||||||
recursion_count: 0,
|
recursion_count: 0,
|
||||||
@@ -732,10 +730,10 @@ impl<'a> ExtCtxt<'a> {
|
|||||||
self.parse_sess.span_diagnostic.handler().bug(msg);
|
self.parse_sess.span_diagnostic.handler().bug(msg);
|
||||||
}
|
}
|
||||||
pub fn trace_macros(&self) -> bool {
|
pub fn trace_macros(&self) -> bool {
|
||||||
self.trace_mac
|
self.ecfg.trace_mac
|
||||||
}
|
}
|
||||||
pub fn set_trace_macros(&mut self, x: bool) {
|
pub fn set_trace_macros(&mut self, x: bool) {
|
||||||
self.trace_mac = x
|
self.ecfg.trace_mac = x
|
||||||
}
|
}
|
||||||
pub fn ident_of(&self, st: &str) -> ast::Ident {
|
pub fn ident_of(&self, st: &str) -> ast::Ident {
|
||||||
str_to_ident(st)
|
str_to_ident(st)
|
||||||
|
|||||||
@@ -1406,6 +1406,7 @@ pub struct ExpansionConfig<'feat> {
|
|||||||
pub crate_name: String,
|
pub crate_name: String,
|
||||||
pub features: Option<&'feat Features>,
|
pub features: Option<&'feat Features>,
|
||||||
pub recursion_limit: usize,
|
pub recursion_limit: usize,
|
||||||
|
pub trace_mac: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
macro_rules! feature_tests {
|
macro_rules! feature_tests {
|
||||||
@@ -1427,6 +1428,7 @@ impl<'feat> ExpansionConfig<'feat> {
|
|||||||
crate_name: crate_name,
|
crate_name: crate_name,
|
||||||
features: None,
|
features: None,
|
||||||
recursion_limit: 64,
|
recursion_limit: 64,
|
||||||
|
trace_mac: false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user