summaryrefslogtreecommitdiff
path: root/src/mir/from_hir.cpp
diff options
context:
space:
mode:
authorJohn Hodge <tpg@ucc.asn.au>2017-07-02 10:06:59 +0800
committerJohn Hodge <tpg@ucc.asn.au>2017-07-02 10:06:59 +0800
commit115c56651d5cb352162b45269c3e09832c2fff40 (patch)
tree9b819272df0116948da197891ec567d0de635d0e /src/mir/from_hir.cpp
parenta6e215ef782b7cc7351989697d9ba189f76b119b (diff)
downloadmrust-115c56651d5cb352162b45269c3e09832c2fff40.tar.gz
MIR Gen - Track states for arguments (and directly use arguments where possible)
Diffstat (limited to 'src/mir/from_hir.cpp')
-rw-r--r--src/mir/from_hir.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/mir/from_hir.cpp b/src/mir/from_hir.cpp
index 149d53ea..bc9b04a7 100644
--- a/src/mir/from_hir.cpp
+++ b/src/mir/from_hir.cpp
@@ -2252,8 +2252,15 @@ namespace {
unsigned int i = 0;
for( const auto& arg : args )
{
- ev.define_vars_from(ptr->span(), arg.first);
- ev.destructure_from(ptr->span(), arg.first, ::MIR::LValue::make_Argument({i}));
+ const auto& pat = arg.first;
+ if( pat.m_binding.is_valid() && pat.m_binding.m_type == ::HIR::PatternBinding::Type::Move )
+ {
+ }
+ else
+ {
+ ev.define_vars_from(ptr->span(), arg.first);
+ ev.destructure_from(ptr->span(), arg.first, ::MIR::LValue::make_Argument({i}));
+ }
i ++;
}