| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
| |
The new one only reduces straight applications of type lambdas with
definite arguments. It is called very early on appliedTo, and derivedRefinedType.
The old one, now renamed to normalizeHkApply also handles wildcard arguments
and can garbage collect general unneeded hk-refinements. It is called later, at various
places.
TODO: See what functionality of normalizeHkApply should go into betaReduce instead.
Maybe we can even drop normalizeHkApply? However: need to be careful to maintain aliases
for hk type inference.
|
|
|
|
|
| |
With this change, ski compiles (but with more errors than before).
Without it, it goes into various infinite recursions.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The new one only reduces straight applications of type lambdas with
definite arguments. It is called very early on appliedTo, and derivedRefinedType.
The old one, now renamed to normalizeHkApply also handles wildcard arguments
and can garbage collect general unneeded hk-refinements. It is called later, at various
places.
TODO: See what functionality of normalizeHkApply should go into betaReduce instead.
Maybe we can even drop normalizeHkApply? However: need to be careful to maintain aliases
for hk type inference.
Handle LazyRefs in BetaReduce
Needs to be careful to not skip LazyRefs when dealiasing.
- Fix^2 of asMemberOf: This fix ensures that
- under the old hk scheme test succeeds for compilestdlib and tasty-new-all
- under the new scheme test succeeds for i94-nada (i.e. REP[T] = T).
- Try to beta-reduce bounds before adding to a constraint.
- More subtle handling of LazyRefs in BetaReduce
- Another refinement to asMemberOf
Need to assume lastSymbol in sync with lastDenotation.
- Drop isSafe test from BetaReduce
Instead, track the higherkinded argument names that a
type variable could potentially instantiate to.
|
|
|
|
|
|
|
|
| |
Mapping the info may create new skolems which undermines
the idea of a skolem as a fixed reference. In a sense, SkolemTypes
are like Termrefs, mapping them does not map their info either.
Creating new skolems on the fly in type maps caused some hard find
to infinite loops under the new hk scheme.
|
|
|
|
| |
Fixes a crasher in t2994.scala
|
|
|
|
| |
The previous fix caused 4 tests to fail under the old hk scheme.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There was a special case that triggered a parse error in this course
def lift[T <: Type](tp: T): (RecType => T) = arg match {
case rt0: RecType => tp.subst(rt0, _).asInstanceOf[T]
case _ => (x => tp)
}
The problem was that the rhs of the first case became a Function node, which
caused a premature return from the case clause sequence. I could not determine
anymore what the purpose of the removed case in the parser was; all tests compile
without it.
|
|
|
|
|
| |
Also fix printing of variances in typedefs and params;
they were suppressed before.
|
|
|
|
|
| |
It can give false negatives.
Also, simplify RecType.closeOver
|
|
|
|
|
|
|
|
| |
In the new hk scheme, a type parameter can be represented by a
refinement without a corresponding symbol. Therefore, we need
to disentangle the info inherent in a type parameter from the
contents of a type symbol. We achieve this by creating a common
super trait "MemerInfo" of Symbol and RefinedType.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Map self-references in refinements to recursive types. This
commit does this for refinement types appearing in source.
We still have to do it for unpickled refinements.
Test apply-equiv got moved to pending because it simulates
the old higher-kinded type encoding in source, which relies
on the old representation in terms of self-referential refinement
types. The plan is not to adapt this encoding to the new
representation, but to replace it with a different encoding
that makes critical use of the added power of recursive types.
Use recursive types also when unpickling from Scala 2.x.
Add mapInfo method to Denotations.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
They not print similar to scalac: "?x" where `x` is a unique number.
Todo: An offline explanation what they are, similar to javac. I.e.
... ?3 ...
where ?3: T
|
|
|
|
|
| |
Treat parent like refinedInfo. Introduce isBinding convenience method
in TypeBounds.
|
|
|
|
|
|
| |
Previously a refinement could only apply to a type bound in
the parent. This restriction needs to be dropped for the new
encoding of hk type parameters.
|
|\
| |
| | |
Fix #1366: constant adaptation
|
| | |
|
| |
| |
| |
| |
| | |
Fix: #1366. Constant adaptation did not work if the
expected type was an as yet uninstantiated type variable.
|
|\ \
| | |
| | | |
Implement -print
|
| | | |
|
| | |
| | |
| | |
| | | |
This reverts commit 8a39160e8375dd1707f686e13a2a796aed310ef7.
|
| |/ |
|
|\ \
| |/
|/| |
Update README after SI-2712 fix was merged
|
|/ |
|
|\
| |
| | |
Add straightforward fix to #1308
|
|/ |
|
|\
| |
| | |
Fix #856: Handle try/catch cases as catch cases if possible.
|
| |
| |
| |
| |
| |
| |
| | |
Previously they were all lifted into a match with the came cases.
Now the first cases are handled directly by by the catch. If one
of the cases can not be handled the old scheme is applied to to it
and all subsequent cases.
|
|\ \
| | |
| | | |
Check non-deferred declarations are implemented
|
| | | |
|
|\ \ \
| | | |
| | | | |
partest: correct line numbers in run stack traces
|
|/ / /
| | |
| | |
| | |
| | |
| | |
| | | |
partest adds a warning in a comment at the beginning of source files
that it copies, but this means that every line number displayed in a
stack trace is offset by 6. We can workaround this by making the warning
a single line with no newline at the end.
|
|\ \ \
| |_|/
|/| | |
Change versioning to SNAPSHOT and nightly releases for now
|
|/ / |
|
|\ \
| | |
| | | |
Fixes for #1327, #1328 in dotc/dotr scripts
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | | |
Fixup from the last PR, review: @DarkDimius
|
|\ \ \
| | | |
| | | | |
Multiple fixes to @static
|
| | | |
| | | |
| | | |
| | | |
| | | | |
GenBCode checks if class already has static initialiser,
the check is fooled if class inherited a static initialisers.
|
| | | |
| | | |
| | | |
| | | | |
This broke lazy vals, as unsafe offsets were not initialised.
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | |
| | | |
| | | |
| | | | |
Nicely spotted by Ycheck.
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | | |
This method is only used to find static initialisers.
Previously, it was always wrong, but we didn't care as we never had them.
|