| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
Some cleanups and long-dead code abatement in the land where patterns
are typed. No review, already reviewed live by moors.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A double goodness whammy involving type inference at the borders.
1) Implicit search preserves singleton type fidelity. 2) Unification of
parent bounds is (closer to) correct.
Result of 1: "implicit def f(x: Foo.type)" will convert object Foo.
Result of 2: "new Trait[Int] { }" may enjoy its type constructor being
inferred, no longer foiled by the anonymous class.
Also included are some clarity-enhnancing renamings and refactorings.
Performance note: I heavily benchmarked the change to isSubArgs and it
is reproducibly faster than the previous implementation. Numbers and
methodology available upon request.
Closes #2693, #3964. Review by moors, who wrote most of this patch but
might like to review the comments.
|
|
|
|
|
|
| |
Fix for IDE ticket #1000180: the presentation compiler does not propose
completions on names containing $.
|
|
|
|
|
|
| |
[scaladoc] Even faster JavaScript index filtering, by reducing DOM
manipulations. Contributed by Kato Kazuyoshi. Review by dubochet.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Some uninteresting code related to error messages, which I'm checking
in mostly because I booted the r23379 commit in a git-svn meltdown and
posterity demands the message, which was:
You can now use the self-type of an anonymous class as a singleton type
in a pattern match ON THE MOON. Actual test case excerpt:
val x4 = new { self =>
def f(x: Any) = x match {
case _: x1.type => 1
case _: x2.type => 2
case _: x3.type => 3
case _: self.type => 4
case x: Dingus.type => x.IamDingus
}
}
Closes #576, no review.
|
| |
|
|
|
|
|
|
|
|
|
| |
The treecheckers revealed that auxiliary constructors, which must follow
the primary at the source level, are reordered to precede the primary
during the constructors phase. Added some logic to preserve the original
ordering. Also tweaked treePrinters to not confusingly print object Foo
as "final class Foo". Review by moors.
|
|
|
|
|
|
|
| |
Case accessors are always public else the pattern matcher goes south. A
more discriminating fix may be possible at some point, but it looks to
be an involved endeavor. Closes #3714, review by odersky.
|
|
|
|
|
|
|
|
| |
Another attempt to fix a bug which has plagued me for a year or more but
which I am apparently the only one who enjoys it. I enclose some thread
dumps in anticipation that someday someone else will experience it too.
No review.
|
|
|
|
|
|
|
| |
protected and its bevy of corner cases. Closes #3939, #3947. This patch
is intended for both trunk and 2.8.1. Already reviewed and co-authored
by moors, and review by oderksy.
|
|
|
|
|
|
|
|
| |
The tree checkers revealed that Volatile*Refs were being constructed
without being given a constructor argument. Added a mkZero to treegen
for creating zero trees of any type, and used it to construct those
refs. Review by moors.
|
|
|
|
|
| |
Now short-circuits reload work items that are superseded by later ones.
|
|
|
|
|
|
| |
Two comments where presentation compiler sanity assertions should be
inserted.
|
| |
|
|
|
|
|
|
|
|
| |
Closes #3059, #3895 (the only difference between this and r23232 is the
forced info transformation that ensures that nested objects are viewed
as lazy vals). sbt integration requires new starr for this commit to
work.
|
| |
|
| |
|
|
|
|
|
|
| |
msil doesn't run flatten, so it is possible to have nested classes in
mixin. fixes msil build. review by rytz
|
|
|
|
|
|
|
|
| |
As pointed out to me by plocinic, the pattern matcher has been
indiscriminately clearing the MUTABLE flag on synthetic vals because it
is signalling itself with that bit and it didn't think anyone else would
ever notice. Someone did. Closes #3699, review by plocinic.
|
|
|
|
|
|
|
| |
Closes #3934 by fixing a typo (missing + in string concat). Better
effect analysis would have caught that one at compile-time. Review by
extempore.
|
|
|
|
|
|
| |
Fixed NoSymbol problem in IDE for type constructors. Review by
vigdorchik
|
|
|
|
|
| |
VirtualFile.{equals/hashCode} should be based on the path rather than bare name
|
| |
|
|
|
|
|
|
| |
Reverted previous commit as I think it is wedging under -optimise. No
review.
|
|
|
|
|
|
|
|
| |
Made some changes to fjbg so when people run into #1133 at least it will
tell them what method was the cause. The fact that ten files are touched
in this commit instead of one or two is a testament to the wonder of
checked exceptions. No review.
|
|
|
|
|
|
|
| |
Documentation being generated by genprod was pretty busted both in terms
of formatting and correctness. Spruced it up. Eliminated some of the
more distracting HTML entities in compiler source. No review.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
TreePrinters now go inside orginal's of TypeTrees to print positions.
Useful for debugging IDEs
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There was a fascinating tangle of name creation functions passing around
positions only to reach the end of the line and discard the position
since names don't have positions. I deleted all of it. The winner for
most creative use of parameters was the freshName function in etaExpand,
with this signature:
def freshName(pos: util.Position, n: Int)
And an implementation referencing neither pos nor n. "In a world beset
by attrition on all sides... a people defeated by entropy... one man
will show them the power of deletion." No review.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Modification to the widening logic to treat locally defined symbols like
final members thus allowing more constants to be inlined. Concretely,
that means that in code like this:
def f: Unit = { val b = false ; if (b) println("ok") }
The call to println is no longer generated at all, and in this code:
def f(x: Int) = { val X = 1 ; val Y = 2; x match { case X => 1 ; case Y => 2 } }
A tableswitch is generated instead of the present if/then/else.
I also added a big comment to the former widenIfNotFinal (now
widenIfNecessary for obvious reasons.) Review by rytz.
|
|
|
|
|
|
| |
Fixed wrong tag for Longs, which caused bad java signatures (and a crash
building the Eclipse plugin). No review.
|
|
|
|
|
|
|
|
|
|
|
|
| |
An object with a main method can now extend its companion class without
losing the ability to run. Also gave genjvm a wax and polish while in
the neigborhood. Closes #3487.
I had to get a little tricky with this one. No review per se, but if
anyone is frightened by the prospect of the forwarders not being marked
final in this case (because as of now, they aren't) then speak now or
ACC_FINAL hold your peace.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
I don't understand why we had to clear() the undoLog in the first place,
since the undoXXX methods increase and decrease its size symmetrically,
so the log should always be empty once they have all unwound. Was it a
(premature) optimisation or was there some kind of semantic meaning to
it that I didn't see?
review by odersky
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
into Modifiers and Symbol, but touches as little as possible beyond
that. It also includes some lengthy commentary (see HasFlags.scala) on
the state of the flags and some of the remaining issues. One more patch
which unfortunately but unavoidably touches almost every file in the
compiler lies ahead.
The floor is still open! But no review.
|
|
|
|
|
|
|
|
|
| |
This maps @native, @volatile, and @transient in java source to the
relevant annotations in scala, rather than discarding the modifiers
completely. I have no specific motivation for this other than it seems
better to do it than not. Also cleans up some old flailing of mine in
the dept. of mapping java access to scala. No review.
|
| |
|
|
|
|
|
|
| |
closes #3890: propagate inferred type parameters to info of undetermined
type parameters. review by imaier.
|
| |
|
| |
|
|
|
|
|
|
| |
Encapsulating name strings in StdNames and eliminating misc duplication.
No review.
|