about summary refs log tree commit diff
path: root/src/libstd/sys/unix/stack_overflow.rs
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2017-11-21 22:52:19 +0000
committerbors <bors@rust-lang.org>2017-11-21 22:52:19 +0000
commitd6d09e0b4dac93ae07dae6206bf95e7cea0124a2 (patch)
tree245513cfdfc7bac11b0e7049ea60bf9908b01216 /src/libstd/sys/unix/stack_overflow.rs
parent63739ab7b210c1a8c890c2ea5238a3284877daa3 (diff)
parent00732a31a0a9b00d4ffb333473ae95e66f8e1dfc (diff)
downloadrust-d6d09e0b4dac93ae07dae6206bf95e7cea0124a2.tar.gz
rust-d6d09e0b4dac93ae07dae6206bf95e7cea0124a2.zip
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
Diffstat (limited to 'src/libstd/sys/unix/stack_overflow.rs')
0 files changed, 0 insertions, 0 deletions