| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
@odersky there are some tests disabled, which failed due to other phases being able to transform more code.
|
|
|
|
|
|
|
|
|
|
|
|
| |
TypeVars can appear as keys in baseType caches. The problem is that
their base types depend on their instantiation, which is not always
know yet when the test is performed. So results of baseType on
type variables should never be cached.
Todo: check whether there are any other caching problems involving typevars.
Conflicts:
src/dotty/tools/dotc/core/SymDenotations.scala
|
| |
|
|
|
|
| |
testOnly dotc.tests
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
GADT bound resetting may only be applied when comparing
<pattern type> <: <expected type>, not when comparing the
other way around.
The fix revealed an error in a test case (t1048) which looks like a real error.
Therefore the test got moved to neg.
Conflicts:
src/dotty/tools/dotc/typer/Applications.scala
test/dotc/tests.scala
tests/disabled/t1048.scala
|
|
|
|
| |
Indicating that pt is type of selector is this pattern match makes it easier to follow.
|
|
|
|
|
| |
Except t1048 which infers incorrect type in typer, patmat creates a tree that computes a more precise one that fails to typecheck
Disabling erasure due to dozens of "Type BLA is illegal after erasure" errors.
|
| |
|
| |
|
|
|
|
| |
Now patmat passes tests but erasure fails.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
That doesn't mean that it works.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Some compilation errors fixed
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
With the new more systematic treatment of fresh symbols in TreeTypeMap, this
is no longer ncessary.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. They now keep track of changed constructors in templates, updating
the class scope as for other members.
2. Any changed members are now entered into the new class scope at exactly
the same position as the old one. That ensures that things like caseAccessors
still work.
3. ChangeOwners now is reflected in the prefixes of any named types.
4. Newly created classes now get their own ClassInfo type.
5. TreeTypeMaps always crete "fresh" symbols. Fresh symbols do not share
a NamedType reference with an existing reference to some other symbol.
This obviates b2e0e7b4, which will be reverted.
To make it work, the interface of TreeMap changed from an ownerMap function
to a substitution-like data structure working with two lists.
|
|
|
|
| |
Breaks out boxing functionality of captured vars from lambda lift.
|
|
|
|
|
| |
Treat clone like the other primitive array operations, ensure it
returns a JavaArray.
|
|
|
|
| |
Include a backtrace of nested calls on error.
|
|
|
|
|
|
| |
Otherwise would spuriously treat variables referenced
from while loops as captured, because their enclosing method
differs from current enclosing method.
|
|
|
|
|
| |
Avoids characterizing the "from" link in a return as a tail call
reference.
|
| |
|
|
|
|
|
| |
Bring TermRefs in line with TypeRefs. Prefixes need to be kept so that termrefs
can be re-loaded in subsequent runs.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Without this patch, ast.TreeInfo does not compile wfter next commit "Erasure should keep prefixes in
TermRefs". The reason is that outer path genertion generates a data race between
- an outer accessor created in ExplicitOuter
- a copy of the accessor created in ElimByName in a TreeTypeMap copy.
The patch avoids the data race by using a fixed symbol for the new TermRef generated in
outer.path during erasure.
But the fix seems ad-hoc. We should try to attack the problem at the root in TypeTreeMap.
The root problem seems to be that TypeTreeMap generates a copy of symbols whnMemere the copies
of the symbols give the same named type as the originals. We can either label the copied symbols
so that any types created from them become instances of WithNonMemberSym (which probably should be
renamed then). Or else we have a "linear" version of TreeMap that overrides sym denotations instead
of creating new symbols.
|
|
|
|
|
| |
If the original name in a selection is a inherited name, the erased name should
also be one.
|
| |
|
|
|
|
|
|
| |
If definitions in a class are substituted by TreeTypeMap, the new
symbols have to show up in the `decls` scope of the class instead of the
old ones.
|
|
|
|
|
| |
The reason is that otherwise the non-private member super.x gets merged with the private member this.x
and that causes a double binding violation.
|
|
|
|
|
| |
1) One phase too many was checked for postconditions.
2) Class members did not have their owners checked because index was not called on them.
|