Skip to content

Commit 5c2d76d

Browse files
committed
Add struct macros::NameBinding.
1 parent ff67da6 commit 5c2d76d

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

src/librustc_resolve/lib.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ use syntax::ext::base::MultiItemModifier;
5757
use syntax::ext::hygiene::Mark;
5858
use syntax::ast::{self, FloatTy};
5959
use syntax::ast::{CRATE_NODE_ID, Name, NodeId, IntTy, UintTy};
60-
use syntax::ext::base::SyntaxExtension;
6160
use syntax::parse::token::{self, keywords};
6261
use syntax::util::lev_distance::find_best_match_for_name;
6362

@@ -793,7 +792,7 @@ pub struct ModuleS<'a> {
793792
// `populate_module_if_necessary` call.
794793
populated: Cell<bool>,
795794

796-
macros: RefCell<FnvHashMap<Name, Rc<SyntaxExtension>>>,
795+
macros: RefCell<FnvHashMap<Name, macros::NameBinding>>,
797796
macros_escape: bool,
798797
}
799798

src/librustc_resolve/macros.rs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ use syntax::ext::tt::macro_rules;
2323
use syntax::parse::token::intern;
2424
use syntax::util::lev_distance::find_best_match_for_name;
2525

26+
// FIXME(jseyfried) Merge with `::NameBinding`.
27+
pub struct NameBinding {
28+
ext: Rc<SyntaxExtension>,
29+
}
30+
2631
#[derive(Clone)]
2732
pub struct ExpansionData<'a> {
2833
pub module: Module<'a>,
@@ -87,7 +92,9 @@ impl<'a> base::Resolver for Resolver<'a> {
8792
while module.macros_escape {
8893
module = module.parent.unwrap();
8994
}
90-
module.macros.borrow_mut().insert(ident.name, ext);
95+
module.macros.borrow_mut().insert(ident.name, NameBinding {
96+
ext: ext,
97+
});
9198
}
9299

93100
fn add_expansions_at_stmt(&mut self, id: ast::NodeId, macros: Vec<Mark>) {
@@ -98,7 +105,7 @@ impl<'a> base::Resolver for Resolver<'a> {
98105
for i in 0..attrs.len() {
99106
let name = intern(&attrs[i].name());
100107
match self.expansion_data[&0].module.macros.borrow().get(&name) {
101-
Some(ext) => match **ext {
108+
Some(binding) => match *binding.ext {
102109
MultiModifier(..) | MultiDecorator(..) | SyntaxExtension::AttrProcMacro(..) => {
103110
return Some(attrs.remove(i))
104111
}
@@ -127,8 +134,8 @@ impl<'a> base::Resolver for Resolver<'a> {
127134

128135
let mut module = self.expansion_data[&scope.as_u32()].module;
129136
loop {
130-
if let Some(ext) = module.macros.borrow().get(&name) {
131-
return Some(ext.clone());
137+
if let Some(binding) = module.macros.borrow().get(&name) {
138+
return Some(binding.ext.clone());
132139
}
133140
match module.parent {
134141
Some(parent) => module = parent,

0 commit comments

Comments
 (0)