-
Notifications
You must be signed in to change notification settings - Fork 1.1k
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
Instantiate constraint entries when updated to equal bounds #20208
Closed
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sure, let me check |
odersky
requested changes
Apr 17, 2024
EugeneFlesselle
force-pushed
the
constraint-replace
branch
from
April 17, 2024 13:58
8daccbd
to
8237d09
Compare
I couldn't figure out how to test the changes with @jchyb could you run it again ? |
EugeneFlesselle
changed the title
[WIP] Retry
Collapse equal bounds when replacing parameter in ordering constraint
Apr 17, 2024
constraint.replace
after constraint.updateEntry
odersky
approved these changes
Apr 17, 2024
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.
LGTM!
EugeneFlesselle
force-pushed
the
constraint-replace
branch
from
April 22, 2024 17:45
8237d09
to
3d35817
Compare
See sbt-test/source-dependencies/inline-rec-change-typaram for an example
Perfomance measurements: Before changes:
After changes:
|
EugeneFlesselle
changed the title
Collapse equal bounds when replacing parameter in ordering constraint
Instantiate constraint entries when updated to equal bounds
Apr 22, 2024
WojciechMazur
pushed a commit
that referenced
this pull request
Jul 8, 2024
as an optimization In #20120, we reach constraints with equal bounds that are intersection types, they are formed from multiple successive calls to `addOneBound`. We miss the `replace` optimization in this case because the bounds only become equal progressively, and we are only checking for equality with the constraint being added. Additionally, we recheck for equal bounds after `constraint.updateEntry` as checking `isSub` can have narrowed the bounds further. #19955 is an example where this second optimization applies. Fix #20120 Close #20208 the original implementation [Cherry-picked c608177]
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Checking
isSub
on the resulting bounds may have introduced new constraints, which might allow us to replace the type parameter entirely.Adapted from #20200
@jchyb can you test if this also addresses the performance issue in #20120 ?