| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|\ \ \
| | | |
| | | | |
Tweaks to ExplicitOuter and TreeTypeMap
|
| | |/
| |/|
| | |
| | | |
The test fails if either of the previous two commits is missing.
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| | |
CheckNotPrivate now avoids private aliases, so that types sat prepresentable in
transformation phases.
This does not solve the problem that private classes or abstract types might leak coming
from Scala 2, but there is not really a good cure for that. We can reject them outright or
allow them under language:Scala2 and hope for the best.
|
|\ \
| |/
|/| |
Fix for separate compilation with value class issue (#1137)
|
| |
| |
| |
| | |
object - #1137)
|
|/
|
|
| |
Fixes #1052.
|
|\
| |
| | |
Change lambdalift - fasttrack
|
| | |
|
| | |
|
|/ |
|
|\
| |
| | |
Value classes: add support for private[this] parameter
|
| | |
|
|\ \
| |/
|/| |
Change is volatile 2
|
| |
| |
| |
| | |
Lets one also pass named arguments to methods.
|
| | |
|
| | |
|
| |
| |
| |
| | |
Also, add an unrelated test file to pos.
|
| | |
|
| | |
|
|\ \
| |/
|/| |
Neg tests check files for // error markers (rebased and updated)
|
| | |
|
| | |
|
| | |
|
|\ \
| | |
| | | |
ProtoTypes#wildApprox: fix LazyRef approximation
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Before this commit, the output of `wildApprox(A)` where `A <: Sys[LazyRef(A)]` was
`? <: Sys[LazyRef(() => wildApprox(A))]`. This lead to infinite
subtyping checks.
This is fixed by always approximating a LazyRef by an unbounded
wildcard. Since we only create LazyRefs when we encounter a cycle, this
should be safe.
Fix #1103.
|
|\ \
| |/
|/| |
Implement auto tupling of function arguments
|
| |
| |
| |
| | |
Former test no longer allowed after conforms/compatible change.
|
| |
| |
| |
| | |
Tests suggested by @retronym's comments on issue #897.
|
| |
| |
| |
| | |
Implements SIP #897.
|
|/ |
|
| |
|
|
|
|
| |
Fix #530, #654, #681, #684, #685
|
|\
| |
| | |
Change is volatile
|
| |
| |
| |
| |
| |
| | |
Tests with failed projections are moved to pos-scala2, which
was renamed from pos-special. Files in pos-scala2 are compiled
with -language:Scala2 option.
|
| |
| |
| |
| |
| |
| |
| | |
Replaces isVolatile, which is too weak (and more complicated).
Backwards compatibility with Scala2 is ensured by dropping the
requirement in Scala2 mode.
Fixes #1047, which now compiles without inifinite recursion.
|
|\ \
| |/
|/| |
Prune constraints that could turn into cycles
|
| |
| |
| |
| | |
Fixes #864. Review by @smarter.
|
|\ \
| | |
| | | |
Fix #1045
|
| | |
| | |
| | |
| | |
| | | |
See comment in Typer#approximateUnion for an explanation.
Fixes #1045.
|
| |/
| |
| |
| |
| | |
This gives in general a supertype, that's OK for approximation.
See ee76fda for an explanation.
|
|\ \
| | |
| | | |
Fix #1065 erasedLub for arrays of primitives.
|
| |/ |
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
| |
When `wildApprox` encounters a PolyParam it approximates it by its
bounds in the current constraint set, but this is incorrect if
`TypevarsMissContext` is set, we might get the bounds of another use of
this `PolyType`. This is exactly what happened in i1044.scala where the
implicit view `refArrayOps` needs to be used twice with two different
type parameters.
The fix is to approximate a PolyParam by its original bounds in its
PolyType if `TypevarsMissContext` is set.
This fix was inspired by the approach of #1054.
|
| |
|
|\
| |
| | |
Fix #998
|
| |
| |
| |
| | |
Needed a fix in approximateUnion.
|
|/
|
|
| |
Achieved by tweaking from where we get the parameter types of an eta-expansion.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When TypeVar#inst is empty but an instantiation exists in the typer
state, we should set ephemeral to true, because this instantiation will
be retracted if we throw away the current typer state.
This makes hkrange.scala pass, it compiled before but the type parameter
of `f` was inferred to be `Nothing` because of this bug, and this failed
Ycheck.
For anyone who wonders how caching bugs manifest themselves, here's what
happened in details in hkrange.scala:
1. In an ExploreTyperState we set `CC` to be `IndexedSeq` in the
constraint set
2. In that same typer state the TypeRef `CC[Int]` (it's a TypeRef
because `CC` is a type lambda) gets the denotation `IndexedSeq[Int]`,
which is correct, but the denotation is cached since `ephemeral` is
false, which is wrong.
3. Later, we retract the ExplorerTyperState, so `CC` is uninstantiated
again and unconstrained.
4. Then we do the subtyping check `CC[Int] <:< IndexedSeq[Int]`, because
the denotation of `CC[Int]` was cached, this returns true, but `CC` stays
unconstrained.
5. This means that when we instantiate `CC`, we get `Nothing`
After this fix, the TypeRef denotation is no longer cached, so when we
do `CC[Int] <:< IndexedSeq[Int]`, `CC` gets constrained as expected.
|
|
|
|
|
|
|
|
|
| |
Type params should be computed before computing the whole info of
a type. Without the patch we get a cyclic reference in the compileMixed
test.
Note that compileIndexedSeq does not pass with this commit (it passed
before), this is fixed in the next commit.
|
|
|
|
|
|
|
| |
Need to also look info refined types.
Need to handle case where we hit a NoCompleter again.
Fixes #974 and makes MutableSortedSetFactory in stdlib compile.
|