summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2016-05-18 13:37:01 +0800
committerJohn Hodge <tpg@mutabah.net>2016-05-18 13:37:01 +0800
commit8f1a4e56874b0321081161aedfa4da768ffcc65e (patch)
tree487b8e19aade7114268a1db3fe7f6f321bf8a1ac
parent8b2dbb2481abadec1f5d5cb0af888ca2916b252f (diff)
downloadmrust-8f1a4e56874b0321081161aedfa4da768ffcc65e.tar.gz
HIR - Fix bug in initialising ExprNode_Let
-rw-r--r--Makefile1
-rw-r--r--src/hir/expr.hpp2
-rw-r--r--src/hir/from_ast.cpp2
-rw-r--r--src/hir/hir.hpp4
-rw-r--r--src/main.cpp2
-rw-r--r--src/parse/lex.cpp9
6 files changed, 15 insertions, 5 deletions
diff --git a/Makefile b/Makefile
index d1c5e561..e3ec8437 100644
--- a/Makefile
+++ b/Makefile
@@ -6,6 +6,7 @@ V ?= @
LINKFLAGS := -g
LIBS :=
CXXFLAGS := -g -Wall -std=c++14 -Werror
+#CXXFLAGS += -Wextra
#CXXFLAGS += -O3
CPPFLAGS := -I src/include/ -I src/
diff --git a/src/hir/expr.hpp b/src/hir/expr.hpp
index 8dbd6cf9..c47131b4 100644
--- a/src/hir/expr.hpp
+++ b/src/hir/expr.hpp
@@ -73,7 +73,7 @@ struct ExprNode_Let:
ExprNode_Let(::HIR::Pattern pat, ::HIR::TypeRef ty, ::HIR::ExprNodeP val):
m_pattern( mv$(pat) ),
m_type( mv$(ty) ),
- m_value( mv$(m_value) )
+ m_value( mv$(val) )
{}
NODE_METHODS();
diff --git a/src/hir/from_ast.cpp b/src/hir/from_ast.cpp
index b857ad67..2c97b550 100644
--- a/src/hir/from_ast.cpp
+++ b/src/hir/from_ast.cpp
@@ -597,7 +597,7 @@ void _add_mod_val_item(::HIR::Module& mod, ::std::string name, bool is_pub, ::H
auto& submod = *module.anon_mods()[i];
::std::string name = FMT("#" << i);
auto item_path = path + name;
- _add_mod_ns_item( mod, name, false, LowerHIR_Module(submod, mv$(item_path)) );
+ _add_mod_ns_item( mod, mv$(name), false, ::HIR::TypeItem::make_Module( LowerHIR_Module(submod, mv$(item_path)) ) );
}
return mod;
diff --git a/src/hir/hir.hpp b/src/hir/hir.hpp
index 0756b8b0..34a86dbc 100644
--- a/src/hir/hir.hpp
+++ b/src/hir/hir.hpp
@@ -135,6 +135,10 @@ public:
::std::unordered_map< ::std::string, ::std::unique_ptr<VisEnt<ValueItem>> > m_value_items;
// Contains types, traits, and modules
::std::unordered_map< ::std::string, ::std::unique_ptr<VisEnt<TypeItem>> > m_mod_items;
+
+ Module() {}
+ Module(const Module&) = delete;
+ Module(Module&& x) = default;
};
// --------------------------------------------------------------------
diff --git a/src/main.cpp b/src/main.cpp
index 369b1185..df8ca562 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -22,7 +22,7 @@ int g_debug_indent_level = 0;
bool debug_enabled()
{
- return g_cur_phase != "Parse";
+ return g_cur_phase != "Parse" && g_cur_phase != "Expand";
}
::std::ostream& debug_output(int indent, const char* function)
{
diff --git a/src/parse/lex.cpp b/src/parse/lex.cpp
index 0ed05123..7cf5ad76 100644
--- a/src/parse/lex.cpp
+++ b/src/parse/lex.cpp
@@ -1304,6 +1304,7 @@ Token TokenStream::innerGetToken()
}
Token TokenStream::getToken()
{
+ const bool DEBUG_PRINT_TOKENS = false;
if( m_cache_valid )
{
m_cache_valid = false;
@@ -1313,13 +1314,17 @@ Token TokenStream::getToken()
{
Token ret = m_lookahead.front();
m_lookahead.erase(m_lookahead.begin());
- ::std::cout << "getToken[" << typeid(*this).name() << "] - " << ret << ::std::endl;
+ if( DEBUG_PRINT_TOKENS ) {
+ ::std::cout << "getToken[" << typeid(*this).name() << "] - " << ret << ::std::endl;
+ }
return ret;
}
else
{
Token ret = this->innerGetToken();
- ::std::cout << "getToken[" << typeid(*this).name() << "] - " << ret << ::std::endl;
+ if( DEBUG_PRINT_TOKENS ) {
+ ::std::cout << "getToken[" << typeid(*this).name() << "] - " << ret << ::std::endl;
+ }
return ret;
}
}