| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
And remove the not used Printer#echo
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
Fix blocker bug reported in #1114
I dislike this fix as now phase needs to know in advance
if it will ever need a companion for the class.
On the bright side, this change makes it clear
which phases need companions
|
|
|
|
|
| |
Allows to replace existing phase by sequence of new
phases.
|
|
|
|
|
| |
-Ycheck:era checked after phase resolveSuper. This was due to an overly simplistic containsPhase
check.
|
|\
| |
| |
| |
| | |
dotty-staging/fix-liftedTry-capturedVars-interaction
Fix lift try and captured vars interaction
|
| |
| |
| |
| |
| |
| |
| |
| | |
There were two architectural errors here, which confused TreeTransforms and MiniPhases
and which caused "NotDefinedHere" on transformFollowing:
1. TreeTransforms should not have idx fields, MiniPhases have them.2
2. TreeTransformers initialize arrays of MiniPhases not TreeTransforms.
|
|/ |
|
|
|
|
|
|
|
|
| |
LabelDefs reorders labels. As a result of reordering
label-def defined inside other label-def could be lifted outside.
LabelDefs doesn't update owner chains to represent this.
Making treeChecker aware of this.
|
|
|
|
|
|
|
|
|
|
|
| |
Skolemize unstable prefixes in asSeenFrom provided
- the prefix appears at least once in non-variant or contra-variant position
- we are in phase typer.
After typer, we have already established soundness, so there's no need to
do skolemization again. We can simply do the (otherwise unsound) substitution
from this-type to prefix.
|
|
|
|
|
| |
I scanned the main sources with IntellIJ's spell checker and
corrected what showed up.
|
|
|
|
|
|
|
| |
It seems wasteful to load the member classes even of classes that are not currently compiled.
It also makes us vulnerable to any misinterpretation of Java file formats. In th particular
case of #536, we parsed a class an anonymous Collection$1 which was referring to the type
parameter of its enclosing class, but was not diagnosed as an inner class of the enclosing class.
|
|
|
|
| |
This method will be needed to implement VCInline.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Due to a lot of error and workarounds required for backend not regress in terms of speed, I guess the original idea was to high to be reached..
Nevertheless it was good to try.
|
|
|
|
| |
Has been replaced by Getters, but some traces remained.
|
|
|
|
|
| |
Multi-phase periods mean that ctx.phaseId is no longer valid, which means
a lot of invariants break.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The datarace happened because for method "transform" implemented
by ResolveSuper which disambiguated overridden methods.
Previously, there was a reference FirstTransform.this.transform
of type termRefWithSig to the method implemented in a super trait. Now the same
reference points to the newly implemented method.
Solved because ResolveSuper now generates symbolic references.
|
|
|
|
| |
Allows to alter number of compilation units.
|
| |
|
| |
|
|
|
|
| |
... and add a gettersSettersPhase to Context.
|
|
|
|
|
|
|
|
| |
Some transformations encounter applications where new arguments ahve to be
supplied. The method type already accounts for these argument but the
Application node passed into TreeTransform#transformApply is constructed
with a cpy.Apply operation which does a type assignment. That type assignment
fails with a parameter mismatch unless relaxedTyping is on.
|
| |
|
|
|
|
|
|
|
| |
Have a general way how a phase can establish a postcondition which will be
checked each time a later phase is tree-checked.
Moves erasure constraints from TreeChecker to Erasure's post condition.
|
|
|
|
| |
Don't want stringly types for this.
|
|
|
|
|
| |
Most transformations are subclasses of phase. Having a generic name
like `name` in scope everywhere is therefore very risky.
|
|
|
|
|
|
|
|
| |
TreeTransforms are no longer phases. This allows to generate
new transforms in prepare... methods without running into the
problem that thee new transforms are undefined as phases.
It also makes for a cleaner separation of concerns.
|
|
|
|
|
| |
... so that it can be combined with TreeTransform in a trait composition
in a future dientanglement of TreeTransforms and Phases.
|
|
|
|
|
|
|
|
| |
This is still disabled, because the prepare machinery in transform
does not work yet. Concretely, prepare ops need to return a new TreeTransform
but that tree transform has an undefined phaase id.
We need some architectural changes to disentangle transforms from phases.
|
|
|
|
|
|
|
|
|
|
|
|
| |
1) We now always generate companion objects for classes. This is done in
mini-phase "companions", which also assures that companion-modules appear
after companion-classes.
2) PostTyperTransformers is gone; the part which normalizes trees has been
rolled into TreeTransform and the part which reordered companion classes
and modules is now in Companions.
Note: Some tests were deisabled; should be re-enabled by Dmitry where needed.
|
| |
|
|
|
|
|
| |
Add test whether we are after typer. Use it to assert that
eta expansion and implicit search do not happen after typer.
|
|
|
|
|
|
| |
Phases can now specify which phases should it follow.
Tree transforms can additionally specify which TreeTransforms
should have finished their processing of compilation units entirely.
|
|
|
|
|
|
| |
Added documentation for non-trivial logic in Contexts, Phases and
TreeTransforms.
Removed redundant vars and casts
|
|
|
|
|
| |
A list of names contains a phasegroup if it contains
any phase in the group.
|
|
|
|
| |
Squash was accidenbtally turned off before. Is now on again.
|
| |
|
|
|
|
| |
And avoid name clashes
|
|
|
|
|
|
| |
Previous version was wrong because every context is a fresh context at runtime,
so the overriding version would always be executed, which means that withPhase
becomes a side-effecting operation!
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Aims
1) next/prev should be context-independent. Phase now stores
its ContextBase in a field.
2) More robust handling of phaseNamed and the phase properties
erasedTypes, flattened, refchecked, etc. These were previously
dependent on when the first call to any of these methods was made, which
led to a data race.
There is now an init method in phases which centralizes all necessary intialization.
It is checked that a phase is initialized only once.
|
|
|
|
|
|
| |
All MiniPhases now as are full-fledged phases,
and are given their own periods and can register DenotTransformers.
MiniPhases belonging to same group(list) will be squashed to single phase.
|