| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
- 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
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
|\ \
| | |
| | | |
Try fix #1786: support use package object as value
|
|/ / |
|
|\ \
| | |
| | | |
Fix #1776: Avoid interaction between parameter forwarding and elimByName
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | | |
Parameter forwarding is not geared to handle parameters of by-name types correctly
and consequently elimByName generates wrong code. Since it's a corner case it's
easiest by not applying the parameter forwarding optimization to by-name parameters.
|
|\ \ \
| | | |
| | | | |
Fix exhaustivity check test after repo restructuring
|
|/ / / |
|
|\ \ \
| | | |
| | | | |
Fix #1757: Be more careful about positions of type variable binders
|
| | | | |
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
We interpolate a type variable if the current tree contains the type variables
binding tree. Previously, this was the application owning the variable. However,
sometimes this tree is transformed so that the containment test fails, and
type variables are instantiated too late (in the case of #1757 this was never).
We fix this by
- setting the binding tree to the type tree that first contains the type variable
- making sure that tree is never copied literally anywhere else.
It's a tricky dance, but I believe we got it right now.
|
|\ \ \ \
| |_|/ /
|/| | | |
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`.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
The previous post-condition failed if a Ycheck was introduced between
memoize and constructors.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
With the change to the representation of higher-kinded type definitions,
context bounds could be hidden in the body of a type lambda. Need to
compensate for that.
|
| |/ /
| | |
| | |
| | | |
We were pushing the limit of 64 phases before.
|
|\ \ \
| | | |
| | | | |
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 #1702: handle ConstantType in TypeComparer
|
|/ / / |
|
|\ \ \
| | | |
| | | | |
Fix #1639: Changes around implicits and apply methods
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This can lead to stackoverflow, as i1639.scala shows.
Fixes #1639.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
When tracing i1639.scala it became apparent that we compute
a lot of companion refs. This commit avoids this by better
book-keeping what is valid and what is not and more
aggressive caching.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Error messages of nested implicit failures are now
reported with the top-level message if -explaintypes is set.
|
|\ \ \ \
| | | | |
| | | | | |
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.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Function classes beyond 22 are now generated on demand,
with no upper limit.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
We know create FunctionN types on demand whenever their name
is looked up in the scope of package `scala`. This obviates
the need to predefine function traits 23 to 30.
|