| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Bring in line with comparisons. Fixes z1720 for good.
|
|
|
|
|
| |
Needed to address problem shown by z1720.scala.
Another fix to avoidance is needed to make it pass completely.
|
| |
|
|
|
|
| |
Turn assertion into test. Without this, neg/tcpoly_overloaded.scala fails.
|
| |
|
|
|
|
|
|
|
| |
Currently, the classfiles emitted by dotty do not contain the type
parameters information that javac relies on.
Fixing this is tracked by #1303.
|
|
|
|
| |
This was fixed two commits ago.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When TypeVar#inst is empty but an instantiation exists in the typer
state, we should set ephemeral to true, because this instantiation will
be retracted if we throw away the current typer state.
This makes hkrange.scala pass, it compiled before but the type parameter
of `f` was inferred to be `Nothing` because of this bug, and this failed
Ycheck.
For anyone who wonders how caching bugs manifest themselves, here's what
happened in details in hkrange.scala:
1. In an ExploreTyperState we set `CC` to be `IndexedSeq` in the
constraint set
2. In that same typer state the TypeRef `CC[Int]` (it's a TypeRef
because `CC` is a type lambda) gets the denotation `IndexedSeq[Int]`,
which is correct, but the denotation is cached since `ephemeral` is
false, which is wrong.
3. Later, we retract the ExplorerTyperState, so `CC` is uninstantiated
again and unconstrained.
4. Then we do the subtyping check `CC[Int] <:< IndexedSeq[Int]`, because
the denotation of `CC[Int]` was cached, this returns true, but `CC` stays
unconstrained.
5. This means that when we instantiate `CC`, we get `Nothing`
After this fix, the TypeRef denotation is no longer cached, so when we
do `CC[Int] <:< IndexedSeq[Int]`, `CC` gets constrained as expected.
|
| |
|
|
|
|
| |
All pos tests up to 3999 have been triaged. One new test in pending.
|
| |
|
|
|
|
|
|
| |
The original IterableSelfRec is not syntactically legal after
the hk changes. I attempted to fix, but there's still a type error.
Need to investigate whether this is a true error or a bug.
|
| |
|
|\
| |
| | |
Fix/dependent methods
|
| | |
|
| |
| |
| |
| | |
Now handles included test if toplevel implicit is given, but not yet without.
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
| |
There were two instances where a constraint undergoing a replace would still refer
to poly params that are no longer bound after the replace.
1. In an ordering the replaced parameters was n ot removed from the bounds of the others.
2. When a parameter refers to the replaced parameter in a type, (not a TypeBounds), the
replaced parameter was not replaced.
We now have checking in place that in globally committable typer states, TypeVars are not instantiated
to PolyParams and (configurable) that constraints of such typer states are always closed.
Fixes #670.
|
| |
|
| |
|
| |
|
|\
| |
| | |
Fix #522.
|
| | |
|
|/
|
|
|
| |
The test had to be slightly modified because of dotty's stricter
checking of type bounds validity, see #525 where this was discussed.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Each test needs to have its own package because pos_all will try to
compile the whole valueclasses directory at once.
The remaining tests with "extends AnyVal" in tests/pending/pos are
related to separate compilation, except for:
- t6482.scala and t7022.scala which were fixed by
https://github.com/scala/scala/pull/1468 in scalac and seem to
trigger a similar bug in FullParameterization
- strip-tvars-for-lubbasetypes.scala which was fixed by
https://github.com/scala/scala/pull/1758 in scalac
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Add -strict option to do some type checks that are encessary to ensure type soundness, but
are stricter than what Scala 2.x enforces.
The first such test is the "pattern cannot be uniquely instantiated" problem where we reject a
non-variant case subclass of a covariant superclass in a pattern match. The error is now only
issued in -struct mode, otherwise it will be a warning.
We might move more tests into the same category. This should help the transition.
|
|
|
|
|
|
|
|
|
|
| |
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?
|
| |
|
|
|
|
| |
See t3252 for a test case.
|
|\
| |
| | |
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.
|
| |/ |
|
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| | |
|