diff options
-rw-r--r-- | src/expand/mod.cpp | 4 | ||||
-rw-r--r-- | src/resolve/index.cpp | 2 |
2 files changed, 5 insertions, 1 deletions
diff --git a/src/expand/mod.cpp b/src/expand/mod.cpp index 57b44479..959cef86 100644 --- a/src/expand/mod.cpp +++ b/src/expand/mod.cpp @@ -1058,6 +1058,10 @@ void Expand_Mod(::AST::Crate& crate, LList<const AST::Module*> modstack, ::AST:: ), (Crate, // Can't recurse into an `extern crate` + if(crate.m_extern_crates.count(e.name) == 0) + { + e.name = crate.load_extern_crate( i.data.span, e.name ); + } ), (Struct, diff --git a/src/resolve/index.cpp b/src/resolve/index.cpp index f57fc3e6..2f4ece59 100644 --- a/src/resolve/index.cpp +++ b/src/resolve/index.cpp @@ -125,7 +125,7 @@ void Resolve_Index_Module_Base(const AST::Crate& crate, AST::Module& mod) _add_item(i.data.span, mod, IndexName::Namespace, i.name, i.is_pub, mv$(p)); ), (Crate, - ASSERT_BUG(i.data.span, crate.m_extern_crates.count(e.name) > 0, "Referenced crate '" << e.name << "' isn't loaded"); + ASSERT_BUG(i.data.span, crate.m_extern_crates.count(e.name) > 0, "Referenced crate '" << e.name << "' isn't loaded for `extern crate`"); p.bind( ::AST::PathBinding::make_Crate({ &crate.m_extern_crates.at(e.name) }) ); _add_item(i.data.span, mod, IndexName::Namespace, i.name, i.is_pub, mv$(p)); ), |