| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| | |
Don't retain picklers until backend.
|
| |
| |
| |
| |
| |
| | |
The memory footprint captured by pickler seems to be about
1/3rd of total footprint. So we gain a lot by not making this
die sooner rather than later.
|
|\ \
| |/
|/| |
Towards correct positions in TASTY types
|
| |
| |
| |
| |
| | |
The qualifier of a This and the mixin of a Super were names, which meant
that their positions were lost. Now they are untyped idents.
|
| |
| |
| |
| |
| |
| |
| | |
Lots of other changes to make positions work out everywhere.
One important change is that now trees can be shared, just
as types can. This change improves memory requirements (a bit)
and also makes positions in shared trees more robust.
|
| |
| |
| |
| |
| |
| |
| |
| | |
Express them in terms PolyTypeTrees rather than having an
irregular, untyped only tparams field. This is necessary
if we want to pickle type trees instead of types, because
now the rhs of a typedef tells the whole story, so we are not
required any longer to use the info of the symbol.
|
|/
|
|
|
|
|
|
| |
We forgot the case where a hoistable method can still
refer to free variables that have to be passed using
outer pointers.
Fixes #1664.
|
| |
|
|\
| |
| | |
Fix #1637: Future defs are always OK
|
| |
| |
| |
| |
| |
| |
| | |
Drop special mode that handles future defs without which we
get DenotationNotDefinedHere errors. In more than a year, this
has only turned up false negatives. So I think it's better to
drop the check, and the contortions needed to deal with it.
|
|\ \
| |/
|/| |
Fix Tasty positions
|
| |
| |
| |
| |
| | |
Don't convert to a TypeTree in PostTyper, because that
loses internal positions.
|
| |
| |
| |
| |
| | |
Since we now transform all type trees, no need to have
a separate traversal for checking.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
We need to keep the original expressions around
for accurate linking with the source file. That holds
also if the expression has a constant type, so it should
not be converted to a literal before pickling.
Instead it will be converted in FirstTransform.
|
| |
| |
| |
| |
| |
| | |
If we want to pickle types with positions we should not
converyt to TypeTrees before pickling. Instead, type trees
are now converted to TypeTrees in FirstTransform.
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
Shared trees are pickled under multiple addresses. Previously, only the
last address was stored, which led to trees with unknown positions.
Now, all addresses are stored.
|
| |
| |
| |
| |
| |
| |
| |
| | |
The plan is to keep original type until after pickling,
and afterwards replace it with a simple TypeTree.
# Conflicts:
# src/dotty/tools/dotc/core/tasty/TreePickler.scala
|
| |
| |
| |
| |
| |
| |
| | |
The goal is that pickled and unpickled trees should print
the same with -Yprintpos. There are several reasons why this
is not the case so far. Some of them are fixed in this
commit.
|
| |
| |
| |
| |
| | |
Even if outer class & method isn't polymorpnic,
inner method might be. Need to handle this correctly.
|
| |
| |
| |
| | |
This commit also fixes #1583.
|
|\ \
| | |
| | | |
Fix #1567: Widen private constructor in value class
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Private or protected constructors of value classes need to be widenened
to public in order to enable boxing anywhere.
Technically we should also do something about qualified private constructors, but since we
want to get rid of them anyway it's urgent.
|
| | | |
|
| |/
|/| |
|
|\ \
| |/
|/| |
Small fixes to some warnings/comment typos
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| | |
Let them inherit the same traits and push as much
functionality as possibly into the common superclass
GenericType.
|
| |
| |
| |
| |
| |
| |
| |
| | |
Splitting or types is no longer needed with new scheme.
Replacing idents with This nodes is better done in ExplicitSelf.
So splitter now just distributes applications into and ifs.
|
| |
| |
| |
| |
| |
| |
| |
| | |
Makes sure the symbol in the tree can be approximately reconstructed by
calling member on the qualifier type.
Approximately means: The two symbols might be different but one still overrides
the other.
|
| | |
|
| |
| |
| |
| |
| |
| | |
Replacing or types by their dominators and implicit conversions
caused the code to do the right thing anyway, but with the arrival
of true or-types, this became a static error.
|
| | |
|
|/ |
|
|
|
|
|
| |
Better comments and refactorings that move some things around
so that less modules depend on Inliner.
|
|
|
|
|
|
|
|
|
|
|
|
| |
We got an error when we tried t opur @inline annotations
on function parameter types. It turned out that there were
lots of places where annotations on a type would break a test
in the compiler.
So we now drop annotations by default when dealiasing. We provide
dealiasKeepAnnots as an alternative that has the old behavior, i.e.
rewrap annotations after dealiasing. The only place where we found we
needed this was in the exhaustivity checker.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
After inlining we got a Ycheck error of the form:
found : `this.asInstanceOf[SelfType].C`
expected: `this.C`
The fact that it was related inlining was coincidental I think.
We fix the problem by expanding to
this.asInstanceOf[SelfType & this.type].C
instead.
|
| |
|
|
|
|
|
|
|
|
| |
1. Better formatting in TreeChecker error message
2. Re-enable printing what stack of what was checked
when an error occurred. This was disabled in Retyper
because we did not do it for the Inliner typer.
Now we distinguish on phase instead.
|
|
|
|
| |
Also, do some refactorings and fix some bugs in Inliner.
|
|
|
|
|
|
|
|
|
|
|
| |
This required a major change in the way positions are handled, as the
previous scheme did not allow to read the positions of arbitrary subtrees
selectively.
Fortunately, it's altogether a major simplification.
Also, this fixed a bug in the previous scheme, where positions were
generated before compactification, resulting in addresses being wrong.
|
| |
|
|
|
|
|
|
|
|
|
| |
... to tag inlined calls. Perform typings and transformations
of inlined calls in a context that refers to the INlined node
in its InlinedCall property.
The idea is that we can use this to issue better error
positions. This remains to be implemented.
|
|
|
|
| |
To do this, factor out Key from Attachment into a new type, Property.Key.
|
|
|
|
|
| |
To be done: outer accessors
To be done: error positions
|
|
|
|
| |
Prefer to access directly via symbol.
|
| |
|
|
|
|
| |
Thicket has a vararg constructor, so this syntax is redundant.
|