Fix regression when include!()ing a macro_rules! containing a `$c… · rust-lang/rust@284ece3 (original) (raw)

Original file line number Diff line number Diff line change
@@ -23,7 +23,7 @@ use {resolve_error, resolve_struct_error, ResolutionError};
23 23
24 24 use rustc::middle::cstore::LoadedMacro;
25 25 use rustc::hir::def::*;
26 -use rustc::hir::def_id::{CrateNum, CRATE_DEF_INDEX, DefId};
26 +use rustc::hir::def_id::{CrateNum, BUILTIN_MACROS_CRATE, CRATE_DEF_INDEX, DefId};
27 27 use rustc::ty;
28 28
29 29 use std::cell::Cell;
@@ -496,6 +496,9 @@ impl<'a> Resolver<'a> {
496 496 let def_id = self.macro_defs[&expansion];
497 497 if let Some(id) = self.definitions.as_local_node_id(def_id) {
498 498 self.local_macro_def_scopes[&id]
499 +} else if def_id.krate == BUILTIN_MACROS_CRATE {
500 +// FIXME(jseyfried): This happens when `include!()`ing a `$crate::` path, c.f, #40469.
501 +self.graph_root
499 502 } else {
500 503 let module_def_id = ty::DefIdTree::parent(&*self, def_id).unwrap();
501 504 self.get_extern_crate_root(module_def_id.krate)