summaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #5481 from som-snytt/issue/10007-processLukas Rytz2016-11-183-24/+28
|\ | | | | SI-10007 sys.process thread sync
| * SI-10007 sys.process thread syncSom Snytt2016-11-173-24/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A previous change to replace `SyncVar.set` with `SyncVar.put` breaks things. This commit tweaks the thread synchronizing in `sys.process` to actually use `SyncVar` to sync and pass a var. Joining the thread about to exit is superfluous. A result is put exactly once, and consumers use non-destructive `get`. Note that as usual, avoid kicking off threads in a static context, since class loading cycles are somewhat dicier with 2.12 lambdas. In particular, REPL is a static context by default. SI-10007 Clarify deprecation message The message on `set` was self-fulfilling, as it didn't hint that `put` has different semantics. So explain why `put` helps avoid errors instead of creating them. SI-10007 Always set exit value Always put a value to exit code, defaulting to None. Also clean up around tuple change to unfortunately named Future.apply. Very hard to follow those types. Date command pollutes output, so tweak test.
* | Merge pull request #5330 from som-snytt/issue/9885Jason Zaugg2016-11-181-9/+14
|\ \ | | | | | | SI-9885 Don't return offset past EOF
| * | SI-9885 Don't return offset past EOFSom Snytt2016-08-121-9/+14
| | | | | | | | | | | | | | | On bad line number, `lineToOffset` should not return an offset past EOF (which was sentinel, internally).
* | | Merge pull request #5532 from retronym/ticket/SD-264Adriaan Moors2016-11-162-9/+3
|\ \ \ | | | | | | | | Reinstate MiMa and address problems
| * | | Revert "SI-9750 isJavaAtLeast(Int)"Jason Zaugg2016-11-161-6/+0
| | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 656162bb48fbbd703790a2c94d4563e40ddfdfc2. Adding new APIs is not possible until a major release.
| * | | Restore binary compatiblity with 2.12.0Jason Zaugg2016-11-161-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | - Revert a typo fix to a non-private method - Whitelist changes to internals of runtime reflection that are not part of the API and should only be referenced from within scala-reflect.jar itself.
* | | | Merge pull request #5449 from som-snytt/issue/9953Lukas Rytz2016-11-161-1/+1
|\ \ \ \ | | | | | | | | | | SI-9953 Any Any aborts warn on equals
| * | | | SI-9953 Any Any aborts warn on equalsSom Snytt2016-10-071-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Don't warn about equals if any `Any` is involved. cf SI-8965 The condition for warning is that both types lub to a supertype of Object.
* | | | | Merge pull request #5440 from som-snytt/issue/9944Lukas Rytz2016-11-161-2/+11
|\ \ \ \ \ | | | | | | | | | | | | SI-9944 Scan after interp expr keeps CR
| * | | | | SI-9944 Scan after interp expr keeps CRSom Snytt2016-10-011-2/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In an interpolated expression `s"""${ e }"""`, the scanner advances input past the RBRACE. If a multiline string as shown, get the next raw char, because CR is significant.
* | | | | | Merge pull request #5513 from SethTisue/compiler-rootdocLukas Rytz2016-11-161-6/+1
|\ \ \ \ \ \ | | | | | | | | | | | | | | improve top-level compiler/reflect doc text
| * | | | | | improve top-level compiler/reflect doc textSeth Tisue2016-11-081-6/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | this shows up at http://www.scala-lang.org/api/2.12.0/scala-compiler/ ideally there'd be something better here, but we should at least not link to egregiously outdated stuff
* | | | | | | Merge pull request #5534 from lrytz/t10059Lukas Rytz2016-11-161-1/+1
|\ \ \ \ \ \ \ | |_|_|_|/ / / |/| | | | | | SI-10059 reset the `DEFERRED` flag for Java varargs forwarders
| * | | | | | SI-10059 reset the `DEFERRED` flag for Java varargs forwardersLukas Rytz2016-11-161-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When an abstract method is annotated `@varargs`, make sure that the generated synthetic Java varargs method does not have the `DEFERRED` flag (`ACC_ABSTRACT` in bytecode). The flag lead to an NPE in the code generator, because the ASM framework leaves certain fields `null` for abstract methods (`localVariables` in this case). Interestingly this did not crash in 2.11.x: the reason is that the test whether to emit a method body or not has changed in the 2.12 backend (in c8e6050). val isAbstractMethod = [..] methSymbol.isDeferred [..] // 2.11 val isAbstractMethod = rhs == EmptyTree // 2.12 So in 2.11, the varargs forwarder method was actually left abstract in bytecode, leading to an `AbstractMethodError: T.m([I)I` at run-time.
* | | | | | | Merge pull request #5384 from som-snytt/issue/9915Seth Tisue2016-11-141-2/+6
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | SI-9915 Utf8_info are modified UTF8
| * | | | | | | SI-9915 Utf8_info are modified UTF8Som Snytt2016-10-201-2/+6
| | |_|_|/ / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use DataInputStream.readUTF to read CONSTANT_Utf8_info. This fixes reading embedded null char and supplementary chars.
* | | | | | | Fix typo in scalac, scalap man pagesMohit Agarwal2016-11-132-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | s/exist status/exit status/
* | | | | | | Typo and spelling correctionsJanek Bogucki2016-11-1170-89/+88
| | | | | | |
* | | | | | | Merge pull request #5303 from xuwei-k/isNaN-boxingJason Zaugg2016-11-112-7/+7
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | avoid boxing
| * | | | | | | avoid boxingxuwei-k2016-10-282-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | scala.runtime.Rich{Double, Float} has `isNaN` and these are value class. Also java.lang.{Double, Float} has `isNaN`. - https://docs.oracle.com/javase/8/docs/api/java/lang/Double.html#isNaN-- - https://docs.oracle.com/javase/8/docs/api/java/lang/Float.html#isNaN-- We can't call `RichDouble#isNaN` because `implicit def double2Double(x: Double): java.lang.Double` is higher priority than `implicit def doubleWrapper(x: Double): RichDouble` ``` $ scala -version Scala code runner version 2.11.8 -- Copyright 2002-2016, LAMP/EPFL $ scala -Xprint:jvm -e "1.0.isNaN" [[syntax trees at end of jvm]] // scalacmd616162202928036892.scala package <empty> { object Main extends Object { def main(args: Array[String]): Unit = { new <$anon: Object>(); () }; def <init>(): Main.type = { Main.super.<init>(); () } }; final class anon$1 extends Object { def <init>(): <$anon: Object> = { anon$1.super.<init>(); scala.this.Predef.double2Double(1.0).isNaN(); () } } } ```
* | | | | | | | Merge pull request #5335 from rumoku/SI-9888Jason Zaugg2016-11-111-0/+1
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | SI-9888. Prevent OOM on ParRange. Improve toString.
| * | | | | | | | SI-9888. Prevent OOM on ParRange. Improve toString.Vladimir Glushak2016-10-021-0/+1
| | | | | | | | |
* | | | | | | | | Merge pull request #5516 from Ichoran/non-slow-vector-twelveJason Zaugg2016-11-117-13/+11
|\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | Improved runtime speed for Vector, restoring previous performance.
| * | | | | | | | | Manually inlined all other instances of Platform.arraycopy to System.arraycopyRex Kerr2016-11-096-8/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | to avoid the same kind of slowdowns that Vector was experiencing due to the less aggressive inlining by scalac.
| * | | | | | | | | Improved runtime speed for Vector, restoring previous performance.Rex Kerr2016-11-091-5/+4
| | |_|_|/ / / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | All calls to Platform.arraycopy were rewritten as java.lang.System.arraycopy to reduce the work that the JIT compiler has to do to produce optimized bytecode that avoids zeroing just-allocated arrays that are about to be copied over. (Tested with -XX:-ReduceBulkZeroing as suggested by retronym.)
* | | | | | | | | Merge pull request #5460 from som-snytt/issue/6978Jason Zaugg2016-11-101-1/+1
|\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | SI-6978 No linting of Java parens
| * | | | | | | | | SI-6978 No linting of Java parensSom Snytt2016-10-151-1/+1
| | |_|_|/ / / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Don't lint overriding of nullary by non-nullary when non-nullary is Java-defined. They can't help it.
* | | | | | | | | Merge pull request #5486 from som-snytt/issue/6734-synthsJason Zaugg2016-11-101-3/+18
|\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | SI-6734 Synthesize companion near case class
| * | | | | | | | | SI-6734 CommentSom Snytt2016-10-311-1/+2
| | | | | | | | | |
| * | | | | | | | | SI-6734 Synthesize companion near case classSom Snytt2016-10-271-3/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Tweak the "should I synthesize now" test for case modules, so that the tree is inserted in the same tree as the case class.
* | | | | | | | | | Merge pull request #5509 from lrytz/t10032Lukas Rytz2016-11-103-20/+42
|\ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | SI-10032 Fix code gen with returns in nested try-finally blocks
| * | | | | | | | | | Fix returns from within finalizersLukas Rytz2016-11-093-13/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a return in a finalizer was reached through a return within the try block, the backend ignored the return in the finalizer: try { try { return 1 } finally { return 2 } } finally { println() } This expression should evaluate to 2 (it does in 2.11.8), but in 2.12.0 it the result is 1. The Scala spec is currently incomplete, it does not say that a finalizer should be exectuted if a return occurs within a try block, and it does not specify what happens if also the finally block has a return. So we follow the Java spec, which basically says: if the finally blocks completes abruptly for reason S, then the entire try statement completes abruptly with reason S. An abrupt termination of the try block for a different reason R is discarded. Abrupt completion is basically returning or throwing.
| * | | | | | | | | | SI-10032 Fix code gen with returns in nested try-finally blocksLukas Rytz2016-11-081-7/+38
| | |_|/ / / / / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Return statements within `try` or `catch` blocks need special treatement if there's also a `finally` try { return 1 } finally { println() } For the return, the code generator emits a store to a local and a jump to a "cleanup" version of the finally block. There will be 3 versions of the finally block: - One reached through a handler, if the code in the try block throws; re-throws at the end - A "cleanup" version reached from returns within the try; reads the local and returns the value at the end - One reached for ordinary control flow, if there's no return and no exception within the try If there are multiple enclosing finally blocks, a "cleanup" version is emitted for each of them. The nested ones jump to the enclosing ones, the outermost one reads the local and returns. A global variable `shouldEmitCleanup` stores whether cleanup versions are required for the curren finally blocks. By mistake, this variable was not reset to `false` when emitting a `try-finally` nested within a `finally`: try { try { return 1 } finally { println() } // need cleanup version } finally { // need cleanup version try { println() } finally { println() } // no cleanup version needed! } In this commit we ensure that the variable is reset when emitting nested `try-finally` blocks.
* | | | | | | | | | Merge pull request #5507 from viktorklang/wip-SI-10034-√Jason Zaugg2016-11-101-1/+1
|\ \ \ \ \ \ \ \ \ \ | |_|_|_|_|_|/ / / / |/| | | | | | | | | SI-10034: Regression: Make Future.failed(e).failed turn into a success instead of failure
| * | | | | | | | | Regression: Make Future.failed(e).failed turn into a success instead of failureViktor Klang2016-11-081-1/+1
| |/ / / / / / / /
* | | | | | | | | Merge commit 'b9a16c4' into 2.12.xJason Zaugg2016-11-081-13/+10
|\ \ \ \ \ \ \ \ \ | |/ / / / / / / / |/| | | | | | | |
| * | | | | | | | Merge pull request #5378 from som-snytt/issue/9913Seth Tisue2016-10-261-13/+10
| |\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | SI-9913 Lead span iterator finishes at state -1
| | * | | | | | | | SI-9913 Tighten bolts on span iteratorSom Snytt2016-09-061-13/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Extra privacy, and the tricky state transition is made more tabular.
| | * | | | | | | | SI-9913 Lead span iterator finishes at state -1Som Snytt2016-09-051-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Even if no elements fail the predicate (so that the trailing iterator is empty).
| * | | | | | | | | Merge pull request #5343 from milessabin/topic/si-2712-backportAdriaan Moors2016-10-184-5/+38
| |\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | SI-2712 Add support for higher order unification
| | * | | | | | | | | SI-2712 Add support for higher order unificationMiles Sabin2016-08-154-5/+38
| | |/ / / / / / / /
* | | | | | | | | | Merge pull request #5469 from adriaanm/java-scan-tailrecAdriaan Moors2016-11-043-104/+70
|\ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | No StackOverflowError in Java doc comment scanning Fixes SI-10020 SI-10027
| * | | | | | | | | | Factor out some more into ScaladocScannerAdriaan Moors2016-10-192-30/+26
| | | | | | | | | | |
| * | | | | | | | | | DocScanner has doc-comment scanning hooks.Adriaan Moors2016-10-193-67/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Align the Scala and Java doc comment scanning methods a bit. The Scala one especially had gotten a bit messy, with regular block comments being kind of accumulated, but never actually registered as DocComments.
| * | | | | | | | | | Keep `skipBlockComment` tail recursiveAdriaan Moors2016-10-192-39/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Avoid StackOverflow on big comments. Simplify `ScaladocJavaUnitScanner` while in there. TODO: Do same for `ScaladocUnitScanner`?
* | | | | | | | | | | Revert "Temporarily insource Scalacheck 1.11.6"Adriaan Moors2016-11-0114-3613/+0
| |_|_|_|_|_|_|_|_|/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 22dac3118e97b2a4707d42ef1f47ac292a8ed385.
* | | | | | | | | | Merge pull request #5373 from TimWSpence/2.12.xSeth Tisue2016-10-311-3/+3
|\ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | SI-9909: corrected stream example so it does not give forward reference
| * | | | | | | | | | SI-9909: corrected stream example so it does not give forward referenceTim Spence2016-10-211-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | error
* | | | | | | | | | | Merge pull request #5482 from lrytz/sd248-frontendLukas Rytz2016-10-287-190/+164
|\ \ \ \ \ \ \ \ \ \ \ | |_|_|_|_|_|_|_|/ / / |/| | | | | | | | | | Frontend fixes for scala-dev#248