| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|/
|
|
|
|
| |
arguments.
Or it could lead to Ycheck error that was triggered in #321.
|
|\
| |
| | |
Fix/t3152 find member
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Without it, we get strange error messages like
found: (implicit X)Y
requred: Z
when the problem is really that Y is not a subtype of Z.
|
|\ \
| | |
| | | |
Fix/refined subtyping
|
| | |
| | |
| | |
| | |
| | | |
Need to also ensure that the singleton is stable. This makes
compound.scala pass.
|
| |/ |
|
| |
| |
| |
| | |
Also, added tests trhat work now.
|
| |
| |
| |
| |
| | |
GADTs now work again (they stopped workign when we went to the inductive satisfiability checks).
The deep for expression also works, even with some more levels added.
|
| |
| |
| |
| | |
Tests (non)equivalence of modules and their ThisTypes.
|
| |
| |
| |
| |
| | |
Factored out interface for constraints. Current implementation: NaiveConstraint.
Preparing for a more efficient one.
|
| |
| |
| |
| |
| | |
Also, make binder type of SkolemType refer to arbitrary type,
not necessarily RefinedType.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
In the end, this did not buy us anything. What matters is that
- we can reliably identify RefinedThis types pointing to a given
refinement type. Making sure that the `binder` field of q RefinedThis
type in a refinedInfo is always the containing refined type is good
enough for that.
- we take care to rebind RefinedThis types in isSubType. This was leaky before,
is handled now better in the new isSubType.
So, in the end, adding a level was a needless complication. Also, as a next step
we should be able to identify skolem types and RefinedThis types.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The previous scheme did not ensure that transitivity was eliminated.
Example scenario:
We have in the constraint
P <: Q
for constrained variables P, Q and add
Q <: T
Previous propagation added the constraint and then tested
whether the bounds of all variables were satisfiable. For
Q we test
P <: T
but that is true because P <: Q and we already added the constraint Q <: T.
So we fail to add the constraint P <: T, and transitivity is no longer eliminated.
Instead we now test the new bounds (in this case P <: T) *before* adding
the new constraint Q <: T. This is also simpler than the previous scheme.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- Instead of rebasing, use the DeBrujn level of a RefiendThis.
- Make sure lower type is a singleton by skolemizing it if necessary.
- Do the correct rebinding of the upper type's RefinedThis.
Remarks:
- The new scheme discovered quite a lot of errors which are mostly fixded in
other commits of this branch. i0268 (GADT matching) still does not work, moved to pending.
- Some optimizations are currently missing:
(1) fast path refined subtyping
(2) faster operations for substituting refined thistypes which
explot the fact that RefinedThis is relatively rare.
|
| |
| |
| |
| | |
Plus, RefinedThis gets a second parameter, `level`. This will replace the first one in due time.
|
| |
| |
| |
| | |
Moved working tests to pos, annotated non-working ones.
|
|\|
| |
| | |
More tests
|
| |
| |
| |
| | |
Move some tests into proper slots + comments what they are.
|
| |
| |
| |
| |
| |
| |
| |
| | |
scalac has the same restriction. The reason is that we do not have a means
to specify a sequence-valued default for a vararg parameter.
It would be nice if we could, but this requires a more substantial development
effort.
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
Fixes problem in test case SI-7638a.scala which gave an
override error before.
|
| | |
|
| |
| |
| |
| | |
Moved some working test to pos. I wonder why they were in pending? They did work for me.
|
| |
| |
| |
| |
| |
| | |
The problem was that, unlike a classDefSig, a higher-kinded typeDefSig did
not get a preset info with its type parameters. So any type-application
of the defined type in its bounds would fail.
|
|\ \
| | |
| | | |
Fix/java varargs
|
| |/
| |
| |
| |
| | |
Arguments of the form (xs: _*) which are passed to
Java methods need to be converted to arrays, not sequences.
|
|\ \
| | |
| | | |
Avpid returning ExprTypes from blocks.
|
| | | |
|
|\ \ \
| | | |
| | | | |
Fix/#305 annot bootstrap
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
1) Rename `decls` to `unforcedDecls` to make it clear that
it is danegrous to use.
2) Prefer `info.decls` over `unforcedDecls`.
This fixes the problem reported in #305 where the primary
constructor was not found.
|
| | | |
|
| |/
|/| |
|
|\ \
| |/
|/| |
Fixed #264 - failure to typecheck GADTs
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The previous scheme derived the right bounds, but then failed to use them
because a TypeRef already has a set info (its bounds). Changing the bounds in
the symbol by a side effect does not affect that. This is good! But it showed
that the previous scheme was too fragile because it used a sneaky side effect
when updating the symbol info which failed to propgate into the cached
info in TypeRef.
We now keep GADT computed bounds separate form the symbol info
in a map `gadt` in the current context.
|
|\ \
| | |
| | | |
Shared backend
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
|\ \ \
| | | |
| | | | |
Run rewrite tool on tests (2)
|
| | | | |
|
| |/ /
| | |
| | |
| | | |
tests/untried/pos
|
|\ \ \
| |/ /
|/| | |
Fix #239 - handling of package objects
|
| | |
| | |
| | |
| | |
| | | |
Like TypeAssigner, asSeenFrom needs to insert a package object if the
prefix is a package but the class enclosing the type is not.
|
| | |
| | |
| | |
| | |
| | |
| | | |
References to `.package` are now also inserted if the
accessed member comes from a class inherited by a package
object.
|
| |/
|/| |
|
|\ \
| | |
| | | |
Two new tests
|
| |/
| |
| |
| |
| | |
1) Verify we survive illegal infinite paths. Closes #91.
2) Verify we handle fbounds in and types correctly.
|