-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Add collection strawman #1 #820
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
Merged
Merged
Conversation
This file contains hidden or 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
Can assume P#T <: Q#T if P <: Q. This follows from the rules how we expand # to existentials.
Some subtype tests should not instantiate type variables, in particular those having to do with & and |.
withMode sets the whole mode, nit an individual bits. This was used wrongly in several places. Make this less of a trap by renaming withMode -> withModeBits.
Logging while printing messes up the recursion counts.
make successive underlying values an iterator (so that we do not run into a stackoverflow in case of cycles).
Avoid redundant computations when already in printing mode.
We had problems printing constraints which are ill-formed, because the basic operations & , | cause exceptions themselves. toString serves as a fallback if show does not work.
Cases like these (in fact one of the operads was a type variable the other its underlying polyparam) arose in pos/overloads.scala and caused deep subtype recursions.
Checking whether two alternatives are the same should not unify them by instantiating type variables.
Overall goal: Push backtracking deeper into the tree.
Iter2.scala fails with 6 errors, but succeeds once lubs and glbs do not try to unify under invariant type constructors.
There is a diff, but a minor one. Instead of (T? >: Int <: Int) we get (T? = Int) after pickling.
According to the new subtyping rules, T <: U ==> T#X <: U#X and T#x <: U#x Therefore type maps should treat the prefix of a named type covariantly.
This compiles only after the changes in this branch.
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.
Based on #805.