diff options
author | John Hodge <tpg@ucc.asn.au> | 2019-03-02 19:30:04 +0800 |
---|---|---|
committer | John Hodge <tpg@ucc.asn.au> | 2019-03-02 19:30:04 +0800 |
commit | ac1133b8af5d6bd35523635377285039db925a4e (patch) | |
tree | e3af7984bf9645d91a5ee9e75504df413a1defd5 /src | |
parent | 6013ebc332f9b55658c0cc548ccff7cc58e34d00 (diff) | |
download | mrust-ac1133b8af5d6bd35523635377285039db925a4e.tar.gz |
HIR Expand Closures - Rename closures to include a #, fix minor bug
Diffstat (limited to 'src')
-rw-r--r-- | src/hir_expand/closures.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/hir_expand/closures.cpp b/src/hir_expand/closures.cpp index bdf6ddf0..ee0cff08 100644 --- a/src/hir_expand/closures.cpp +++ b/src/hir_expand/closures.cpp @@ -349,6 +349,8 @@ namespace { { // NOTE: Fixup isn't needed, there's no self //fix_fn_params(code, closure_type, args_argent.second); + assert(code.m_bindings.size() > 0); + code.m_bindings[0] = ::HIR::TypeRef::new_unit(); return ::HIR::TraitImpl { mv$(params), {}, mv$(closure_type), make_map1( @@ -1178,7 +1180,7 @@ namespace { ::HIR::SimplePath root_mod_path(crate.m_crate_name,{}); m_cur_mod_path = &root_mod_path; m_new_type = [&](auto s)->auto { - auto name = FMT("closure_I_" << closure_count); + auto name = FMT("closure#I_" << closure_count); closure_count += 1; auto boxed = box$(( ::HIR::VisEnt< ::HIR::TypeItem> { false, ::HIR::TypeItem( mv$(s) ) } )); crate.m_root_module.m_mod_items.insert( ::std::make_pair(name, mv$(boxed)) ); @@ -1229,7 +1231,7 @@ namespace { unsigned int closure_count = 0; auto saved_nt = mv$(m_new_type); m_new_type = [&](auto s)->auto { - auto name = FMT("closure_" << closure_count); + auto name = FMT("closure#" << closure_count); closure_count += 1; auto boxed = box$( (::HIR::VisEnt< ::HIR::TypeItem> { false, ::HIR::TypeItem( mv$(s) ) }) ); mod.m_mod_items.insert( ::std::make_pair(name, mv$(boxed)) ); |