Fix StackOverflow in non-recursive bindings checker#16908
Fix StackOverflow in non-recursive bindings checker#16908vzarytovskii merged 5 commits intodotnet:mainfrom
Conversation
❗ Release notes required
|
|
/run fantomas |
Co-authored-by: vzarytovskii <1260985+vzarytovskii@users.noreply.github.com>
|
Ran fantomas: https://github.com/dotnet/fsharp/actions/runs/8360815685 |
brianrourkeboll
left a comment
There was a problem hiding this comment.
Test cases addednot applicable
Would a test that type-checks a module with a few thousand let-bindings not make sense?
We have no way of running fscAnyCpu (and it's only reproduces on full CLR on any cpu) outside of fsharpqa, and I don't want to add it there since we try to get rid of it. |
Remove commented-out code
|
The description is a little misleading - the behavior is still cancellable, it just does not use the cancellable-builder/CE anymore, right? |
Well, yes and no. Before it could cancel on more occasions. Now it's only explicit in the beginning + when running cancellable inside. |
Description
Fixes #16867 by making main recursive checking function non-cancellable (and tail recursive). It's hard to make builder work under stack guards, since it needs to be calling guard from
Bind,ReturnFromandBindReturn.This also adds additional activity logging for the stack guards (only when subscribed).
@dotnet/fsharp-team-msft do we want to backport it to VS17.9?
Checklist
Test cases addednot applicablePerformance benchmarks added in case of performance changesnot applicable