| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
Because of different close seqences before and after pickling
we could get spurious differences, where in one file things were
put on one line, and in the pther there was a linebreak.
|
| |
|
|
|
|
| |
Pickler drops Inlined nodes, so homogenize needs to do the same.
|
|
|
|
|
|
|
|
|
| |
... 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.
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
Arrange its sub-elements so that they appear strictly left to right.
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
The previous fix was too drastic, as it would also have omitted
scala, Prefef and other "unqualified owner types" from full names.
We now omit only "empty prefixes", i.e. roots, anonymous classes and
repl qualifiers.
|
|
|
|
| |
... when printing using RefinedPrinter. PlainPrinter will still show them.
|
|
|
|
|
| |
This was already disabled when printing types. Now is also disabled
when printing fully qualified names.
|
|
|
|
|
|
| |
Roll `sm` and `i` into one interpolator (also called `i`)
Evolve `d` to `em` interpolator (for error messages)
New interpolator `ex` with more explanations, replaces disambiguation.
|
|
|
|
|
| |
- increase page width
- print scopes more legibly under -verbose
|
| |
|
|
|
|
| |
Printed as <notype> before.
|
|
|
|
|
|
|
|
|
|
| |
Remove the code that implemented the encoding of hk types
using refinements.
Drop the notion that RefinedTypes can be type parameters. This is
no longer true under the new representation.
Also, refactoring MemberBinding -> TypeParamInfo
|
|
|
|
|
|
|
|
|
|
| |
- Make printing package ids more robost
Crashed before when printers were turned on during test pickling mode.
- Make Denotation#bringForward more robost
Assertion failed before when printers were turned on during test pickling mode.
|
| |
|
|
|
|
|
| |
- Re-introduce newHK option. Label some things that will be
removed with OLD.
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Simplify RefinedType
- Drop recursive definition of RefinedThis - this is now
taken over by RecType.
- Drop RefinedThis.
- Simplify typeParams
The logic avoiding forcing is no longer needed.
- Remove unused code and out of date comments.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Swap order of tests in lookupRefined
- Change joins of BindingKinds.
A type parameter joint with a normal refinement represents
a type parameter that has been filled in. So the Binding attribute
should be removed.
- Fix printing of type lambdas under new hk scheme
- refine isRef for hk type
The new definition avoids that a higher-kinded type "isRef"
of an underlying class. I.e. `[X] -> Any` is not longer a ref
to `Any`.
- Fix withBindingKind for type aliases
Old definition converted aliases to type bounds.
- Multiple fixes to BetaReduce
- Fix logic for hk subtype tests
- Make isHK more precise
|
|
|
|
|
|
|
| |
For the moment under newHK flag.
- avoid crasher in derivedTypeParams (NamedTypes don't always have symbols)
- Revise logic in type comparer for new HK scheme
|
|
|
|
|
| |
Also fix printing of variances in typedefs and params;
they were suppressed before.
|
|
|
|
|
| |
Treat parent like refinedInfo. Introduce isBinding convenience method
in TypeBounds.
|
|\
| |
| | |
Improvements to cyclic checking, avoidance, named parameters
|
| |
| |
| |
| | |
Explicitly given type parameters were printed twice.
|
|/
|
|
| |
To address #1198, we need to avoid putting symbols in ErasedValueTypes.
|
|
|
|
|
|
|
| |
The field keeps track of the element type. This is necessary
because JavaSeqLiteral is nonvariant and the elements might
be empty, so we cannot always compute the type from the
element types.
|
|
|
|
|
|
| |
`membersBasedOnFlags(requiredFlags = AnyFlags, excludedFlags = ...)` is
easier to understand than
`membersBasedOnFlags(requiredFlags = AllFlags, excludedFlags = ...)`
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Previous implementation died because
TermRef had no denotation.
|
| |
|
| |
|
|
|
|
|
|
|
| |
It turns out it's not needed because now all type arguments are
expressed as aliases. Interestingly dropping this feature shaved
20% off the time off junit tests. Which seems to indicate that the
handling of type application is really performance critical.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Symbols are not stable between runs, so if some symbol referred
to from Definitions gets recompiled, there are then two Symbols
that are both visible, one referenced from Definitions, the other
the one that got compiled.
Thos led to a crash when e.g. compiling scala.Short, because the
newly compiled symbol was not recognized as a primitive value
class.
The present commit tries to make systematic changes without regard
to simplicity or aesthetics. This will be polished in future commits.
// ### comments signal areas that need further attention.
|
|
|
|
|
| |
Differences can be observed when checking neg/variances.scala.
Review and any necessary polishing by @smarter.
|
|
|
|
| |
Want to have a unique name for Apply, so that tests for higher-kinded types become cheaper.
|
|
|
|
|
| |
Previously, we'd see something like `? { :+: Int }`, which is confusing.
Now we see instead `? { :+ : Int }`.
|
|
|
|
|
|
|
| |
SkolemTypes are no longer needed when Pickling because they exist only
for checking type-safety. After the typer, we can safely eliminate them.
Not having skolem types in TASTY simplifies the format and avoids having
to explain a difficult concept.
|
|
|
|
|
|
|
| |
SkolemTypes need to behave differently form RefinedThis types in TypeMap
and TypeAccumulator. For skolem types these should follow through to the
underlying type. For RefinedThis types, these need to do nothing, in order
not to start an infinite recursion.
|
|
|
|
|
|
| |
It definitely does appear in trees, so should be included in the set.
Affects how things are printed. Before, typed var's would still show up
as vals.
|
|
|
|
|
|
|
|
| |
Use the proposed Lambda syntax
[HK$0, ..., HK$n] => body
for them.
|
| |
|
|
|
|
| |
Was missing before, ffell back to raw printing.
|
|
|
|
| |
Needed for next commit. Also homogenize types used in prefixes, and never drop "scala.", "Predef." in homogenized view.
|