| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| | |
Merge 2.10.0-wip into 2.10.x.
|
| |\
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
# By Jason Zaugg (5) and others
# Via Josh Suereth (5) and others
* origin/2.10.0-wip:
Use Typed rather than .setType
Wider use and a new variant of typedPos.
SI-6575 Plug inference leak of AbstractPartialFun
Disabled generation of _1, _2, etc. methods.
SI-6526 Additional test case.
Fix SI-6552, regression with self types.
avoid single-art assert where harmful in duration-tck
Fix for SI-6537, inaccurate unchecked warning.
SI-6526 Tail call elimination should descend deeper.
Changes Tree and Type members from vals to defs.
Fixes SI-6170: issue with dragging scaladoc splitter over central iframe
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Usually this isn't needed, as partial functions can only be
defined with an expected type. But if that expected type is
and inherited method return type, the actual type of the partial
function literal is used, and the implementation detail of
`AbstractPartialFunction[A, B] with Serializable` leaks out.
After this change, the inferred types match those from
Scala 2.9.2.
ticket/6575 ~/code/scala scalac29 -Xprint:typer test/files/pos/t6575a.scala | grep def > 29.txt
ticket/6575 ~/code/scala squalac -Xprint:typer test/files/pos/t6575a.scala | grep def > 210.txt
ticket/6575 ~/code/scala diff -u 29.txt 210.txt
--- 29.txt 2012-10-28 13:51:07.000000000 +0100
+++ 210.txt 2012-10-28 13:51:20.000000000 +0100
@@ -1,7 +1,16 @@
def foo: PartialFunction[Int,Int]
def /*Y*/$init$(): Unit = {
- absoverride def foo: PartialFunction[Int,Int] = ((x0$1: Int) => x0$1 match {
+ absoverride def foo: PartialFunction[Int,Int] = {
+ def <init>(): anonymous class $anonfun = {
+ final override def applyOrElse[A1 >: Nothing <: Int, B1 >: Int <: Any](x$1: A1, default: A1 => B1): B1 = (x$1: A1 @unchecked) match {
+ final def isDefinedAt(x$1: Int): Boolean = (x$1: Int @unchecked) match {
def /*Z*/$init$(): Unit = {
- absoverride def foo: PartialFunction[Int,Int] = ((x0$2: Int) => x0$2 match {
+ absoverride def foo: PartialFunction[Int,Int] = {
+ def <init>(): anonymous class $anonfun = {
+ final override def applyOrElse[A1 >: Nothing <: Int, B1 >: Int <: Any](x$1: A1, default: A1 => B1): B1 = (x$1: A1 @unchecked) match {
+ final def isDefinedAt(x$1: Int): Boolean = (x$1: Int @unchecked) match {
def /*Comb*/$init$(): Unit = {
- absoverride def foo: PartialFunction[Int,Int] = ((x0$3: Int) => x0$3 match {
+ absoverride def foo: PartialFunction[Int,Int] = {
+ def <init>(): anonymous class $anonfun = {
+ final override def applyOrElse[A1 >: Nothing <: Int, B1 >: Int <: Any](x$1: A1, default: A1 => B1): B1 = (x$1: A1 @unchecked) match {
+ final def isDefinedAt(x$1: Int): Boolean = (x$1: Int @unchecked) match {
|
| | |\
| | | |
| | | | |
Disabled generation of _1, _2, etc. methods.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This was part of the introduction of ProductN, which had
to go back into pandora's box because of issues with cycles
during typing. These should have been reverted along
with it.
|
| | |\ \
| | | | |
| | | | | |
SI-6526 Tail call elimination should descend deeper.
|
| | | | | |
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
It wasn't traversing into Select nodes nor into the receiver of
a tail call.
|
| | | |/
| | |/|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
In 6eb55d4b7a we put in a remedy for an old issue SI-4560 which
had accumulated a number of sketchy partial remedies which carried
no tests to illustrate their necessity. Looks like at least one of
those was doing something useful. Here's to reversion-reversion.
This reverts commit c8bdf199, which itself reverted cb4fd6582.
|
| | |\ \
| | | | |
| | | | | |
Fix for SI-6537, inaccurate unchecked warning.
|
| | | |/
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
I found a more direct expression of the unchecked logic,
which should be much easier for others to verify. But the
bug being fixed here is that the unchecked checking happens
too early, and the sealed children of a symbol are not yet
visible if it is being simultaneously compiled.
|
| | |/ |
|
|\ \ \
| | | |
| | | | |
SI-6488: Fix for race with open I/O fds
|
| |/ / |
|
|/ /
| |
| |
| |
| | |
As reported by Curtis Stanford, with indication of what to fix. standardInterpolator was not correctly
calling the passed in process function, so raw strings were not really raw.
|
| | |
|
|/
|
|
|
|
|
|
|
|
|
|
|
| |
Until now lazy accessors were handled somehow special because their symbol was created in typers but the corresponding tree was only added in Refchecks. This irregularity caused serious problems for value classes. Also it now looks just better when lazy value is treated in a similar way as other fields.
I needed to adapt reifier so that it handles the new implementation correctly. Previously it had to recreate lazy val only by removing defdef and renaming. Now we basically need to recreate lazy val from scratch.
There is one minor change to cps plugin but that is still fine because lazy vals were never really part of the transformation.
Some range positions needed to be fixed manually. We could do it at the creation time but that would require a lot more "if (symbol.isLazy)" conditions for MethodSyntheis and Symbol/Tree creation and would just unnecessary complicate api. If someone has a better idea, please speak up. Range positions changes were necessary because previously accessors were created at refchecks and they weren't checked by validator (even though they were wrong).
This commit removes lazy val implementation restriction introduced for 2.10.0.
(cherry-picked from 981424b)
|
|\
| |
| | |
Fixed SI-6505. Respond to ask calls by immediate failure after compiler shutdown.
|
| |
| |
| |
| |
| |
| |
| | |
shutdown.
When the compiler is asked to shutdown, it may still have items on the working queue, and more can be added by clients in other thread that don't *know* the compiler is down yet. These requests were never serviced, leading to deadlocks or timeouts.
review by @odersky, @hubertp
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
I can't do any better than a reproduced comment:
For some reason which is still a bit fuzzy, we must let Nothing
through as a lower bound despite the fact that Nothing is always
a lower bound. My current supposition is that the side-effecting
type constraint accumulation mechanism depends on these subtype
tests being performed to make forward progress when there are
mutally recursive type vars. See pos/t6367 and pos/t6499 for the
competing test cases.
|
|\ \
| | |
| | | |
SI-6440: Revert change to `TraversableLike.filterNot`
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Commit df9f470f14262b9b1002f022c2620d8c38835805 introduced
a change to `TraversableLike.filterNot` which broke Stream
implementation that does override `filter` implementation
but does not override `filterNot` implementation. This shows
clearly that reusing code for strict and non-strict collections
is very problematic.
Added a test-case covering this problem.
Closes SI-6440.
Review by @retronym.
|
|\ \
| | |
| | | |
SI-6483 Prohibit super[T] references in value classes.
|
| | |
| | |
| | |
| | | |
This seems the safest course of action for 2.10.0.
|
|\ \ \
| |_|/
|/| | |
Another reflection bomb
|
| | |
| | |
| | |
| | | |
We have nme.EMPTY and tpnme.EMPTY for that.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Again, this is not a fatal error, so it should end with an Error,
and it should subclass not Throwable, but Exception.
Also moved the exception outside the cake to simplify error handling,
along the same lines of what've been done for parsing and reification
exceptions.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
We definitely need to document scala.reflect.runtime.universe,
therefore adding scala.reflect.runtime to skipPackages was a mistake.
But then we need to make a bunch of internal classes private to reflect
or to scala. Not very pretty, but it works.
|
|\ \ \
| | | |
| | | | |
SI-6215 Fix compiler crash on private method in value class
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Fixes the problem with private defs in value classes by moving the $extension after the name proper rather than before. The previous scheme did not commute with makeNonPrivate:
I.e. if -ext-> is "generate extension name" and -mnp-> is "make not private" we did get for
method foo in value class Foo:
foo -ext-> extension$foo -mnp-> Foo$$extension$foo
but
foo -mnp-> Foo$$foo -ext-> extension$Foo$$foo
With the change both variations give the same name:
foo -ext-> foo$extension -mnp-> Foo$$foo$extension
but
foo -mnp-> Foo$$foo -ext-> Foo$$foo$extension
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Macros don't correspond to bytecode-level methods, therefore
there's no need to undergo any transformations past typer.
|
| |_|/
|/| |
| | |
| | |
| | |
| | |
| | |
| | | |
This matter was discussed at scala-internals:
http://groups.google.com/group/scala-internals/browse_thread/thread/6414d200cf31c357
And I am convinced with Paul's argument: consistency of the convention
is very important.
|
|\ \ \
| | | |
| | | | |
undeprecates manifests for 2.10.0
|
| | |/
| |/|
| | |
| | |
| | |
| | |
| | |
| | | |
Since scala-reflect.jar is going to be declared experimental for 2.10.0,
it doesn't make sense to deprecate manifests in favor of type tags.
Class manifests, however, ARE deprecated for class tags, because class tags
don't require scala-reflect.jar and are generated independently of type tags.
|
|\ \ \
| |/ /
|/| | |
SI-6451: Rename classes in `unchecked-abstract.scala` test.
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| | |
As reported Miguel, `Con` is problematic name of a class on Windows
and makes this test to fail. Renamed classes to something else which
hopefully make Windows build happy again.
Closes SI-6451.
Review by @magarciaEPFL or @paulp.
|
|\ \
| | |
| | | |
AnyVal/value classes restrictions
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Nested objects, classes and lazy vals are disallowed at any
nesting level in value classes; e.g. lazy vals local to a
method defined in a value class. There are still allowed in
universal traits.
This is a temporary, implementation restriction that is planned
to be addressed in future releases of Scala. Error messages has
been updated to communicate that intent.
Moved tests for SI-5582 and SI-6408 to pending folder. They have
to stay there until implementation restrictions are addressed.
Closes SI-6408 and SI-6432.
Review by @odersky, @harrah and @adriaanm.
|
| | |
| | |
| | |
| | | |
Fixed problem reported in comment, where inner classes of value classe caused a compiler crash.
|
| |/
| |
| |
| |
| |
| |
| |
| |
| | |
and brought compiler in line with them. One thing we can accept IMO are nested
classes (nested objects are still a problem). In fact, it makes no sense to
exclude nested classes from value classes but not from universal traits. A class
nested in universal trait will becomes a class nested in a value class by
inheritance. Note that the reflection library already contains a universal trait
with a nested class (IndexedSeqLike), so we should accept them if we can.
|
|\ \
| |/
|/| |
SI-6436 Handle ambiguous string processors
|
| |
| |
| |
| |
| |
| |
| |
| | |
Before, we got in an inifinite loop by chasing
the error typed result of adaptToMemberWithArgs.
One point of befuddlement remains: why did t6436 and t6436b
behave differently before this change?
|
|\ \
| | |
| | | |
SI-6442 - Add ActorDSL object for actor migration kit
|
| |/
| |
| |
| | |
Removes MigrationSystem, since ActorDSL replaces it.
|
| |
| |
| |
| |
| | |
This covers the situation which broke in 5c5e8d4dcd,
reverted in the previous commit.
|
|/
|
|
| |
This reverts commit 5c5e8d4dcd151a6e2bf9e7c259c618b9b4eff00f.
|
|\
| |
| | |
a fork of isValueType and isNonValueType
|
| |
| |
| |
| |
| |
| | |
only affects runtime reflection, because Symbol.typeSignature
is only defined in the reflection API. the rest of the compiler
uses Symbol.info instead.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
There's some very sketchy behavior visible - I'm printing a
method signature and getting this:
[B <: <?>, That <: <?>](f: <?>)(implicit cbf: <?>)That
But there's no exposed way to force the info. Am I
supposed to call isSealed or something?
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Restrictions regarding how non-value types can be used have
generally not been enforced explicitly, depending instead on
the fact that the compiler wouldn't attempt to use them in
strange ways like offering a method type as a type argument.
Since users can now create most types from scratch, it has
become important to enforce the restrictions in a more
direct fashion.
This was a lot harder than it probably should have been
because there are so many types which go unmentioned by the
specification. Hopefully a useful exercise in any case.
|