| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
As seen here.
scala> class A { @deprecated("foo") def a = 1 }
warning: there were 1 deprecation warnings; re-run with -deprecation for details
defined class A
scala> :warnings
<console>:7: warning: @deprecated now takes two arguments; see the scaladoc.
class A { @deprecated("foo") def a = 1 }
^
scala> val x = 5 toString
warning: there were 1 feature warnings; re-run with -feature for details
x: String = 5
scala> :warnings
<console>:7: warning: postfix operator toString should be enabled
by making the implicit value language.postfixOps visible.
This can be achieved by adding the import clause 'import language.postfixOps'
or by setting the compiler option -language:postfixOps.
See the Scala docs for value scala.language.postfixOps for a discussion
why the feature should be explicitly enabled.
val x = 5 toString
^
|
|
|
|
|
| |
All the credit for fixing magical constants in the encoding algorithm goes to @magarciaEPFL.
This time provided a test case that exercises GenASM.
|
|
|
|
| |
Patch contributed by @viktorklang
|
| |
|
|\
| |
| | |
Collection of updates to SIP-14 (scala.concurrent)
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Developed by Viktor Klang and Havoc Pennington
- add Promise.isCompleted
- add Future.successful and Future.failed
- add ExecutionContextExecutor and ExecutionContextExecutorService for Java interop
- remove defaultExecutionContext as default parameter value from promise and future
- add ExecutionContext.Implicits.global which must be explicitly imported, rather
than the previous always-available value for the implicit EC
- remove currentExecutionContext, since it could create bugs by being
out of sync with the implicit ExecutionContext
- remove Future task batching (_taskStack) and Future.releaseStack
This optimization should instead be implemented either in
a specific thread pool or in a specific ExecutionContext.
Some pools or ExecutionContexts may not want or need it.
In this patch, the defaultExecutionContext does not
keep the batching optimization. Whether it should
have it should perhaps be determined through benchmarking.
- move internalBlockingCall to BlockContext and remove currentExecutionContext
In this patch, BlockContext must be implemented by Thread.currentThread,
so the thread pool is the only place you can add custom hooks
to be run when blocking.
We implement BlockContext for the default ForkJoinWorkerThread in terms of
ForkJoinPool.ManagedBlocker.
- add public BlockContext.current and BlockContext.withBlockContext
These allow an ExecutionContext or other code to override
the BlockContext for the current thread. With this
API, the BlockContext is customizable without
creating a new pool of threads.
BlockContext.current is needed to obtain the previous
BlockContext before you push, so you can "chain up" to
it if desired.
BlockContext.withBlockContext is used to override the context
for a given piece of code.
- move isFutureThrowable into impl.Future
- add implicitNotFound to ExecutionContext
- remove default global EC from future {} and promise {}
- add ExecutionContext.global for explicit use of the global default EC,
replaces defaultExecutionContext
- add a timeout to scala-concurrent-tck tests that block on SyncVar
(so tests time out rather than hang)
- insert blocking{} calls into concurrent tck to fix deadlocking
- add NonFatal.apply and tests for NonFatal
- add OnCompleteRunnable marker trait
This would allow an ExecutionContext to distinguish a Runnable originating
from Future.onComplete (all callbacks on Future end up going through
onComplete).
- rename ListenerRunnable to CallbackRunnable and use for KeptPromise too
Just adds some clarity and consistency.
|
|/ |
|
| |
|
|
|
|
|
| |
this uncovers a bug in toolboxes: https://issues.scala-lang.org/browse/SI-6007
however that bug is not critical, so it will be dealt with later
|
|
|
|
| |
Review by: @phaller
|
|
|
|
|
| |
This protects everyone from the confusion caused by stuff like this:
https://issues.scala-lang.org/browse/SI-5884
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Before 2.10 we had a notion of ClassManifest that could be used to retain
erasures of abstract types (type parameters, abstract type members) for
being used at runtime.
With the advent of ClassManifest (and its subtype Manifest)
it became possible to write:
def mkGenericArray[T: Manifest] = Array[T]()
When compiling array instantiation, scalac would use a ClassManifest
implicit parameter from scope (in this case, provided by a context bound)
to remember Ts that have been passed to invoke mkGenericArray and
use that information to instantiate arrays at runtime (via Java reflection).
When redesigning manifests into what is now known as type tags, we decided
to explore a notion of ArrayTags that would stand for abstract and pure array
creators. Sure, ClassManifests were perfectly fine for this job, but they did
too much - technically speaking, one doesn't necessarily need a java.lang.Class
to create an array. Depending on a platform, e.g. within JavaScript runtime,
one would want to use a different mechanism.
As tempting as this idea was, it has also proven to be problematic.
First, it created an extra abstraction inside the compiler. Along with class tags
and type tags, we had a third flavor of tags - array tags. This has threaded the
additional complexity though implicits and typers.
Second, consequently, when redesigning tags multiple times over the course of
Scala 2.10.0 development, we had to carry this extra abstraction with us, which
exacerbated the overall feeling towards array tags.
Finally, array tags didn't fit into the naming scheme we had for tags.
Both class tags and type tags sound logical, because, they are descriptors for
the things they are supposed to tag, according to their names.
However array tags are the odd ones, because they don't actually tag any arrays.
As funny as it might sound, the naming problem was the last straw
that made us do away with the array tags. Hence this commit.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Are these -msil checkfiles used in some secret fashion? The level of
activity suggest otherwise. Since scala-nightly-msil has been disabled
for over a year, it's an easy rm unless someone speaks up.
% tools/rm-orphan-checkfiles
Scanning for orphan check files...
rm 'test/disabled/run/code.check'
rm 'test/files/jvm/t1652.check'
rm 'test/files/neg/macro-argtype-mismatch.check'
rm 'test/files/neg/macro-noncompilertree.check'
rm 'test/files/neg/macro-nontree.check'
rm 'test/files/run/Course-2002-01-msil.check'
rm 'test/files/run/Course-2002-02-msil.check'
rm 'test/files/run/Course-2002-03-msil.check'
rm 'test/files/run/Course-2002-04-msil.check'
rm 'test/files/run/Course-2002-08-msil.check'
rm 'test/files/run/Course-2002-09-msil.check'
rm 'test/files/run/Course-2002-10-msil.check'
rm 'test/files/run/absoverride-msil.check'
rm 'test/files/run/bitsets-msil.check'
rm 'test/files/run/boolord-msil.check'
rm 'test/files/run/bugs-msil.check'
rm 'test/files/run/impconvtimes-msil.check'
rm 'test/files/run/infix-msil.check'
rm 'test/files/run/iq-msil.check'
rm 'test/files/run/macro-invalidret-doesnt-conform-to-impl-rettype.check'
rm 'test/files/run/macro-rettype-mismatch.check'
rm 'test/files/run/misc-msil.check'
rm 'test/files/run/promotion-msil.check'
rm 'test/files/run/richs-msil.check'
rm 'test/files/run/runtime-msil.check'
rm 'test/files/run/tuples-msil.check'
rm 'test/pending/jvm/t1464.check'
rm 'test/pending/run/subarray.check'
rm 'test/pending/run/t0446.check'
rm 'test/pending/run/t5629.check'
Scanning for orphan flags files...
rm 'test/files/neg/macro-argtype-mismatch.flags'
rm 'test/files/neg/macro-noncompilertree.flags'
rm 'test/files/neg/macro-nontree.flags'
rm 'test/files/pos/anyval-children.flags'
rm 'test/files/pos/t3097.flags'
rm 'test/files/run/macro-invalidret-doesnt-conform-to-impl-rettype.flags'
rm 'test/files/run/macro-rettype-mismatch.flags'
|
|
|
|
| |
Testing these issues takes significant amounts of time so I am temporarely removing them from the master. The issue is not in the code but in the tests output order.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Port of a pull request originally submitted by @havocp.
- declare the invariant that all app callbacks have an
associated ExecutionContext provided at the place
the callback is passed to a method on Future
- always run callbacks in their associated EC
- since all callbacks have their own EC, Promise
does not need one
- "internal" callbacks don't need to defer execution either
since we know the ultimate app callback will do so,
therefore we can use an immediate executor for these
|
|\
| |
| | |
Adding the Actor Migration Kit.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Kit consists of:
1) The StashingActor which adopts an interface similar to Akka.
2) Props mockup for creating Akka like code
3) Pattern mockup
4) Test cases for every step in the migration.
5) MigrationSystem which will paired on the Akka side.
Review of the code : @phaller
Review of the build: @jsuereth
|
|/ |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
OnceCanBuildFrom.
Removed the implicit modifier on the OnceCanBuildFrom, as we don't
support implicit classes with zero arguments.
Added an implicit OnceCanBuildFrom method.
The idea behind OnceCanBuildFrom is for it to be used by methods which
construct collections, but are defined outside of collection classes.
OnceCanBuildFrom so far worked only for objects of type TraversableOnce:
shuffle(List(1, 2, 3).iterator: TraversableOnce[Int])
but this used to result in an implicit resolution error:
shuffle(List(1, 2, 3).iterator)
because after the type parameter M for `shuffle` was inferred to Iterator, no implicit
of type CanBuildFrom[Iterator[_], A, Iterator[A]] could be found.
Introduced another CanBuildFrom to the Iterator companion object.
Modified Future tests appropriately.
|
| |
|
|
|
|
| |
Ported most of the future tests.
|
|
|
|
| |
Fixed a bug in Future.zip.
|
|\ \ |
|
| | | |
|
| |/
| |
| |
| |
| | |
* all usages of ClassManifest and Manifest are replaced with tags
* all manifest tests are replaced with tag tests
|
|/ |
|
| |
|
| |
|
|\ \
| | |
| | |
| | | |
'type-destructure' into develop
|
| |/
|/|
| |
| |
| |
| | |
Would prefer to bake a little longer, but, scala days.
More elaboration to come.
|
| |
| |
| |
| | |
@viktorklang
|
| |\
| |/
|/| |
|
| | |
|
| | |
|
|\ \
| | |
| | |
| | | |
'refs/pull/403/head'; commit 'refs/pull/404/head'; commit 'refs/pull/405/head' into develop
|
| | | |
|
|/ /
| |
| |
| |
| |
| |
| | |
some tests (unreachability, exhaustivity, @switch annotation checking) are still run under -Xoldpatmat,
but that will change before we go into RC mode (then the test/ partest of this commit will be reverted)
removed irrelevant dependency on patmat
|
| | |
|
|\ \ |
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Implements SIP 16: Self-cleaning macros: http://bit.ly/wjjXTZ
Features:
* Macro defs
* Reification
* Type tags
* Manifests aliased to type tags
* Extended reflection API
* Several hundred tests
* 1111 changed files
Not yet implemented:
* Reification of refined types
* Expr.value splicing
* Named and default macro expansions
* Intricacies of interaction between macros and implicits
* Emission of debug information for macros (compliant with JSR-45)
Dedicated to Yuri Alekseyevich Gagarin
|
|/
|
|
|
|
|
|
|
|
| |
I turn them over to the responsible parties. Iulian knows about
the deadlock test; for philipp I presume,
07:10:29 [partest] concurrent-future.scala:97: error: not found: type FutureTimeoutException
07:10:29 [partest] throw new FutureTimeoutException(null)
07:10:29 [partest] ^
07:10:29 [partest] one error found
|
|
|
|
| |
recoverWith, zip, fallbackTo
|
| |
|
|
|
|
|
| |
Removed some methods from execution contexts.
Changed Awaitable interface.
|
|\ |
|