| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
|\
| |
| | |
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 #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.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
In definitions some of the new... methods entered the created
symbol while others did not. We now make that distrinction clear
in the name.
|
|\ \ \ \
| |_|_|/
|/| | | |
Fix #1665: Check that != has an operand on the left.
|
| | | | |
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Need to evaluate annotation arguments in an expression context, since
classes defined in asuch arguments should not be entered into enclosing
class.
Fixes #1647
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
If we want to do annotation macros right, we need to add
annotations before completing definitions. This commit achieves
that by adding a new "phase" between index and typecheck.
|
| | | |
| | | |
| | | |
| | | | |
Got a "next on empty iterator" exception before.
|
| | | |
| | | |
| | | |
| | | | |
It was broken before, since it worked only on wildcard imports.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Honor the new scheme where any explicit import of a
root import will disable the root import.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
We got a hard to track down error when changing to the new
annotations elaboration scheme (should be in the next commit):
When running `testNonCyclic`, `DotClass` was not found in object Trees
even though it was imported from `util`. It turned out that the import
was ignored because the `util` symbol was completing.
This commit adds a warning when this happens. The warning currently applies
only to named imports because several false negatives were encountered if
we do this also on wildcard imports. I.e. we get a warning, but the searched
after symbol is not a member of the wildcard qualifier.
This commit also refactors namedImportRef, so that `site` is only
computed when the name to reseolve appears in the selector list.
That change made the previously observed error go away because less
is now forced.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Had duplications of `import` before.
Also: add import info when printing contexts.
|
| |/ /
|/| |
| | |
| | |
| | |
| | | |
In this case, a path went through a type parameter which was
aliased to a singleton type. Need to dealias to get to the
special case handling two paths.
|
| | | |
|
|\ \ \
| | | |
| | | | |
Fix #1707: Survive non-existing positions in parser
|
| | | | |
|
| | |/
| |/|
| | |
| | |
| | |
| | |
| | | |
Some trees, which do not consume input have unassigned positions (so that
they can fit in whatever range they are integrated). It's therefore risky
to take the start or end of a parsed tree's position. This commit guards
against the case where the position of the tree does not exist.
|
|\ \ \
| |/ /
|/| | |
Fix colons in printer
|
| | |
| | |
| | |
| | |
| | | |
This is done so that we can use show for the entire method except for
the ascribed type added by the compiler on success.
|
| | | |
|
| | | |
|
|/ /
| |
| |
| |
| | |
So far, only typed patterns an dunapply had GADT matching.
i1737.scala shows that we need to do the same thing for objects.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Fengyun's original solution was the right one. We cannot NOT
enter a package class into its parent scope, because reloading
the denotation with .member will fail. So we need to enter it and
compensate by adding a clause to `qualifies` in `typedIdent`.
Weirdly, this was noted only when running tasty_bootstrap from
a custom classpath in the new build setup. So it was pretty
tricky to diagnose.
|