summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJohn Hodge <tpg@ucc.asn.au>2019-03-02 19:30:04 +0800
committerJohn Hodge <tpg@ucc.asn.au>2019-03-02 19:30:04 +0800
commitac1133b8af5d6bd35523635377285039db925a4e (patch)
treee3af7984bf9645d91a5ee9e75504df413a1defd5 /src
parent6013ebc332f9b55658c0cc548ccff7cc58e34d00 (diff)
downloadmrust-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.cpp6
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)) );