| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
| |
scala> implicitly[CanBuildFrom[String, Int, List[List[Int]]]]
<console>:10: error: Cannot construct a collection of type
List[List[Int]] with elements of type Int based on a collection of type
List[List[Int]]. implicitly[CanBuildFrom[String, Int, List[List[Int]]]]
^
No review.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Closes #3984 by the most arduous and indirect route imaginable:
abstracts the common code out of the TrieIterators in HashMap and
HashSet. When I raised this flag to find out if anyone would open
fire, all was quiet on the western front. Although I wouldn't want
to write code like this as an everyday thing, I think it serves as a
nice showcase for some of the abstraction challenges we're up against:
performance looks the same and I will never again have to fix the same
bug in two places. Review by rompf.
|
|
|
|
|
|
| |
Reverting fix for #4047 until I figure out why it is failing on chara
and not on my machine. No review.
|
|
|
|
|
|
|
|
|
| |
Override checks and self-types still needed some work (ticket #2808.)
I believe this is the right change. The modifications in parallel and
actors were a result of the files failing to compile after the change to
allOverriddenSymbols. (I am taking the position that that aspect is a
feature.) Review by malayeri, odersky.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
def isRootOrEmptyPackageClass(s: Symbol) = s.isRoot || s.isEmptyPackageClass
def isRootOrEmpty = (this == EmptyPackageClass) || (this == RootClass)
def isEffectiveRoot = isRoot || isEmptyPackageClass
// last one actually not quite identical
def isUnqualified(n: Name) = n match { case nme.ROOT | nme.EMPTY_PACKAGE_NAME => true ; case _ => false }
I was responsible for at least half of these. Now it's only
isEffectiveRoot.
Also, I have always found it warty that we have to specify Nothing
and Any as upper bounds. I gave the TypeBounds companion object a few
obvious methods:
def empty: TypeBounds = apply(NothingClass.tpe, AnyClass.tpe)
def upper(hi: Type): TypeBounds = apply(NothingClass.tpe, hi)
def lower(lo: Type): TypeBounds = apply(lo, AnyClass.tpe)
It's a lovable patch. No review.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
No review
|
|
|
|
|
|
|
|
| |
Implemented a (slower) workaround for parallel vectors. Implemented
group by.
No review.
|
|
|
|
|
| |
No review.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Apparently my flailing attempts to make things faster earned me the
pity of Tiark, who sent this monster patch which he probably dashed
off before the appetizers had been cleared away. All the steak is his
but I threw in a little sizzle so I could feel like a part of things.
It knocks about a bazillion miniseconds off the time spent in implicit
search.
This is the same patch martin already endorsed, give or take several
hundred lines of diff, so I will say no review, even though I know it
will be hard to look away. I trimmed most of the "speculative code"
(that is, the commented out bits) because it's getting awfully busy
along those sidelines. I will preserve the ideas in some more structured
form.
|
|
|
|
|
|
| |
Fixed a bad interaction between overloading, default parameters and
specialization. Closes #3896, no review.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Disentangled scaladoc and the presentation compiler. Now there are
different flags, forInteractive and forScaladoc, instead of the
overloaded onlyPresentation. While it is unfortunate to have these
flags, I know of no easy way to customize the typer (the behavior they
control is pretty deep into the analyzer). This shaves off around 100MB
of unnecessary docComments from the presentation compiler. review by
odersky, dubochet.
|
| |
|
| |
|
|
|
|
|
|
|
| |
Fixed infinite loop on call to super from a specialized method. This
happened only on illegal specialized inheritance. Closes #3651, no
review.
|
|
|
|
|
|
| |
since r19547, which was for #1836 but loosened the noose too much.
Closes #4128, review by odersky.
|
|
|
|
|
|
| |
Misc uninteresting tidbits to take some weight off overly large patches
in progress. No review.
|
|
|
|
|
|
|
|
|
|
|
| |
Generalized a pile of duplicated type caching code, but it's still
largely undeployed because I haven't figured out how to make it as fast
as the copy-pasted version, which bugs me like you wouldn't believe.
Cannot deal with making "Sophie's Choice" between performance and lack
of duplication. I left one deployment in because it fixed a bug, or at
least so I see it: can't see why one would want the two absent error
messages in t2641.check. Review by odersky.
|
|
|
|
|
|
| |
Modified the self-type protected accessor test to avoid unnecessary
runtime failures. Closes #4119, review by dragos.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Even after the mostly blissful marriage of Traversable and Iterator
there was some fussin' and fightin' over who should have to care for
Option. Now there is peace among the collections once again.
// before
scala> Iterator(Some(1), None).flatten
<console>:6: error: value flatten is not a member of Iterator[Option[Int]]
// after
scala> Iterator(Some(1), None).flatten
res0: Iterator[Int] = non-empty iterator
Review by moors.
|
| |
|
|
|
|
|
|
| |
The above issue was made explicit using the dx tool for the Android SDK
to convert Java bytecode to Dalvik bytecode.
|
|
|
|
|
|
| |
forward toString, but forwarding equals and hashCode breaks equality
with sequences. Closes #4122, no review.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fix 'Symbol.companionModule' for the resident mode compiler. It was
confused by having modules being translated to lazy values. The
direct consequence was a crash in the build manager when looking at a
constructor using a default argument (compiled separately), but only on
the second run.
The resident compiler may run many times over, and symbols may be
reused. Therefore, a module symbol that has been translated to a lazy
val by refchecks is not guaranteed to have MODULE set on the next run
(even before refcheck). Flags are not part of symbol history. Instead we
rely on the fact that a synthetic lazy value must have been a module.
review by odersky.
|
| |
|
|
|
|
|
|
|
|
|
| |
Bencharking a larger program with parallel collections.
Fixed a couple of bugs in parallel collections.
No review.
|
|
|
|
|
| |
No review.
|
|
|
|
|
| |
small, very focused taste of Ordering contravariance. No review.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Explaining something for the (largeish N)th time finally awoke me to
the fact that software can explain things. I labored a long time over
this error message: I'm sure it can still use work (and/or it will drive
scalaz users off some kind of cliff) but the simple common case people
have so much trouble with is lit up like a christmas tree and for this I
will take some bullets.
build/pack/bin/scala -e 'class Foo[T] ; Set[Foo[AnyRef]]() + new
Foo[String]' :1: error: type mismatch; found : this.Foo[String]
required: this.Foo[java.lang.Object] Note: String <: java.lang.Object,
but class Foo is invariant in type T. You may wish to define T as +T
instead. (SLS 4.5) class Foo[T] ; Set[Foo[AnyRef]]() + new Foo[String]
^
Review by moors.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Added some infrastructure for tracking and displaying information. Used
it to generate phase timing tables. Couldn't bring myself to add another
option so it's temporarily behind a system property until I sort out the
output options.
% scalac -Dscala.timings foo.scala
// or: ant -Djvm.opts="-Dscala.timings"
[...]
phase id ms share
-------------- -- ---- -----
typer 4 5816 44.94
mixin 20 1220 9.43
specialize 13 1179 9.11
erasure 15 916 7.08
...etc. No review.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
do not add entry in InnerClass attribute if outer name is null
(according to comment for outerName method) in order to remove the
following warning message reported by the dx tool (Android):
warning: Ignoring InnerClasses attribute for an anonymous inner class
(test$$anonfun$1) that doesn't come with an associated EnclosingMethod
attribute. This class was probably produced by a compiler that did
not target the modern .class file format. The recommended solution
is to recompile the class from source, using an up-to-date compiler
and without specifying any "-target" type options. The consequence of
ignoring this warning is that reflective operations on this class will
incorrectly indicate that it is *not* an inner class.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Stops barking up the wrong tree with -Ywarn-dead-code. The origin of its
issues was twofold:
1) synchronized acts by-name without being by-name (ticket #4086) 2)
warnings are swallowed if context.reportGeneralErrors is false
Those two plus a dash of bitrot. In any case it's at its all time
happiest now. It found all the dead code related fixes in this commit.
Way to go, -Ywarn-dead-code! Review by odersky.
|
|
|
|
|
| |
enjoy fewer spurious warnings. Closes #1681, no review.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Told the boy trying to plug the dike holes that he can go home. Instead
of trying to catch unpositioned EmptyTrees from the XML parser, don't
generate them. It's the kind of commit you would tell your grandkids
about if your grandkids could sit still for five seconds: fixes bugs
by deleting code and eliminates extraneous error messages to boot (see
.check diffs.) No review.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
New jline: BSD licensed, based on [ https://github.com/jdillon/jline2 ]
with additional code thanks to [ https://github.com/huynhjl/jline2 ].
Replaces lib/jline.jar with build of these sources, and modifies trunk
code to work with the new jar.
Hopeful improvements including baseline functionality on cygwin
and 64bit windows, as well as more accurate line wrapping / cursor
positioning on all platforms and ctrl-R history search.
For the time being the canonical source repository is this:
https://github.com/paulp/jline2
The enclosed sources are a mirror of that repository, and should be
treated as read-only in the scala svn repository.
No review, codewise, but people are very strongly encouraged to try it
out and report any regressions.
|
| |
|
|
|
|
|
|
|
|
| |
Turned an assert/compiler crash into an error message. Admittedly the
error output is still terrible (the XML positioning looks like it came
from an RNG) but more helpful than the crash. Also misc advantage of a
handy new method. Closes #4069, no review.
|
|
|
|
|
|
|
|
|
|
| |
When was the last time -Xcheckinit was run? It must have been a long
time. All these changes are to address bugs revealed by -Xcheckinit,
mostly in test cases, some in the compiler. I'm guessing the partest
-Xcheckinit runs are hanging the first time they run into a failure, so
if it starts "working" again after this commit don't get too confident.
No review.
|
| |
|
|
|
|
|
| |
No review.
|
|
|
|
|
| |
No review.
|
|
|
|
|
|
|
|
|
| |
Array combiners implementation changed from array buffers to doubling
unrolled buffers to avoid excessive copying. Still evaluating the
benefits of this.
No review.
|