| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
| |
It's easy to get this wrong. What happened was that when
computing deferred members of a class a deferred member
was preferred over a concrete one because the types did not match.
Thsi should not happen. We now change the scheme to always
prefer concrete over abstract, and subclass-owned over superclass-owned.
But we pick a denotation only if the overrides relationship on types
coincides with the preference on symbols.
|
|
|
|
| |
The tests in this commit pos were verified to work again.
|
|
|
|
|
|
|
|
| |
A reference to an object from anywhere in its module class can be
established by the This of the module class. The previous behavior always
referenced the object as a term ref which might cause a reference to
the outer This which might not be available (since this is not tracked
by ExplicitOuter). Brings t3174.scala back from disabled.
|
|\
| |
| | |
Implement Scala2 traits
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Until the previous fix to Denotation-& the test here spuriously passed.
The Dotty spec is that value classes synthesize equals and hashCode only
if no concrete definitions are inherited except the ones from Any. That
was previously miscalculated.
The test has been updated to reflect the specified behavior.
|
| |
| |
| |
| | |
We are still lacking the setup to do this right for mixed Scala 2/Dotty runtime tests. So I checked into `pos` for now.
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| | |
generation"
This reverts commit cafd71af4902c76561f27a479c14e53729600bb9.
For the future refference: tests and checkfiles should be modified only after carefull thought.
Otherwise our tests will stop indicating the correct behaviour.
|
|/
|
|
| |
This reverts commit 8f90105dc4e62e78d53b385df1b2eb29f2855183.
|
| |
|
|
|
|
|
| |
See https://github.com/lampepfl/dotty/pull/624#issuecomment-107064519
for a lengthy explanation.
|
| |
|
| |
|
|
|
|
|
|
| |
class is also the top-level class"
This reverts commit 6898d2c296326779d373ef0e0b84e4451550120a.
|
|\
| |
| | |
Add a test for supercalls in traits.
|
| |
| |
| |
| | |
Also added non-unit fields and a class that directly implements two traits with the same fields.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Also mark the forwarder as Stable otherwise we get a RefChecks error.
This fixes #608.
Note that we do less parameter forwarding than scalac. See for example D
and Y in tests/run/paramForwarding.scala which don't get their own local
fields in scalac but do in dotty.
|
| | |
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
| |
Harmonization is Dotty's alternative to Scala 2's notion of weak conformance. It is less powerful but also
less entangled with the core type system. The idea is that in some specific contexts trees that
all have primitive numeric types will be converted as necessary so that they all have the same numeric type.
These tree sets are:
- the two branches of an if
- the alternatives of a match
- the body together with the catch blocks of a try
- the arguments of a vararg parameter
Examples are in the test file, harmonize.scala.
|
|
|
|
| |
Some of them were moved from disabled after verifiying that they compile now.
|
| |
|
| |
|
|
|
|
|
|
| |
Both tests fail with the same error: "Cannot create object because
protected[this] newBuilder is not implemented". Not clear why partests
claim to succeed here.
|
|\
| |
| | |
Improvements to higher-kinded types
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Adds IterableSelfRec.scala which caused lockup of the compiler.
After a lot of work the problem was determined to be polyomial or
exponential behavior of the compiler when executing findMember
on refined types that contain several bindings where the
resutling & causes a recursive invokation of findMember with
the same name. We do have a stop for this now, but if the
stop comes too late the runtime will grow very fast.
Problem addressed by kiccking in earlier with the stopping logic.
|
| |
| |
| |
| | |
The test case that caused all previous commits in this branch.
|
| |
| |
| |
| | |
Did not handle this case before.
|
| |
| |
| |
| |
| | |
This mimics scalac's behavior (but not the official syntax; in fact the
official syntax seems to be ambiguous.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
As the comment in the code says:
"In general, a bridge is needed when the signature of the closure method after
Erasure contains an ErasedValueType but the corresponding type in the functional
interface is not an ErasedValueType."
So we need to check if _at least one_ of the type needs to be adapted,
not if _all of them_ need to, the use of "forall" was an error.
|
| | |
|
| | |
|
| |
| |
| |
| | |
Note that some of them may pass due to several bugs that interfere.
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Before this commit, the following code:
trait Hello {
println("Hello")
val x: Int = 1
println("World")
}
Became:
<trait> trait Hello extends Object {
def <init>(): Hello = {
{
()
}
this
}
<accessor> def x(): Int
protected def initial$x(): Int = {
println("Hello")
1
}
}
Notice that the initialization statements after the last getter were
missing, this is now fixed:
<trait> trait Hello extends Object {
def <init>(): Hello = {
{
println("World")
()
}
this
}
<accessor> def x(): Int
protected def initial$x(): Int = {
println("Hello")
1
}
}
|
|
|
|
| |
also the top-level class
|
| |
|
|
|
|
|
| |
Erasure#isUnbox was incorrect: the unbox methods are defined on the
value classes, not the boxed classes.
|
|
|
|
|
|
|
|
|
|
| |
object as owner and be followed by type arguments:
reflect.classTag[T]
expands to
reflect.`package`.classTag[T]
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|\
| |
| | |
Fix #547: Vararg overload
|
| |
| |
| |
| |
| | |
When comparing to types in isAsSpecific, onvert repeated parameters to their underlying type
only if both types are vararg methods. This mimics scalac behavior.
|