summaryrefslogtreecommitdiff
path: root/src/hir/deserialise.cpp
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2016-08-29 16:47:26 +0800
committerJohn Hodge <tpg@mutabah.net>2016-08-29 16:47:26 +0800
commit52370f0a5abacb892b6a7bc24df9c1d232269b4c (patch)
tree7ac34fed7ad08a0cd9617ac18877d0b3d661ab82 /src/hir/deserialise.cpp
parentbcbabdf4ef468bc7a45732354e32b1baf5d95eee (diff)
downloadmrust-52370f0a5abacb892b6a7bc24df9c1d232269b4c.tar.gz
HIR Deserialise - Hackily set crate names, clean up a little
Diffstat (limited to 'src/hir/deserialise.cpp')
-rw-r--r--src/hir/deserialise.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/hir/deserialise.cpp b/src/hir/deserialise.cpp
index 40a98154..e0b12f92 100644
--- a/src/hir/deserialise.cpp
+++ b/src/hir/deserialise.cpp
@@ -20,10 +20,11 @@ namespace {
class HirDeserialiser
{
-
+ const ::std::string& m_crate_name;
::std::istream& m_is;
public:
- HirDeserialiser(::std::istream& is):
+ HirDeserialiser(const ::std::string& crate_name, ::std::istream& is):
+ m_crate_name( crate_name ),
m_is(is)
{}
@@ -731,8 +732,12 @@ namespace {
::HIR::SimplePath HirDeserialiser::deserialise_simplepath()
{
TRACE_FUNCTION;
+ // HACK! If the read crate name is empty, replace it with the name we're loaded with
+ auto crate_name = read_string();
+ if( crate_name == "" )
+ crate_name = m_crate_name;
return ::HIR::SimplePath {
- read_string(),
+ mv$(crate_name),
deserialise_vec< ::std::string>()
};
}
@@ -1039,10 +1044,10 @@ namespace {
}
}
-::HIR::CratePtr HIR_Deserialise(const ::std::string& filename)
+::HIR::CratePtr HIR_Deserialise(const ::std::string& filename, const ::std::string& loaded_name)
{
::std::ifstream in(filename);
- HirDeserialiser s { in };
+ HirDeserialiser s { loaded_name, in };
try
{