TypeComparer: delay looking up members of AndTypes #979
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.
In ParFactory.scala we have checks that look like:
where
Foo
is a recursive type.Before this commit, we would first try to check this by looking up
Bar
in the
AndType
on the left, which means looking it up in both branchesand then merging the result, but the merge requires more subtyping
checks, which in turn require looking up a member inside an
AndType
,seemingly ad infinitum.
We now avoid this by checking if either branch of the
AndType
on the leftis a subtype of the
RefinedType
on the right before looking up a memberin the
AndType
itself.Review by @odersky