diff options
author | John Hodge <tpg@ucc.asn.au> | 2018-01-20 14:29:34 +0800 |
---|---|---|
committer | John Hodge <tpg@ucc.asn.au> | 2018-01-20 14:29:34 +0800 |
commit | 54b65a5b38728944a7f3fcf1fb23b31e418a9af0 (patch) | |
tree | 85d3e675c9e2f3339f4b79a34d5a0ccc7a5f00f8 /src | |
parent | 7a6f50e15b3856e07067a32585d194cc82701d39 (diff) | |
download | mrust-54b65a5b38728944a7f3fcf1fb23b31e418a9af0.tar.gz |
HIR Serilise - Don't save remote lang items
Diffstat (limited to 'src')
-rw-r--r-- | src/hir/serialise.cpp | 13 | ||||
-rw-r--r-- | src/main.cpp | 8 |
2 files changed, 18 insertions, 3 deletions
diff --git a/src/hir/serialise.cpp b/src/hir/serialise.cpp index c31c84fc..455d49ef 100644 --- a/src/hir/serialise.cpp +++ b/src/hir/serialise.cpp @@ -272,7 +272,18 @@ namespace { } serialise_strmap(crate.m_exported_macros); - serialise_strmap(crate.m_lang_items); + { + decltype(crate.m_lang_items) lang_items_filtered; + for(const auto& ent : crate.m_lang_items) + { + if(ent.second.m_crate_name == "" || ent.second.m_crate_name == crate.m_crate_name) + { + ::std::cerr << "Lang item " << ent << ::std::endl; + lang_items_filtered.insert(ent); + } + } + serialise_strmap(lang_items_filtered); + } m_out.write_count(crate.m_ext_crates.size()); for(const auto& ext : crate.m_ext_crates) diff --git a/src/main.cpp b/src/main.cpp index af82d549..a07cddd2 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -365,7 +365,9 @@ int main(int argc, char *argv[]) if( crate.m_crate_type == ::AST::Crate::Type::Executable || params.test_harness || crate.m_crate_type == ::AST::Crate::Type::ProcMacro ) { bool allocator_crate_loaded = false; + ::std::string alloc_crate_name; bool panic_runtime_loaded = false; + ::std::string panic_crate_name; bool panic_runtime_needed = false; for(const auto& ec : crate.m_extern_crates) { @@ -376,15 +378,17 @@ int main(int argc, char *argv[]) if(ec.second.m_hir->m_lang_items.count("mrustc-allocator")) { if( allocator_crate_loaded ) { - ERROR(Span(), E0000, "Multiple allocator crates loaded"); + ERROR(Span(), E0000, "Multiple allocator crates loaded - " << alloc_crate_name << " and " << ec.first); } + alloc_crate_name = ec.first; allocator_crate_loaded = true; } if(ec.second.m_hir->m_lang_items.count("mrustc-panic_runtime")) { if( panic_runtime_loaded ) { - ERROR(Span(), E0000, "Multiple panic_runtime crates loaded"); + ERROR(Span(), E0000, "Multiple panic_runtime crates loaded - " << panic_crate_name << " and " << ec.first); } + panic_crate_name = ec.first; panic_runtime_loaded = true; } if(ec.second.m_hir->m_lang_items.count("mrustc-needs_panic_runtime")) |