| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| | |
Fix/refs to inner objects
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Trying to diagnose failure of t2503 and t5577 which were moved
to disabled in the time the tests did not work. These failed
locally for me, but the checkin tests succeeded (since the checkin
tests tested something else).
Added better diagnostics to RefChecks which now mention candidate
implementations of missing abstract members that have the right name but
not the right type.
|
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The previius commit on "Refine & for Denotations" caused
NotDefinedHere errors in the backend when compiling dotc/typer.
These were tracked down to three occurrences in LazyVals where `enter` instead
of `enteredAfter` was used. `enter` will enter a symbol in an unknown set of
previous phases. Transformations that traverse scope (like erasedMembers in
TypeErasure will then see the denotations of these symbols outside the
scope in which they are defined.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The policy is now made clear in a doc comment. The new part is that we will prefer
a symbol defined in a subclass over a symbol defined in a superclass. With the previous
commit 0a0d3dd1 on "More precise and uniform modelling of isCurrent" we got runtime test
failures for Course-2002-03.scala because the new definition isCurrent assumed a behavior
of `member` which was not assured: Namely that the merged denotation would prefer symbols
in subclasses over symbols in superclasses.
|
| |
| |
| |
| |
| |
| |
| |
| | |
For implemented getters and forwarded methods we need a notion of "isCurrent",
which means: would the getter or method before the implementation is added be
a member of the implementing class? Only in this case do we need to do anything.
The method formulation was previously weaker than the getter formulation, which
led to an error when compiling core (duplicate methods: andThen and size).
|
| |
| |
| |
| | |
We are still lacking the setup to do this right for mixed Scala 2/Dotty runtime tests. So I checked into `pos` for now.
|
| |
| |
| |
| | |
Scalac does not generate them either.
|
| |
| |
| |
| | |
Scala 2 doe snot generate default methods, so we always need forwarders.
|
| |
| |
| |
| |
| | |
A transformFollowingDeep was missing, so LinkScala2ImplClasses never got to see
the call.
|
| |
| |
| |
| |
| |
| | |
Instead of cleaning up, generate sensical code in the first place. This is shorter and
(I would argue) clearer, and also has the advantage that some initializing assignments
are not generated at all.
|
| |
| |
| |
| |
| |
| |
| |
| | |
Fixes junit failure in dotty where a lazy val was initialized with
a "...$lazy = _" assignment.
Moved ElimWiildcard to one group before. It does not really matter where it goes
so it might as well go someshere in the middle of the pack.
|
| | |
|
| |
| |
| |
| | |
This phase rewrites supercalls to calls to static implementation class methods.
|
| |
| |
| |
| | |
Erasure uncurries arguments, need to track that in memberSignature.
|
| | |
|
| |
| |
| |
| |
| | |
They don't exist for Scala2 traits. Instead we let the initializer be `_'
and rely on trait setters (to be implemented) to initialize the field.
|
| |
| |
| |
| | |
A typed `_'. This is needed in a few places.
|
| |
| |
| |
| |
| | |
Previously it didn't, because it created an ExprType, which is
illegal after erasure.
|
| |
| |
| |
| | |
This brings it in line with Scala2 conventions.
|
| |
| |
| |
| | |
We'd like to make it reusable for a phase that treats Scala2 traits.
|
| |
| |
| |
| | |
Also: generalize expandedName so that it can cater for trait setters.
|
| |
| |
| |
| |
| |
| | |
It definitely does appear in trees, so should be included in the set.
Affects how things are printed. Before, typed var's would still show up
as vals.
|
| |
| |
| |
| |
| |
| |
| | |
If memoize and constructors are run in different groups,
memoize's previous postcondition "all concerete methods are implemented"
is wrong, because constructors are not implemengted yet. Solved
by moving the postcondition to phase Constructors.
|
|\ \
| |/
|/| |
Fix/initializer deadlocks
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
LambdaLift needs to compute outer.path at the phase in which
the results are constructed, i.e. phase lambdaLift.next. Or else
we get an error in outer.path for lost fo files, including pos/Fileish.scala
as a minimized test case. Previously outer as computed at phase lambdaLift.
The reason for this is that lambdaLift name mangles inner classes, which
causes outer acessors to be not found. We now correct for the problem
in outer.path itself, by calling outerAccessor only at a safe phase.
|
| |
| |
| |
| |
| | |
Lambdas should stay inside static objects if they reference to them with
a This or Ident. Fixes test case `llist.scala` but demonstrates another problem.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This reverts commit 3d240ad40ccfb570174ec9758bfe68ba4e91eefb.
This commit got in without succeding the review.
It broke what already was working(inner static objects),
and made impossible moving static methods from companion object to companion class.
Additionally, commenting or removing assertions is not the way to go, and should not pass review.
See discussion here: https://github.com/dotty-staging/dotty/commit/3d240ad40ccfb570174ec9758bfe68ba4e91eefb
|
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| |
| |
| |
| | |
See https://github.com/lampepfl/dotty/pull/624#issuecomment-107064519
for a lengthy explanation.
We now solve the problem in LambdaLift. The formerly failing tests are
all reverted to theor original, failing, version.
|
|/
|
|
| |
This reverts commit 8f90105dc4e62e78d53b385df1b2eb29f2855183.
|
|\
| |
| | |
Add missing string interpolator prefix in some AST nodes' toString
|
|/ |
|
|\
| |
| | |
Trees: Add toString for AST nodes which are not case classes
|
| |
| |
| |
| | |
This makes debugging trees easier.
|
|\ \
| |/
|/| |
Make tests pass
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- Only transform static methods which are inside module classes.
- Make sure that the prefix of the underlying type of the Ident
is a ThisType of the current module class. For example in
"scala.Int.box(42)", "box" is an Ident whose underlying type is
"TermRef(ThisType(TypeRef(ThisType(TypeRef(NoPrefix,scala)),Int$)),box)",
but we should not trigger an assertion in this case.
|
| | |
|
| |
| |
| |
| |
| | |
See https://github.com/lampepfl/dotty/pull/624#issuecomment-107064519
for a lengthy explanation.
|
| | |
|
| | |
|
| |
| |
| |
| | |
Previously was only done for DefDefs. Caused backend failure.
|
| | |
|