-
Notifications
You must be signed in to change notification settings - Fork 805
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix StackOverflow in non-recursive bindings checker #16908
Fix StackOverflow in non-recursive bindings checker #16908
Conversation
❗ Release notes required
|
/run fantomas |
Co-authored-by: vzarytovskii <1260985+vzarytovskii@users.noreply.github.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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
,ReturnFrom
andBindReturn
.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