| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
ElimByName might be merged with erasure, so we can alreayd move it
as close a pssoble to it. Verified that it can't be moved beyong ResolevSuper,
but not why.
|
|\
| |
| | |
Drop/throw
|
| |
| |
| |
| | |
Having backend abstracted away from AST helps a lot here.
|
| |
| |
| |
| |
| |
| |
| |
| | |
Replace with
<compiler-ops>.throw(exception)
Only leave Throw as an untyped tree.
|
| |
| |
| |
| |
| |
| |
| |
| | |
Compiler interpreted methods now have a home in OpsPackage.
The first such symbol is dummyApply.
But other symbols representing primitive operations (e.g. array
operations) could also go there.
|
|\ \
| |/
|/| |
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.
|
| |
|
|\
| |
| | |
make Ycheck a phase
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| | |
Do not die if phases aren't squashed
|
| | |
|
| | |
|
|/
|
|
|
|
|
|
|
|
| |
This causes backend to fail with ambiguous reference when loading
member "equals" of object "BoxesRuntime".
The reference is indeed ambiguous. BoxesRunTime has a two paremeter
equals method and, with the fix, inherits the one-parameter method from
Object. The backend needs to disambiguate, e.g. by demanding the `decl`
equals in BoxesRunTime instead of the member.
|
|
|
|
|
|
| |
Before this commit, we used the same implementation than for case classes.
After this commit, we use the hashCode of the underlying type as defined
in SIP-15.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Before this commit, the following class:
class VC(val x: Int) extends AnyVal
resulted in the creation of the method:
def equals(val x$0: Any): Boolean =
x$0 match {
case x$0 @ _: VC => true
case _: Any => false
}
After this commit, we get instead:
def equals(val x$0: Any): Boolean =
x$0 match {
case x$0 @ _: VC => VC.this.a.==(x$0.a)
case _: Any => false
}
|
|\
| |
| | |
Fix/erasure lub alternative
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| | |
Though still it would be better if erasure didn't emmit such trees,
but still it's better to have this phase kore robust.
Also made LabelDefs run in linear time on the size of tree
instead of square on the Block-depth of tree.
|
| |
| |
| |
| |
| |
| | |
understand.
if(self eq self) was optimised away, not it's not even emited
|
| |
| |
| |
| |
| |
| | |
The new scheme alignes If, Match, Try to the scheme used in SeqLiteral.
This favors unboxed over boxed types. It is also simpler than the scheme
in the previous commit.
|
| | |
|
| |
| |
| |
| | |
... of an If, Match, or Try. Fixes #355.
|
|\ \
| | |
| | | |
Backend discovered issues
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | | |
This info transformation was left untriggered before backend was enabled.
|
| | | |
|
| |/
| |
| |
| | |
ExprType erases to MethodType and need to be handled.
|
| |
| |
| |
| |
| |
| | |
The issue was in the dependency tracking for MethodTypes. We treated
methods with false dependencies as non-dependent (as they should be),
but in that case the ResultType could contain orphan MethodParams.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Currently, tests fail. The failures I checked are all related to tailcalls.
Not sure whether there are others.
This is a blocker for serialization. Orphan parameters cannot be serialized.
Maybe rethink the position of tailcalls? It looks to me that the repeated trouble it gives us is
more than the effort required to put an efficient tailcall recognition after pattern matching in place.
But I might be wrong.
|
| | |
|
|\ \
| |/
|/| |
Fix JavaMethodType creation and parameter matching of JavaMethodTypes
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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 noted by @sjrd.
|
|/
|
|
| |
Create an object Util for utility methods that are used in several places.
|
|\
| |
| | |
Fix/#329 and others
|
| |
| |
| |
| |
| |
| |
| | |
This was a left-over from a failed attempt to have OverridingPiars work exclusively by comparing signatures.
If we do that then repeated and underlying do have the same signature and therefore are supposed to match.
But as @retronym notes, this leads to problems. In any case, we no longer try to make overriding pairs
work that way, because it fails for other reasons as well.
|
| |
| |
| |
| |
| | |
1) Drop redundant signature comparison in overriding pairs
2) Abstract from repeated parameters when calculating matches
|
| |
| |
| |
| |
| | |
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.
|
|\ \
| |/
|/| |
Removed TrackingConstraint
|
| |
| |
| |
| |
| |
| |
| | |
It's too hard to keep fixes up-to-date in both constraint implementations.
And anyway, OrderingConstraint is it for now.
Also added comment suggested by @smarter.
|
|\ \
| | |
| | | |
Bring back lazy vals. Changed encoding scheme of local(non-field) lazy vals
|