summaryrefslogtreecommitdiff
path: root/src/mir/from_hir.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mir/from_hir.hpp')
-rw-r--r--src/mir/from_hir.hpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/mir/from_hir.hpp b/src/mir/from_hir.hpp
index f899bc29..47bdfb5d 100644
--- a/src/mir/from_hir.hpp
+++ b/src/mir/from_hir.hpp
@@ -9,6 +9,7 @@
#include "mir.hpp"
#include <hir/type.hpp>
#include <hir/expr.hpp> // for ExprNode_Match
+#include <hir_typeck/static.hpp> // StaticTraitResolve for Copy
class MirBuilder;
@@ -74,6 +75,7 @@ class MirBuilder
{
friend class ScopeHandle;
+ const StaticTraitResolve& m_resolve;
::MIR::Function& m_output;
unsigned int m_current_block;
@@ -95,7 +97,7 @@ class MirBuilder
::std::vector<unsigned int> m_scope_stack;
ScopeHandle m_fcn_scope;
public:
- MirBuilder(::MIR::Function& output);
+ MirBuilder(const StaticTraitResolve& resolve, ::MIR::Function& output);
~MirBuilder();
// - Values
@@ -152,6 +154,9 @@ private:
void complete_scope(ScopeDef& sd);
// Helper - Marks a variable/... as moved (and checks if the move is valid)
void moved_lvalue(const ::MIR::LValue& lv);
+
+ void with_val_type(const ::MIR::LValue& val, ::std::function<void(const ::HIR::TypeRef&)> cb);
+ bool lvalue_is_copy(const ::MIR::LValue& lv);
};
class MirConverter: