Skip to content

Commit f3c2dca

Browse files
committed
Remove scope placeholders from the crate root.
1 parent c86c8d4 commit f3c2dca

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

src/libsyntax/ext/expand.rs

+13-2
Original file line numberDiff line numberDiff line change
@@ -191,8 +191,15 @@ impl<'a, 'b> MacroExpander<'a, 'b> {
191191
fn expand_crate(&mut self, mut krate: ast::Crate) -> ast::Crate {
192192
let err_count = self.cx.parse_sess.span_diagnostic.err_count();
193193

194-
let items = Expansion::Items(SmallVector::many(krate.module.items));
195-
krate.module.items = self.expand(items).make_items().into();
194+
let mut krate_item = placeholder(ExpansionKind::Items, ast::DUMMY_NODE_ID)
195+
.make_items().pop().unwrap().unwrap();
196+
krate_item.node = ast::ItemKind::Mod(krate.module);
197+
let krate_item = Expansion::Items(SmallVector::one(P(krate_item)));
198+
199+
krate.module = match self.expand(krate_item).make_items().pop().unwrap().unwrap().node {
200+
ast::ItemKind::Mod(module) => module,
201+
_ => unreachable!(),
202+
};
196203
krate.exported_macros = mem::replace(&mut self.cx.exported_macros, Vec::new());
197204

198205
for def in &mut krate.exported_macros {
@@ -596,6 +603,10 @@ impl<'a, 'b> Folder for InvocationCollector<'a, 'b> {
596603
})
597604
}
598605
ast::ItemKind::Mod(ast::Mod { inner, .. }) => {
606+
if item.ident == keywords::Invalid.ident() {
607+
return noop_fold_item(item, self);
608+
}
609+
599610
let mut module = (*self.cx.current_expansion.module).clone();
600611
module.mod_path.push(item.ident);
601612

0 commit comments

Comments
 (0)