diff options
| author | Jeffrey Seyfried <jeffrey.seyfried@gmail.com> | 2016-10-01 04:24:19 +0000 |
|---|---|---|
| committer | Jeffrey Seyfried <jeffrey.seyfried@gmail.com> | 2016-10-02 06:07:08 +0000 |
| commit | 2df4f2a126ec817666c66dd94f25411da1789243 (patch) | |
| tree | 0db916bdef64cc3691cc121868e2da66f6fbaa6b | |
| parent | c9f81190f2228a8b2c4fba4f3494773e10f70e96 (diff) | |
| download | rust-2df4f2a126ec817666c66dd94f25411da1789243.tar.gz rust-2df4f2a126ec817666c66dd94f25411da1789243.zip | |
Add field `backtrace: SyntaxContext` to `ExpansionData`.
| -rw-r--r-- | src/librustc_resolve/macros.rs | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/librustc_resolve/macros.rs b/src/librustc_resolve/macros.rs index 4068c34a7f9..84bed07fe71 100644 --- a/src/librustc_resolve/macros.rs +++ b/src/librustc_resolve/macros.rs @@ -18,7 +18,7 @@ use syntax::errors::DiagnosticBuilder; use syntax::ext::base::{self, MultiModifier, MultiDecorator, MultiItemModifier}; use syntax::ext::base::{NormalTT, SyntaxExtension}; use syntax::ext::expand::{Expansion, Invocation, InvocationKind}; -use syntax::ext::hygiene::Mark; +use syntax::ext::hygiene::{Mark, SyntaxContext}; use syntax::ext::tt::macro_rules; use syntax::parse::token::intern; use syntax::util::lev_distance::find_best_match_for_name; @@ -30,6 +30,7 @@ pub struct NameBinding { #[derive(Clone)] pub struct ExpansionData<'a> { + backtrace: SyntaxContext, pub module: Module<'a>, def_index: DefIndex, // True if this expansion is in a `const_integer` position, for example `[u32; m!()]`. @@ -40,6 +41,7 @@ pub struct ExpansionData<'a> { impl<'a> ExpansionData<'a> { pub fn root(graph_root: Module<'a>) -> Self { ExpansionData { + backtrace: SyntaxContext::empty(), module: graph_root, def_index: CRATE_DEF_INDEX, const_integer: false, @@ -56,6 +58,7 @@ impl<'a> base::Resolver for Resolver<'a> { let mark = Mark::fresh(); let module = self.module_map[&id]; self.expansion_data.insert(mark, ExpansionData { + backtrace: SyntaxContext::empty(), module: module, def_index: module.def_id().unwrap().index, const_integer: false, @@ -171,9 +174,10 @@ impl<'a> Resolver<'a> { fn collect_def_ids(&mut self, mark: Mark, expansion: &Expansion) { let expansion_data = &mut self.expansion_data; - let ExpansionData { def_index, const_integer, module } = expansion_data[&mark]; + let ExpansionData { backtrace, def_index, const_integer, module } = expansion_data[&mark]; let visit_macro_invoc = &mut |invoc: map::MacroInvocationData| { expansion_data.entry(invoc.mark).or_insert(ExpansionData { + backtrace: backtrace.apply_mark(invoc.mark), def_index: invoc.def_index, const_integer: invoc.const_integer, module: module, |
