| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |/ / /
| | | |
| | | |
| | | | |
Fixes #1515. Review by @smarter.
|
|\ \ \ \
| | | | |
| | | | | |
Fix #1531: Ignore private members when looking for abstract ones
|
| |/ / /
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Private members do not override abstract ones. So when looking for
abstract members we need to search with `nonPrivateMember`, not
`member`.
Fixes #1531. Review by @smarter.
|
|\ \ \ \
| |/ / /
|/| | | |
Typer#escapingRefs: don't let the types of lower bounds escape
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
In 0efa171e8ccca0d49fc6d800fd21e29f7b7336fd I changed the definition of
NamedPartsAccumulator to exclude lower bounds as this is required for the
implicit search, but NamedPartsAccumulator is also used by
Typer#escapingRefs so in the following code:
class Foo[T]
val z = {
class C
??? : Foo[_ >: C]
}
the type of z was inferred to be Foo[_ >: C] instead of Foo.
To avoid this, NamedPartsAccumulator will only exclude lower bounds if
the parameter excludeLowerBounds is explicitely set to true.
No test because there is no way to detect that a type has escaped, this
might be something that could be added to TreeChecker.
|
|\ \ \ \
| | | | |
| | | | | |
Small fixes to some warnings/comment typos
|
| | | | | |
|
| | | | |
| | | | |
| | | | |
| | | | | |
The warning is invalid but Scalac can't tell.
|
| | | | | |
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Fix #1543: Ignore IgnoredProto when normalizing method application.
|
| | | | | | |
|
|\ \ \ \ \ \
| |_|_|_|_|/
|/| | | | | |
Fix erasure of "def foo[T]: Unit", do not box the return type
|
| | | | | | |
|
| | | | | | |
|
|\ \ \ \ \ \
| |/ / / / /
|/| | | | | |
Fix #1552: REPL file loading
|
| | | | | | |
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
If PolyTypes are to become value types we want to keep `=>` as the arrow
for consistency. `->` should be reserved for PolyTypes that do not have
side effects on instantiation.
|
| | | | | | |
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
The refactored logic only applies to infos of denotations, not
general types. The reactoring avoids special cases down the road
then PolyTypes and MethodTypes can be used for terms as well as
type(bounds).
|
| | | | | | |
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Otherwise we can run into problems when checking imports for e.g.
scala2Mode in later runs.
|
| | | | | | |
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
to account for the fact the GenericTypes are now TypeProxies.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Let them inherit the same traits and push as much
functionality as possibly into the common superclass
GenericType.
|
| | | | | | |
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Test case: orInf.scala. This showed a problem where an `either` operation
had to arbitrarily pick one constraint over another, leading to a type
error down the line. What happened was that a `constrainResult` generated
the constraint
Set[A] <: Set[String] | Set[Int]
But this constraint cannot be simplified without a cut and a resulting
loss of information. We avoid the problem by not constraining the result
if the prototype is a disjunction.
|
| | | | | | |
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
This happened for singletonOrs, and led to spurious errors there.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
For the moment, we do not know how to handle something like
1 | 2
or
x.type | y.type
correctly. So it's better to disallow these situations until we find a proper
solution.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Splitting or types is no longer needed with new scheme.
Replacing idents with This nodes is better done in ExplicitSelf.
So splitter now just distributes applications into and ifs.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Makes sure the symbol in the tree can be approximately reconstructed by
calling member on the qualifier type.
Approximately means: The two symbols might be different but one still overrides
the other.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
In fact all of dotty.language can be removed.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
If entries are type variables, we have to check their
instances for equality.
This came up onder the new or handling scheme.
|
| | | | | | |
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Don't replace them by their dominators, unless one of the following holds:
- language:Scala2 mode is on
- we are at the point of findMember selection
- we compare with a higher-kinded application
This means approximateUnion is now split into harmonizeUnion and
orDominator which each implement one of the former's two functionalities.
|
| | | | | | |
|
| | | | | | |
|
| |/ / / /
|/| | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Replacing or types by their dominators and implicit conversions
caused the code to do the right thing anyway, but with the arrival
of true or-types, this became a static error.
|
|\ \ \ \ \
| |_|_|_|/
|/| | | | |
Operation beautify error messages
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | | |
|