| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
#2152 shows that dependent result type parameters can end up in
the types of terms, so we have to eliminate them. If we don't we
get orphan parameters in pickling.
Fix method name and comment
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
We now consider a type also as stable if it refers
to an ExprType whose result type is stable.
The previous commit made pos/z1720.scala break, because it
skolemized unstable argument types. This commit makes the test
pass again.
|
|
|
|
|
|
|
|
| |
1. Invalidate packageObj cache when entering a package object
2. Prefer package object members over same-named package members
unless we are in the scala package
3. Exclude package objects from no-double-bindings checks, since
package objects may now be visited before indexing them.
|
|\
| |
| | |
Deterministically randomises test compilation order
|
| |
| |
| |
| | |
The previous implementation would compile tests in different orders from machine to machine, depending on the order in which *.scala files are listed by the operating system.
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- split LambdaType.equals into two equals so that tests
are more specific (also avoids type testing against
a trait)
- re-order cases in some pattern matches with the aim to
(1) move common cases earlier, (2) move more expensive
trait type tests later.
|
| | |
|
| |
| |
| |
| |
| |
| | |
Two benefits: (1) less code. (2) finding subtle bugs about
parameter dependent method types. By merging with PolyTypes
we are forced to take parameter dependencies into account.
|
| |
| |
| |
| |
| | |
It's too surprising to leave it as a type proxy. In all circumstances except
erasure, it is not true that a PolyType is somehow the same as its result type.
|
| | |
|
| |
| |
| |
| | |
Use fromParams instead.
|
| |
| |
| |
| |
| | |
- Use TypeLambda instead of PolyType.
- Further harmonize factory operations
|
| | |
|
| | |
|
| |
| |
| |
| | |
Replace with LambdaType
|
| |
| |
| |
| | |
Replace with ParamRef
|
| | |
|
| |
| |
| |
| |
| | |
... to distinguish between HK(proxy) and *(ground) types.
Also, refactor some more methods to keep it DRY.
|
| |
| |
| |
| | |
Also, rename LambdaOver{Type,Term}s to {Type,Term}Lambda
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| | |
Use an abstract type instead.
|
| |
| |
| |
| | |
Trying to bring PolyTypes closer to TypeLambdas
|
| |
| |
| |
| |
| |
| | |
MethodTypes have paramTypes whereas PolyTypes have paramBounds.
We now harmonize by alling both paramInfos, and parameterizing
types that will become common to both.
|
| |
| |
| |
| |
| | |
and generalize MethodParam to ParamRef, and
TypeParamInfo to ParamInfo
|
| |
| |
| |
| | |
and fix typo
|
|/
|
|
|
|
|
|
|
|
| |
This leads to a slight overall simplification, harmonizes pickle
format with internal representation, and makes MethodTypes and
PolyTypes more similar to each other.
I believe the change is useful as it is, but in particular it is
a useful step for an eventual unification of MethodTypes and
PolyTypes.
|
|
|
|
| |
Making a name shadowed lost the signature before.
|
| |
|
|
|
|
|
|
| |
This was introduced in the previous commit and caused unpickling
failures, we are now more conservative and only check the Private flag
on SymDenotations so we don't have to load any other denotation.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ParamForwarding creates the following forwarder in B:
private[this] def member: Int = super.member
Where the type for `super.member` is `TermRef(SubA, member)` and the
symbol is the `val member` in `A`.
So far this is correct, but in later phases we might call `loadDenot` on
this `TermRef` which will end up calling `asMemberOf`, which before this
commit just did:
prefix.member(name)
This is incorrect in our case because `SubA` also happens to have a
private `def member`, which means that our forwarder in B now forwards
to a private method in a superclass, this subsequently crashes in
`ExpandPrivate`.
(Note: in the bytecode, a private method cannot have the same name as an
overriden method, but this is already worked around in EnsurePrivate.)
The fix is simple: when we recompute a member, we should only look at
private members if the previous denotation was private.
|
|\
| |
| | |
Fix #2051: allow override T with => T or ()T
|
| | |
|
|\ \
| | |
| | | |
Tailrec for derivesFrom/lookupRefined/classSymbol/classSymbols
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | |
| | | |
All PolyTypes get variances passed, so isTypeLambda is always true
and the deleted assert is never triggered.
|
| | |
| | |
| | |
| | |
| | |
| | | |
The dropped method takes direct parameter types but a result type expression.
Since parameter types are now in general dependent as well, that method is
mostly redundant.
|
| | | |
|
| | |
| | |
| | |
| | |
| | | |
Also: check validity of method types, so that no
forward references occur.
|
| | |
| | |
| | |
| | |
| | | |
To allow for dependencies between method type parameters, construct MethodTypes
from a closure that maps the currently constructed MethodType to its parameter types.
|
| |/
|/| |
|
| | |
|
|\ \
| | |
| | | |
Fix #2064: Avoid illegal types in OrDominator
|