| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
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.
|
|
|
|
|
|
|
|
| |
Many small and large changes. Added samplePhase to demonstrate functionality.
To test functioning, run the compiler with args
tests/pos/uncurry.scala -Ylog:sample,terminal
|
|
|
|
|
|
|
| |
Added general way to put attachments on some base type (which needs to inherit from Attachment.Container).
Used it to turn typedTree map into an attachment.
Also, moved DotClass to dotc.util.
|
|
|
|
|
| |
Otherwise we get spurious "compiled twice" errors on every symbol defined in a run after the first one.
Also, fixed a bug so that now run ids are correctly incremented.
|
|
|
|
|
| |
Some initial bug fixes.
Added -explaintypes diagnostics.
|
| |
|
|
|
|
| |
Still fighting with CyclicReference errors.
|
| |
|
|
|
|
| |
Made trees printable in plain mode (refined mode still missing).
|
|
|
|
|
|
|
| |
Added reporters.
Added context for signatures.
Implemented method signatures via erasure.
Refined derivedNameType handling.
|
|
|