| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
As demonstrated by tests/pos/hk-deep-subtype.scala, we can avoid some
deep subtype recursions that result in stack overflows by doing this.
Fix #943.
|
|\
| |
| | |
Swap order of arguments in annotations
|
| | |
|
|/
|
|
|
|
|
|
|
| |
The fact that the annotation comes first is weird, because when I write
an annotated type it's <type> @<annotation>. Also, annotated types
are like RefinedTypes in that they derive from a parent type. And in
RefinedTypes the parent comes first.
So swapping the arguments improves consistency.
|
|\
| |
| | |
New tests for tasty
|
|/ |
|
|\
| |
| | |
Fixed != comparison
|
|/
|
|
|
|
| |
By linter:
comparing values of types Char and String using `!=' will always yield
true
|
|\
| |
| | |
Fix ambiguity errors with polymorphic implicits
|
| |
| |
| |
| | |
Also reorder the cases to be in the same order as the documentation.
|
|/
|
|
|
|
|
|
|
| |
Previously, `isAsSpecific(alt1, tp1, alt2, tp2)` did not handle
having `tp2` be a polymorphic non-method type like `[A]Foo[A]`.
Also update the documentation of `isAsSpecific` to account for this
change, the new documentation is based on SLS ยง 6.26.3 but
adapted to reflect the code.
|
|\
| |
| | |
Fix #937
|
| | |
|
|/ |
|
|\
| |
| | |
Fix #938
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| | |
Getters transform `T` to `=> T`. This means that `=> T <: T`
might need to be true after getters. Observed in the wild
tree checking t938.scala after getters.
|
| |
| |
| |
| |
| | |
-Ycheck:era checked after phase resolveSuper. This was due to an overly simplistic containsPhase
check.
|
| |
| |
| |
| | |
Need to avoid also symbols in ThisTypes
|
|\ \
| |/
|/| |
Links between companions after unpickling are added
|
|/ |
|
|\
| |
| | |
Adapt type parameters of typed eta expansion according to expected variances
|
| |
| |
| |
| |
| |
| |
| | |
Just noted that the previous scope might have been too small.
We compute the bucket index with the table size before going into the
synchronized. But that might mean we see a stale table size.
Let's see what this gives us.
|
| |
| |
| |
| |
| |
| | |
The previous commit made packages always fully completed.
This is wrong - since new members can be added to packages
at any time, packages are never fully completed.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Fix problems arising when hierarchies of classes are under completion at the same time.
In this case it can happen that we see a subclass (e.g. Arrays.scala) which depends
on a superclass (e.g. GenTraversableLike.scala) that itself does not have its parents
defined yet. Previously, several things went wrong here
- One of the base classes would be marked as frozen, even though it dod not have all
members entered yet. This led to an error in finger printing.
- The baseclasses and super class bits of the subclass would be computed before the parents
of the middle class were known. The baseclasses would then be chached, leading to
false results for isDerivedFrom.
We need to refine the logic for computing base classes, super class bits, and fingerprints
to account for that issue.
|
| |
| |
| |
| |
| |
| | |
Adding parents signals (via SymDenotation.fullyDefined) that
the class can now be frozen. So this should be done only after all
members are entered.
|
| |
| |
| |
| |
| |
| | |
getSimpleName crashes on some module names created by scalac.
May help finding the partest issue. (reverted from commit c11646c40042404550eb983577c9e7096a40502a)
|
| |
| |
| |
| |
| | |
Exclude false positives such as `Lambda|` be requiring
that lambda traits are defined in the Scala package.
|
| |
| |
| |
| |
| |
| |
| | |
When eta expanding a type `C` to `[vX] => C[X]` the variance `v`
is now the variance of the expected type, not the variance of the
type constructor `C`, as long as the variance of the expected type
is compatible with the variance of `C`.
|
|\ \
| |/
|/| |
Fix #947
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| | |
... to show that we support implicit patterns.
|
| |
| |
| |
| |
| | |
This witnesses that #945 is fixed (by pushing a fix to the
Scala file to dotty-library).
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously all lower case names were treated as variables
in patterns. But that made code like
x: cls
crash the compiler if `cls` was a class. Also, it owuld preventing
this idiom unless one wrote
x: `cls`
We now do it like scalac and treat lower case names as variables
only in arguments of types.
|
|\
| |
| | |
Fix #941
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| | |
Linearize instead. It would be nice to be able to give a
migration warning here, but unfortunately we do not have
a position at the point the warning would be generated,
and it feels like overkill to do another kind of exception
that gets propagated and caught in typer.
|
| |
| |
| |
| |
| |
| | |
The previous test was too struct, missed cases where
some arguments of the function were unbound. i583a.scala
contains a test case.
|
| |
| |
| |
| | |
Flag them as "migration warning" rather than just "warning".
|
| |
| |
| |
| |
| |
| |
| |
| | |
If `x` is not a function or method, then `x _` should be disallowed.
scalac accepts this and converts it to () => x instead. I'd like
to drop this because it's unnecessary and non-obvious. If
-language:Scala2 is on, the behavior is like Scala 2's but
a migration warning is issued.
|
|/
|
|
|
|
| |
Make secondary constructor type parameters aliases of the
enclosing class parameters. Test case in i941.scala. Observed
in the wild when trying to typecheck Streams.scala.
|
|\
| |
| | |
Remove duplication of companion methods in Scala2Unpickler
|
|/ |
|
|\
| |
| | |
Get more collections whitelisted
|
| | |
|
| | |
|
| | |
|