| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
Also, do some refactorings and fix some bugs in Inliner.
|
|
|
|
| |
Pickler drops Inlined nodes, so homogenize needs to do the same.
|
| |
|
|
|
|
|
| |
Safety measure: Inline only during typer, not when code
is generated in later phases.
|
| |
|
|
|
|
| |
Same test with separate compilation is in inlinePower
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. Don't retypecheck the arguments of an inlined epressions.
These might be very large (e.g. inlined track, or traceIndented in dotty)/
2. Keep track of inlined calls in context instead of
Inlined nodes. We only need the to compute the source file, the rest
is irrelevant.
3. In Def bindings of inlined by-name parameters, change owner of right
hand side. Otherwise we get incorrect owner chains.
4. In TreeTypeMap, treat Inlined in the same way as a block.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
| |
Inline trees can now be read form TASTY. However, positions are not set
correctly. This remains to be implemented.
|
|
|
|
|
| |
- represent directly as a list
- can replace separate inlineCount
|
| |
|
|
|
|
|
| |
Dottydoc needs the unexpanded trees so that it can have access to the
attached docstring
|
|
|
|
|
| |
pos/power inlines with alomst no extraneous boilerplate.
neg/power gives an error that maximal numbers of inlines was exceeded.
|
|
|
|
|
|
|
|
|
| |
Avoid bindings such as
type T = T'
val x: x'.type = x'
Required some refactorings in Inliner.
|
|
|
|
| |
Inline conditionals with constant conditions
|
|
|
|
|
| |
Error messages now print the inlined positions as well
as the position of the inlined call, recursively.
|
| |
|
|
|
|
|
|
|
|
|
| |
... 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
|
|
|
|
|
| |
- DRY
- Refactor out special path operations
|
|\
| |
| | |
Drop modifiers
|
| |
| |
| |
| |
| | |
That way it can be accessed by other parts which deal with
error messages.
|
| |
| |
| |
| |
| | |
The typed variant is no longer needed. This means modifiers can safely be
ignored in typed trees if we so choose.
|
| |
| |
| |
| |
| |
| | |
Backend does not need them after all, can just use nulls there.
So the functionality is only used for printing, and it makes
sense to move everything there.
|
| |
| |
| |
| | |
Prefer to access directly via symbol.
|
|\|
| |
| | |
Simplify trees
|
| | |
|
| | |
|
| |
| |
| |
| | |
Thicket has a vararg constructor, so this syntax is redundant.
|
| |
| |
| |
| |
| |
| | |
Roll its functionality into Select. Since we can always
tell whether a tree is a type or term there is no expressiveness
gained by having a separate tree node.
|
|/
|
|
|
|
|
|
| |
Drop tree node class 'Pair'. It was used only in imports, where
it can easily be replaced by Thicket.
The envisaged use for generic pairs is almost sure better modelled
by a "Pair" class in Dotty's standard library.
|
|\
| |
| | |
Make positions fit for meta
|
| | |
|
| |
| |
| |
| |
| |
| | |
That way, we can check functions for the ordering requirement as well.
We only have to remember that the last parameter of a wildcard function
does not precede its body (because the parameter is in fact part of the body).
|
| |
| |
| |
| | |
Arrange its sub-elements so that they appear strictly left to right.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Check that children of a node have non-overlapping positions and that positions
of successive children are monotonically increasing.
This holds currently except for 3 exceptions:
- Trees coming from Java as the Java parser also does desugarings which copy trees.
- Functions coming from wildcard expressions
- Interpolated strings
We'll see whether we can do something about the latter two.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Now it's annotated first, annotation second.
This is in line with AnnotatedType and in line with the principle
that tree arguments should come in the order they are written. The
reason why the order was swapped before is historical - Scala2 did it
that way.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
In particular:
- get rid of envelope, it's too complicated and hides too many errors
- check that everywhere in parsed trees the position range of a parent
node contains the position ranges of its children.
- check that all non-empty trees coming from parser have positions.
The commit contains lots of fixes to make these checks pass.
In particular, it changes the scheme how definitions are positioned.
Previously the position of a definition was the token range of the
name defined by it. That does obviously not work with the parent/children
invariant. Now, the position is the whole definition range, with the
point at the defined name (care is taken to not count backticks).
Namer is changed to still use the token range of defined name as the
position of the symbol.
|
|/
|
|
|
| |
Code inspection revealed that it did the wrong thing for annotated trees,
looking in the annotation instead of in the argument.
|
|\
| |
| | |
Clean up config.Printers imports
|
| |
| |
| |
| | |
And remove the not used Printer#echo
|
|\ \
| | |
| | | |
sbt bridge reporter
|
| | | |
|
| | | |
|
| | | |
|
|\ \ \
| |/ /
|/| | |
Fix bootstrap, take 3
|
| | |
| | |
| | |
| | |
| | | |
Add comment what it is supposed to achieve and change the implementation
to follow the comment.
|