rust/src/librustc_trans_utils
bors d6d09e0b4d Auto merge of #45879 - nikomatsakis:nll-kill-cyclic-closures, r=arielb1
move closure kind, signature into `ClosureSubsts`

Instead of using side-tables, store the closure-kind and signature in the substitutions themselves. This has two key effects:

- It means that the closure's type changes as inference finds out more things, which is very nice.
    - As a result, it avoids the need for the `freshen_closure_like` code (though we still use it for generators).
- It avoids cyclic closures calls.
    - These were never meant to be supported, precisely because they make a lot of the fancy inference that we do much more complicated. However, due to an oversight, it was previously possible -- if challenging -- to create a setup where a closure *directly* called itself (see e.g. #21410).

We have to see what the effect of this change is, though. Needs a crater run. Marking as [WIP] until that has been assessed.

r? @arielb1
2017-11-21 22:52:19 +00:00
..
Cargo.toml Move collector to rustc_trans_utils 2017-10-19 11:01:31 +02:00
collector.rs Always treat #[rustc_std_internal_symbol]s as root TransItems. 2017-11-07 16:41:42 +01:00
common.rs Don't duplicate logic of when an Instance requests to be inlined. 2017-11-07 08:54:38 +01:00
lib.rs Don't duplicate logic of when an Instance requests to be inlined. 2017-11-07 08:54:38 +01:00
link.rs std: Add a new wasm32-unknown-unknown target 2017-11-19 21:07:41 -08:00
monomorphize.rs Auto merge of #45879 - nikomatsakis:nll-kill-cyclic-closures, r=arielb1 2017-11-21 22:52:19 +00:00
trans_crate.rs rustc_driver: base extern query providers on local ones. 2017-11-12 18:20:15 +02:00
trans_item.rs Move type_has_metadata to trans_utils 2017-10-27 23:36:18 +02:00