| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
|
|
|
|
| |
- Use TypeLambda instead of PolyType.
- Further harmonize factory operations
|
|
|
|
|
| |
and generalize MethodParam to ParamRef, and
TypeParamInfo to ParamInfo
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
The SourceFile annotation is only present on the non-flattened top-level
class.
|
|
|
|
|
|
|
|
|
|
| |
With the previous rules, the two test cases produce a
diverging implicit expansion. We avoid this by creating
for every implicit by-name argument of type T a lazy implicit
value of the same type. The implicit value is visible for all
nested implicit searches of by-name arguments. That way,
we tie the knot and obtain a recursive lazy value instead of
a diverging expansion.
|
|\
| |
| | |
Fix #1812, Symbols.mapSymbols shouldn't replace denotations
|
| |
| |
| |
| | |
Reasoning similar to one in the previous commit also applies to annotations.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
It will use lazy types instead.
The current version transforms a type, with a context that has denotations
that may be forcefully replaced by mapSymbols. Types created during this
transformation may cache denots, that are-to-be replaced.
This is very problematic as this method is called from TreeTypeMap.withMappedSyms
in a fixed-point cycle, creating new symbols on every iteration. Those cached denotations
could make types keep symbols from previous iterations indefinitely.
The changed version does not transform the types eagerly, and instead makes them lazy.
Assuming there are no cycles, this should ensure correct ordering.
Unfortunatelly, at this point in the compiler we basically always touch everything,
and we can't even transform the info of denotation without this denotations info.
We basically have a chicked&egg problem here. To solve it, I use the same trick as used by
other lazy types by assigning an approximation of future type first.
This allows to pass the tests and makes dotty more robust, but I suspect this isn't a complete
fix and new similar bugs may arrive.
|
|\ \
| | |
| | | |
Add implicit function types
|
| |/
| |
| |
| |
| |
| |
| | |
This avoids denotation transforms when called at a later
phase because it cuts out current. Not needed in final
version of ShortcutImplicits, but I thought it was
good to have.
|
|/
|
|
|
|
|
|
|
| |
Typer#ensureReported's comment outlines an example where errors
could go unreported, resulting in error trees after typer without
any reported error messages. This commit makes sure that at least
one error is reported if a tree node has an error type.
Fixes #1802.
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
We run checkNoPrivateLeaks in the unpickler since last commit and this
is causing an issue related to privacy leaks. Give up and workaround
it since we're going to redesign how we handle privacy leaks because
of https://github.com/lampepfl/dotty/issues/1723 anyway.
|
|
|