| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
Erasure inserts boxing and unboxing of label returned values, ignoring the fact that some labels do not return.
Now this is taken into account also inside labels which refer labels themselves
|
|\
| |
| | |
FullParameterization: fix rewiring of Returns
|
| |
| |
| |
| |
| | |
The `from` field of a Return tree should either be EmptyTree or an Ident
corresponding to the method we're returning from.
|
|/
|
|
|
|
|
|
|
|
|
| |
Previously,
type Map = HashMap[Int, String]
new Map
did not work. See test aliasNew.scala for a test.
Formerly this logic handled in Parsers (wrapNew),
but that one does not work for aliastypes.
|
|
|
|
| |
val param
|
|\
| |
| | |
Fix/erasure lub alternative
|
| |
| |
| |
| | |
... of an If, Match, or Try. Fixes #355.
|
|\ \
| | |
| | | |
Backend discovered issues
|
| | |
| | |
| | |
| | | |
java.util.Vector(requested by backend)
|
| |/
| |
| |
| | |
This info transformation was left untriggered before backend was enabled.
|
| | |
|
|/
|
|
|
|
|
|
|
|
| |
Fixes two bugs needed for java-override test:
Namer was creating a MethodType instead of a JavaMethodType even though
the JavaDefined flag was set on the DefDef.
Following Scalac, Namer needs to convert Java method parameters
of type j.l.Object to s.Any.
|
|
|
|
| |
As noticed by @retronym, Any and Object are not identified when matching Scala and Java methods. I believe this is because the Java method does not have the Java flag set. @olhotak can you take a look?
|
| |
|
|
|
|
|
| |
Reformulated matchign spec and implemented accordingly. Previous
fix for #329 would have missed third new error case in over.scala.
|
|
|
|
| |
Overriding pairs needs to match ExprTypes with field types. Closes #329.
|
| |
|
|
|
|
| |
See t3252 for a test case.
|
|\
| |
| | |
Bring back lazy vals. Changed encoding scheme of local(non-field) lazy vals
|
| |
| |
| |
| |
| | |
Somehow this error manifested itself in a quite weird way during erasure.
So it was hard to track down
|
| | |
|
| |
| |
| |
| | |
See i321 doc for description of problem and decision taken.
|
|/
|
|
|
|
| |
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.
|