Skip to content

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 22 commits into from
Oct 6, 2015

Conversation

odersky
Copy link
Contributor

@odersky odersky commented Oct 6, 2015

Based on #805.

odersky added 22 commits October 1, 2015 19:33
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.
odersky added a commit that referenced this pull request Oct 6, 2015
@odersky odersky merged commit a8c8bda into scala:master Oct 6, 2015
@allanrenucci allanrenucci deleted the add-collection-strawman branch December 14, 2017 16:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants