-
Notifications
You must be signed in to change notification settings - Fork 789
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
Make ILTypeDef interface calculation lazy #17392
Conversation
❗ Release notes required
|
It appears that important conflicting changes have occurred during this time |
@DedSec256 yes, likely due to nullness finally merged, sorry. Let us know if you need any help with conflicts. |
@DedSec256 : Interface implementation can have attributes on it (not expressible in F#/C#, but in IL it is) and C# nullness metadata export makes use of it. The nullness PR started to read it together with interface implementations, which will likely be the biggest conflict - let me know if you need any help with that. Otherwise, once conflicts and CI are resolved, this should be good to be merged. |
This PR probably requires changes to the API, so some work is still in progress. |
633bed8
to
161af55
Compare
In this PR, the interface implementations and their custom attributes have been combined into a single type |
Converted to draft for now, lemme know if you need any help resolving issues/testing. |
b08e2ca
to
5214c00
Compare
Benchmarks update
|
Is this ready now @DedSec256? Nevermind one failing test, it's failing everywhere now. |
Alex @DedSec256 , can I move it out of draft now that all is passing? |
Thanks @DedSec256! |
As stated in #16168
By analogy with custom attributes, reading interfaces is really time-consuming and
ILTypeDef
constructor is a public API but lacks the ability to pass lazy computation of interfaces.This PR proposes the ability to pass lazy computation of interfaces to
ILTypeDef
constructor.As evidence of the need for lazy calculation even for FCS default interfaces reading implementation, a benchmark was conducted for analysis of all files in ReSharper.FSharp/FSharp.Psi.Services with some additional unused opens,
48 files & 471 dll references required for project analysis were taken