diff options
author | John Hodge <tpg@ucc.asn.au> | 2017-07-02 10:06:59 +0800 |
---|---|---|
committer | John Hodge <tpg@ucc.asn.au> | 2017-07-02 10:06:59 +0800 |
commit | 115c56651d5cb352162b45269c3e09832c2fff40 (patch) | |
tree | 9b819272df0116948da197891ec567d0de635d0e /src/mir/from_hir.cpp | |
parent | a6e215ef782b7cc7351989697d9ba189f76b119b (diff) | |
download | mrust-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.cpp | 11 |
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 ++; } |