| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|\
| |
| | |
Fix #1803: Infer type parameters of anonymous class parents from expected type
|
| |
| |
| |
| |
| |
| |
| | |
If a parent type of an anonymous class is an Ident or Select which refers
to a parameterized type, use the expected type to infer its type parameters.
Fixes #1803.
|
|\ \
| | |
| | | |
Fix #1797: Allow case class params with names _1, _2, ...
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This was not possible before because it clashed with the automatically
generated name of the accessor. We now allow it, by simply taking the
parameter(accessor) itself as the case class accessor if it already has
that name. But you still cannot write
case class C(_2: Int, _1: String)
nor should you be able to do this.
|
|\ \ \
| |_|/
|/| | |
Fix #1755: Make sure references in outer args are accessible
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Needed a fixup action in ExplicitOuter to avoid references to
module's This from outside their scope.
The problem is fixed, but I wish I understood better the root cause.
|
|\ \ \
| | | |
| | | | |
Fix #1806: Define outer accessors at the right phase
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Some outer accessors were defined at phase explicitOuter,
but were entered into the scope of their enclosing class only
at phase explicitOuter + 1. This turned them to stale symbols
when trying to access them at a later run, because at their
initially valid phase they were not found as members of
their owner.
|
| | | | |
|
|\| | |
| |_|/
|/| | |
Fix #1790: Change by-name pattern matching.
|
| | |
| | |
| | |
| | | |
This implements the rules laid down in #1805.
|
| | |
| | |
| | |
| | | |
New implementation following the scheme outlined in #1790.
|
|\ \ \
| | | |
| | | | |
Fix #1784: allow to omit types for local implicit vals
|
| | | |
| | | |
| | | |
| | | | |
Needed an // error annotation
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Since we now allow to drop the explicit type of a local implicit val
it can happen that this causes a cyclic reference, namely when the
typechecking of the right-hand side involves an implicit search.
It's unpractical and fragile to avoid this. Instead we give now
a nice error message explaining the problem and how to fix it in
source code.
|
| | | | |
|
|\ \ \ \
| | | | |
| | | | | |
Fix checks related to value classes
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
|\ \ \ \ \
| | | | | |
| | | | | | |
fix #1779: support $_ and $_id in interpolated string
|
| | | | | | |
|
| | | | | | |
|
| |_|_|/ /
|/| | | |
| | | | |
| | | | |
| | | | |
| | | | | |
- Add tests that work to pos/neg, tests that don't work yet to pending/pos/neg.
- Also, change .gitignore to allow for a local directory.
- Also add a draft page to the docs.
|
|\ \ \ \ \
| | | | | |
| | | | | | |
[REPL] Add show capability to common types
|
| | | | | | |
|
| | | | | | |
|
|\ \ \ \ \ \
| |_|_|_|/ /
|/| | | | | |
Fix #1776: Avoid interaction between parameter forwarding and elimByName
|
| | | | | | |
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
Fix #1757: Be more careful about positions of type variable binders
|
| | |_|_|_|/
| |/| | | | |
|
|\ \ \ \ \ \
| |_|/ / / /
|/| | | | | |
Fix #1756: Use lexically enclosing class as start of outer path.
|
| | | | | | |
|
| |/ / / /
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
We confused the enclosing class (which skips the current class in super
call contexts) and the lexically enclosing class in three locations
that all had to do with the start of an outer path.
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Fix #1765: Context bounds and denotation handling
|
| |/ / / /
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Once the context-bounds desugaring of i1765.scala was fixed, another problem came up:
We hit an invalid denotation due to some interaction between mixin and memoize.
It turned out that `insertInsteadOf` did not do what its doc comment claimed: it did
not store a forwarding pointer `nextInRun` in the overwritten denotation. Once that
was fixed we also needed to fix a follow-on erorr that now we could have chains of
invalid denotations linked by `nextInRun`.
|
|\ \ \ \ \
| |_|_|/ /
|/| | | | |
Fix #1751: Make dominator work after erasure
|
| |/ / /
| | | |
| | | |
| | | |
| | | |
| | | | |
i1751.scala shows a case where we need to compute the approximation
of an or-type during erasure. This can lead to an empty set of common
classes because Any does not exist anymore after erasure.
|
|\ \ \ \
| | | | |
| | | | | |
Fix #1773: handle patterns in interpolated string
|
| | | | | |
|
|/ / / / |
|
|\ \ \ \
| | | | |
| | | | | |
Fix #1639: Changes around implicits and apply methods
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This can lead to stackoverflow, as i1639.scala shows.
Fixes #1639.
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Drop function 22 limit
|
| | |_|/ /
| |/| | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Functions with more than 22 parameters are now
automatically converted to functions taking
a single object array parameter.
This has been achieved by tweaking erasure.
Other things I have tried that did ot work out well:
- Use a single function type in typer. The problem with this
one which could not be circumvented was that existing higher-kinded
code with e.g. Funcor assumes that Functon1 is a binary type constructor.
- Have a late phase that converts to FunctonXXL instead of
doing it in erasure. The problem with that one was that
potentially every type could be affected, which was ill-suited
to the architecture of a miniphase.
|
|\ \ \ \ \
| |_|_|/ /
|/| | | | |
Fix #1665: Check that != has an operand on the left.
|
| | |_|/
| |/| | |
|