summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/expand/mod.cpp4
-rw-r--r--src/resolve/index.cpp2
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));
),