-
Notifications
You must be signed in to change notification settings - Fork 830
Revert #1650 (and #3366) due to regressions #4173
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
Conversation
|
Does this also fix #4063? If so can we add a test case for it? |
|
No, unfortunately that issue seems to be unrelated to these changes. This reversion is different, in the sense that there were no new features in that commit, only (a very marginal) speed-up. |
|
Okay ... this looks good to me. @dsyme can you run your eyes over this. Otherwise, I will merge it tomorrow evening. |
|
@gusty @KevinRansom The main thing I looked for was that this PR adds a test to capture the regression. Which it does. So tall is good, thanks for merging |
* Add option to toggle unused declarations analyzer (dotnet#4074) * Add option to toggle unused declarations analyzer * Better name and handle registering code fixes. This will ensure that if someone uses warnon:1182, we won't suggest fixes if they've turned off the feature. * Revert dotnet#1650 (and dotnet#3366) (dotnet#4173) * Fix error logging in brace matching code (dotnet#4140) * Remove error logger pushing code * Update service.fs * Fix dotnet#4200: Vsix: fix empty "New file" window for web projects (dotnet#4202) * LOC CHECKIN | visualfsharp - master | 20180112 (dotnet#4194) * Fixed FCS netcore tests (dotnet#4180) * Remove ambiguous resolution error FS0332 (dotnet#4170) * Add IsInteractive to parsing options for script load closures (dotnet#4169) * Add IsInteractive to FSharpParsingOptions * Add test * Set serializable bit for all serializable types (dotnet#4211) * Minor fix (dotnet#4195) on string 58. * Symbols API: add Index to active pattern case, Name to pattern group (dotnet#4222) * Symbols API: add Index to active pattern case, Name to pattern group * Symbols API: add active pattern case use tests * don't rebuild (dotnet#4230) * Optimize in FCS * Transport tcConfig * Cleanup * Replace more ILAsm in Exprs * More ILAsm replacements * update resource name * Added some tests
This reverts commit f9893b6.
|
that's what I thought, but I tried to rebase #4285 on before and after the PR. but maybe I did something wrong |
This reverts commit f9893b6.
This reverts commit f9893b6.
Revert of #4173 in dev15.6
* Optimize in FCS * Transport tcConfig * Cleanup * Replace more ILAsm in Exprs * More ILAsm replacements * update resource name * Added some tests (#40) * Add option to toggle unused declarations analyzer (#4074) * Add option to toggle unused declarations analyzer * Better name and handle registering code fixes. This will ensure that if someone uses warnon:1182, we won't suggest fixes if they've turned off the feature. * Revert #1650 (and #3366) (#4173) * Fix error logging in brace matching code (#4140) * Remove error logger pushing code * Update service.fs * Fix #4200: Vsix: fix empty "New file" window for web projects (#4202) * LOC CHECKIN | visualfsharp - master | 20180112 (#4194) * Fixed FCS netcore tests (#4180) * Remove ambiguous resolution error FS0332 (#4170) * Add IsInteractive to parsing options for script load closures (#4169) * Add IsInteractive to FSharpParsingOptions * Add test * Set serializable bit for all serializable types (#4211) * Minor fix (#4195) on string 58. * Symbols API: add Index to active pattern case, Name to pattern group (#4222) * Symbols API: add Index to active pattern case, Name to pattern group * Symbols API: add active pattern case use tests * don't rebuild (#4230) * Optimize in FCS * Transport tcConfig * Cleanup * Replace more ILAsm in Exprs * More ILAsm replacements * update resource name * Added some tests * test conditions update * test update * test condition update * test update * review update * added checked operators * fixed dual conversions * review fixes * more targeted replacements * adapt to latest * added more tests * added more tests * review fixes * fixed warnings
A few months ago I started suspecting that my reasoning behind #1650 was wrong.
Time proved it, I found many other breaking changes, some of them not that exotic as the one I found originally (see the one added as a test in this commit) and also caused some headaches with the mishandling of the new internal exception which btw I still find it from time to time, so it's still mishandled.
I think it's better to assume that I was wrong and rectify, in any case the speed up of this PR was very marginal (up to 2x in some cases whereas the other 3 PRs provided exponential speed up).
But now it's clear to me that when the resolution fails in that
SolveMemberConstraintfunction, for whatever reason, we shouldn't abort in the case of unresolved overload because that will prevent in some cases to analyze further and re-run the resolution with more information which would lead to the right candidate selection.The question remains open as to why can't we commit the trait solution before short-cutting the type equivalence
if ty1 === ty2 then CompleteD else, my impression is that there's still some dark logic there which is not 100% correct, but now I'm sure this is not the answer.