| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
|
|
|
|
| |
I love the smell of polymorphic method synthesis in the
early afternoon.
|
| |
|
|
|
|
|
|
|
| |
Finally had a concrete motivation to change partest's inexplicable
ISO-8859-1 encoding to UTF-8. My test case would cause it to barf
"illegal character". Is this going to break on windows or something?
If so, it's time to fix the broken place which can't handle UTF-8.
|
|
|
|
| |
At least tell us what they are.
|
|
|
|
| |
This reverts commit 6a5901461c1aaac7dd8786cb374b079520895527.
|
|\ \
| | |
| | |
| | | |
'axel22/feature/immutable-thread-safe' into develop
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This is part of an effort to make the immutable collections
(more) thread safe. The `::` still has non-final member fields
for head and tail, but there is not much that can be done right
now about that, since these fields are used by list buffers.
Tried writing a test with unsafe initialization, but could not
invent a scenario which actually fails, at least on the JDK6.
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This very situational option proved to be very useful when debugging
https://issues.scala-lang.org/browse/SI-5415
With the help of -Yshow-symkinds, it became possible to distinguish
a free var from a module symbol, which gave precise indication of the
root of the bug.
This changeset also upgrades stringification of symbols and types, so
I'd like to get a review by @paulp and @odersky.
|
| |
| |
| |
| |
| | |
The benchmarks charts are confusing me and I want to rule it out
as a problem by not having it exist for a while.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
And abort calls, and unhandled exceptions, all so I can supplement the
error message with a little of the vast quantity of useful information
which we possess but do not reveal. "Details are sketchy," says the
officer tasked with investigating the crash, but no longer. Also took
the opportunity to eliminate a bunch of one-argument assertions and
requirements if I thought there was any chance I'd someday be facing
them on the wrong end of an incident.
Have you ever dreamed that instead of this experience:
% scalac -optimise <long list of files>
error: java.lang.AssertionError: assertion failed: Record Record(anonymous class JavaToScala$$anonfun$makeScalaPackage$1,Map()) does not contain a field value owner$1
Things could proceed more like this:
% scalac -optimise <long list of files>
error:
while compiling: src/compiler/scala/reflect/runtime/JavaToScala.scala
current phase: closelim
library version: version 2.10.0.rdev-4267-2012-01-25-gc94d342
compiler version: version 2.10.0.rdev-4270-2012-01-26-gd540ddf
reconstructed args: -Ydead-code -optimise -Yinline -Yclosure-elim -Yinline-handlers -d /tmp
error: java.lang.AssertionError: [etc]
You are not dreaming! IT'S ALL HAPPENING
|
| |
| |
| |
| |
| |
| | |
"Induced" but not in my estimation "caused". Would like to understand
why the enclosed test case crashes under -optimise without this change
to AddInterfaces.
|
|/
|
|
| |
I look forward to partest-emo and partest-trance.
|
|
|
|
|
|
| |
* Duplicated binary repo cache in ~/.sbt/cache/scala/
* Resolved to cache before copying to local dir if jar is misisng
* Does *not* check SHA in cache currently
|
|\ \
| | |
| | |
| | | |
into develop
|
| | |
| | |
| | |
| | |
| | | |
Changed CompositeThrowable to inherit Exception instead of Throwable.
A few minor fixes for the jdk1.5 parallel collection tasks.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This is done by structurally serializing list nodes, but prepending a special
`ListSerializationStart` symbol ahead of the list. If this symbol is not
in the object input stream, the deserialization reverts to the old mode.
Note there is not much to be done for list buffers - their serialization was
broken before, so legacy serialized list buffers are no longer deserializable.
However, their serialVersionUID was changed to reflect this, so deserializing
a legacy list buffer should fail fast.
|
|\ \ \
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Conflicts:
src/compiler/scala/reflect/internal/Symbols.scala
src/compiler/scala/reflect/internal/Types.scala
src/compiler/scala/tools/nsc/typechecker/Typers.scala
src/library/scala/reflect/api/Trees.scala
|
| | | |
| | | |
| | | |
| | | | |
methods that take account of synchronization when run under reflection.
|
| | | | |
|
| | | |
| | | |
| | | |
| | | | |
to go through the factory method, which adds on synchronization when run under reflection.
|
| | | | |
|
| | | |
| | | |
| | | |
| | | | |
The idea is that all operations that need to be synchronized are overriden in classes reflect.runtime.Synchronized*. Sometimes this applies to operations defined in SymbolTable, which can be directly overridden. Sometimes it is more convenient to generate SynchronizedClazz subclasses of SymbolTable classes Clazz. In the latter case, all instance creation must go over factory methods that can be overridden in the Synchronized traits.
|
| | | | |
|
| | | | |
|
| | | | | |
| \ \ \ | |
| \ \ \ | |
| \ \ \ | |
|\ \ \ \ \ \
| | | | | | |
| | | | | | |
| | | | | | | |
'scalamacros/topic/antbuildexception', 'leifwickland/SI-5405' and 'axel22/issue/5377' into develop
|
| | | | |_|/
| | | |/| |
| | | | | |
| | | | | | |
Converting the buffer to another arraybuffer instead of to a list.
|
| | | | | | |
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Current behavior of scalacfork task is to fail the build when there are
compilation errors reported by scalac fork. So far, so good.
However, this functionality is implemented by throwing sys.error, which
makes ant dump the entire stacktrace. This is annoying, since it almost
certainly scrolls the screen away of the error (hello, dear 1366x768)
and buries it under a meaningless stacktrace.
Surprisingly, there is a very simple fix that remedies the situation.
Credit goes to @bakoyaro from SO: http://bit.ly/xdR306
|
|/ / / / /
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
given moment (instead of throwing type errors). This avoids previous problems where we were creating fake error trees in some incorrect places like in type completers in Namers etc. Implicits relied heavily on type errors being thrown but performance should stay the same due to some explicit checks/returns.
Some of the problems involved how ambiguous error messages were collected/reported because it was very random (similarly for divergent implicits). This should be more explicit now. Reduced the number of unnecessary cyclic references being thrown (apart from those in Symbols/Types which don't have a context and need to stay for now as is).
Review by @paulp, @odersky.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
We have too many methods called "widen" and/or "normalize".
Renamed one of them to something more instructive. Or in
the words of abe simpson,
Dear Mr. President:
There are too many states nowadays. Please eliminate three.
P.S. I am not a crackpot.
|
| | | | | |
|
| | | | |
| | | | |
| | | | |
| | | | | |
Plus a big unit test I had lying around.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Should be better than "typeConstructor inapplicable for <none>" being
the default message communicating "something is wrong with your attempt
to use a compiler programatically."
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
A very distinguished value in case one feels (as this one does)
that null is disheartening and Option only marginally better.
|
|/ / / /
| | | |
| | | |
| | | | |
From ConsoleReporter to Position so others can use it.
|
|\ \ \ \
| | | | |
| | | | |
| | | | | |
'gkossakowski/virtpatmat-emitswitch' into develop
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This patch brings support for specialized and scalacheck tests,
and finally makes it possible to run partest for locker.
To do that, you need to write your own partest script: http://bit.ly/wl9HaH,
and keep another clone of your repository that would provide the classes
for running partest. That clone should then be build normally (ant build),
and be used to transplant the stuff that isn't built by locker, namely:
partest, actors, scalacheck, forkjoin, fjbg, msil and jline.
For more information take a look at my scavenger: http://bit.ly/AjMiud.
|
|\ \ \ \ \
| |_|/ / /
|/| | | | |
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Simplified emitSwitch method that does not emit
forward jumps for switch tables. Instead, it
emits Match trees that are of a shape that
can be directly translated to switch.
The backend takes care of the actual translation
from Match trees into switch tables.
As a bonus, we emit more compact trees compared
to the old implementation of emitSwitch.
Review by @adriaanm.
|
| | | | | | |
| \ \ \ \ | |
| \ \ \ \ | |
| \ \ \ \ | |
|\ \ \ \ \ \ \
| |_|_|/ / / /
|/| | | | | |
| | | | | | | |
'scalamacros/topic/macros' and 'kmizu/pullrequest-fix-SI-4835' into develop
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
This test case only confirm that StreamIterator's lazyiness is not broken.
Test case about memory consumption could be created. However, such a
test cause a greatly increased time of test.
|
| | | |/ / / |
|
| | | | | | |
|
| | |_|_|/
| |/| | | |
|
| | |/ /
| |/| |
| | | |
| | | |
| | | |
| | | |
| | | | |
Lists are now serialized so that the entire list structure is serialized, including list nodes.
This is different from the previous behaviour where only the elements were serialized.
List buffers are now optimized so that only the elements of the list are serialized, and
not the nodes of the internally maintained list.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
In lambda lift traits are renamed independently of their
implementation classes, leading in the case of a method-defined
trait to an interface called A$1 and an impl class called A$class$1
rather than A$1$class. This is now remedied.
|
|/ / /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
In what feels like divine intervention as I spent my entire day
yesterday unsuccessfully attempting to understand why running atop my
new classpath code, trunk would compile and then fail like this:
build.xml:1683: Could not create type partest due to java.lang.NoSuchMethodError:
scala.tools.ant.sabbus.CompilationPathProperty$class.$init$(Lscala/tools/ant/sabbus/CompilationPathProperty;)V
I discovered the link by trying to debug a seemingly completely
unrelated problem reported by pvlugter.
On the one hand you have PathResolver/ClassPath, which by default does
not place trait implementation classes on the compilation classpath, but
does do so under -optimise (as I understand it, this is so inlining can
be performed, so let us ignore the fact that methods in traits are never
inlined, as outlined in SI-4767.)
object DefaultJavaContext extends JavaContext {
override def isValidName(name: String) = !isTraitImplementation(name)
}
Then on the other hand you have this logic in AddInterfaces:
if (impl != NoSymbol && settings.optimise.value) {
log("unlinking impl class " + impl)
...
}
The test in AddInterfaces is hardcoded to only consider the value of
-optimise. Which means that in the completely default -optimise setup,
it corresponds to the answers given by "isValidName" in JavaContext,
but nothing keeps those elements in sync. The connection to my lost day
was that, thinking I was "simplifying" my development, I had commented
out the override in DefaultJavaContext so that all classes were on the
compilation path. This caused the state of settings.optimise (still
false) and whether impl classes were on the classpath (now true) to fall
into fatal disagreement.
|