summaryrefslogtreecommitdiff
path: root/src/library
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #5132 from acdenhartog/patch-1Jason Zaugg2016-05-051-3/+1
|\ | | | | Avoid function chaining with reverse method
| * Avoid function chaining with reverse methodArno den Hartog2016-04-271-3/+1
| |
* | Add examples to Exception object and group members (#5111)Janek Bogucki2016-05-021-25/+165
|/ | | | | | - Extend main comment with additional examples - Group methods from a user perspective - List exceptions special cased by shouldRethrow - Include overlooked withTry in opt, either notes.
* Rename the (deprecated) implicit conversion methods in JavaConversionsLukas Rytz2016-04-222-2/+38
| | | | | | Provide higher-priority implicit conversion methods whose names don't clash with methods in JavaConverters. This allows implicit conversions to work when importing both JavaConverters._ and JavaConversions._.
* Cleaned up Scaladoc for JavaConverters and non-deprecated friendsLukas Rytz2016-04-227-872/+261
|
* SI-9684 Deprecate JavaConversionsSom Snytt2016-04-2215-58/+984
| | | | | | | | | Implicit conversions are now in package convert as ImplicitConversions, ImplicitConversionsToScala and ImplicitConversionsToJava. Deprecated WrapAsJava, WrapAsScala and the values in package object. Improve documentation.
* Merge pull request #5110 from sjrd/remove-duplicate-implem-of-hashcodesLukas Rytz2016-04-224-79/+45
|\ | | | | Remove the duplicate implem of hash codes for numbers.
| * Remove the duplicate implem of hash codes for numbers.Sébastien Doeraene2016-04-214-66/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, there were two separate implementations of hash code for boxed number classes: * One in Statics, used by the codegen of case class methods. * One in ScalaRunTime + BoxesRunTime, used by everything else. This commit removes the variant implemented in ScalaRunTime + BoxesRunTime, and always uses Statics instead. We use Statics because the one from ScalaRunTime causes an unnecessary module load. The entry point ScalaRunTime.hash() is kept, as deprecated, for bootstrapping reasons.
| * Bring Statics.doubleHash in sync with BoxesRunTime.hashFromDouble.Sébastien Doeraene2016-04-211-13/+13
| | | | | | | | | | | | | | | | | | | | The two algorithms were different, and could result in different hash codes for some values, namely, valid long values that were not also valid int values. The other two functions `longHash` and `floatHash` are rewritten to keep a common style with `doubleHash`, but their algorithm does not change.
* | scala-dev-113: Sync root package words to layout (#5107)Janek Bogucki2016-04-201-1/+1
| | | | | | The package list is on the right.
* | Merge pull request #5100 from lrytz/unitBoxLukas Rytz2016-04-201-2/+2
|\ \ | |/ |/| SI-6710 / PR 5072 follow-up: fix Unit.box / Unit.unbox
| * SI-6710 / PR 5072 follow-up: fix Unit.box / Unit.unboxLukas Rytz2016-04-201-2/+2
| | | | | | | | | | | | | | The backend replaces .box / .unbox methods by corresponding invocations to BoxesRunTime, but not for Unit. This commit restores the body of `Unit.box` and `Unit.unbox`.
* | Remove the unused scala.runtime.Boxed trait.Sébastien Doeraene2016-04-131-12/+0
| |
* | Remove plain old dead code in ScalaRunTime.Sébastien Doeraene2016-04-131-26/+0
| |
* | Move ScalaRunTime.box to typechecker.Macros.Sébastien Doeraene2016-04-131-13/+0
| | | | | | | | Because it was its only call site.
* | Inline ScalaRunTime.arrayElementClass at call sites.Sébastien Doeraene2016-04-135-23/+10
| | | | | | | | | | | | | | | | | | | | This method was awful. Not only it was using run-time type tests to essentially encode compile-time overloading. But it also did 2 slightly different things for the Class case and ClassTag case. All in all, it is much more readable to inline the appropriate implementation at every call site.
* | Move ScalaRunTime.isAnyVal to reify.phases.Reify.Sébastien Doeraene2016-04-131-5/+0
| | | | | | | | Because that is the only call site of that method.
* | Hide ScalaRunTime.isTuple inside stringOf.Sébastien Doeraene2016-04-131-2/+3
| | | | | | | | Because it is otherwise unused.
* | Remove dead-code runtime hash() methods.Sébastien Doeraene2016-04-132-44/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | ScalaRunTime had a bunch of overloads of the `hash()` method, but only the `Any` version is ever used by the codegen. Worse, their implementation was not in sync with the actual implementations in BoxesRunTime, called by the `Any` version. For example, hash(0x80000000L) != hash(0x80000000L: Any) This commit simply removes all of this dead code. Similarly, we remove BoxesRunTime.hashFromObject(), which was never called either.
* | Inline ArrayRuntime methods in ScalaRunTime.array_clone().Sébastien Doeraene2016-04-132-35/+9
|/ | | | | | | | | | | | | | Support for Array[T].clone() was introduced in 36ef60e68c03bc1c7fd2e910ae7d70d4ec32d3bf. At the time, all calls to array.clone() were redirected to ScalaRunTime.array_clone(), which meant that array_clone() itself could not be implemented in terms of `x.clone()`. A Java binding was necessary. Now, the rewriting to `array_clone()` is only done for unbounded generic arrays. Since all the calls within `array_clone()` are monomorphic arrays, the rewriting is not applied, and the Java binding is unnecessary.
* Delete unnecessary blank linesh0hei2016-04-071-2/+0
|
* Generate AnyVal source stubs from sbtStefan Zeiger2016-04-069-18/+18
| | | | | | | | | | | | The sbt command `generateSources` now generates both the AnyVal sources and the tuple/function sources (previously done by `genprod`). Source generation is part of the sbt build, the `scala.tools.cmd.gen` package is removed from `scala-compiler`. This simplifies bootstrapping. Generated sources are still in the same location and checked into git. The shell scripts `tools/codegen` and `tools/codegen-anyvals` are also removed. The ant build and the build scripts do not call these. Regenerating sources is a manual step at the moment.
* General cleanups and less warnings during a Scala buildsoc2016-04-048-27/+7
|
* SI-6710 Clarify stub methods in primitive value classesLukas Rytz2016-04-019-27/+36
| | | | | | | | | - Replaces the implementations of box/unbox in AnyVal companions by `???`, the methods are only stubs, and the impls did not correspond to the actual behavior. The doc comment already points to the actual implementation in BoxesRunTime. - Replaces the body of `getClass` from `null` to `???` and clarifies in a comment why the overrides exist.
* Merge pull request #5068 from retronym/topic/jdk8ism2v2.12.0-M4Lukas Rytz2016-04-018-51/+20
|\ | | | | Accomodate and exploit new library, lang features JDK 8
| * Use System.lineSeparator, rather than sys.propsJason Zaugg2016-03-293-4/+3
| |
| * Use Java's highestOneBit, rather than our own versions.Jason Zaugg2016-03-291-21/+2
| | | | | | | | | | | | | | | | | | | | | | The original code came from 2008, (a4ace382), at which point we probably couldn't use JDK 1.5+ methods. I haven't changed `unsignedCompare` yet to use the standard library version, as it our version might have different performance characteristics. Background: http://www.drmaciver.com/2008/08/unsigned-comparison-in-javascala/
| * Note the availability of writableStackTrace in JDK 1.7+Jason Zaugg2016-03-291-0/+2
| |
| * SI-7474 Record extra errors in Throwable#suppressedExceptionsJason Zaugg2016-03-291-7/+4
| | | | | | | | | | | | | | ... in parallel collection operations. Followup to bcbe38d18, which did away with the the approach to use a composite exception when more than one error happened.
| * Delegate more primitive comparison to the Java stdlibJason Zaugg2016-03-291-16/+6
| | | | | | | | The API for doing so efficiently was made regular in Java 1.8.
| * Avoid intermediate boxing in BoxesRuntime.hashCodeFromJason Zaugg2016-03-291-3/+3
| | | | | | | | | | By using newly introduced static methods in the Java standard library.
* | Merge pull request #5070 from markus1189/stream-docsLukas Rytz2016-04-011-1/+1
|\ \ | | | | | | Fix typo in the docs for the ++ method of Stream
| * | Fix typo in the docs for the ++ method of StreamMarkus Hauck2016-03-311-1/+1
| | |
* | | Merge pull request #5071 from janekdb/topic/2.12.x-scaladoc-ExceptionsLukas Rytz2016-04-011-7/+13
|\ \ \ | | | | | | | | Add initial unit test for Catch and augment documentation
| * | | Add initial unit test for Catch and augment documentationJanek Bogucki2016-03-311-7/+13
| |/ / | | | | | | | | | | | | | | | - Add unit test for andFinally - Reduce code duplication in andFinally - Extend documentation
* | | Merge pull request #4971 from adriaanm/genbcode-delambdafyAdriaan Moors2016-03-311-1/+5
|\ \ \ | |/ / |/| | Unify treatment of built-in functions and SAMs
| * | Target FunctionN, not scala/runtime/java8/JFunction.Adriaan Moors2016-03-281-1/+5
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We compile FunctionN to Java 8's idea of a function now, so no need to target the artisanal JFunction and friends, except when the function is specialized, as I don't yet see how we can use LMF with the way specialization handles FunctionN: First, the working status quo -- the hand-crafted specialized versions of JFunction0. Notice how `apply$mcB$sp` is looking pretty SAMmy: ``` @FunctionalInterface public interface JFunction0$mcB$sp extends JFunction0 { @Override public byte apply$mcB$sp(); @Override default public Object apply() { return BoxesRunTime.boxToByte(this.apply$mcB$sp()); } } ``` Contrast this with our specialized standard FunctionN: ``` public interface Function0<R> { public R apply(); default public byte apply$mcB$sp() { return BoxesRunTime.unboxToByte(this.apply()); } } public interface Function0$mcB$sp extends Function0<Object> { } ``` The single abstract method in `Function0$mcB$sp` is `apply`, and the method that would let us avoid boxing, if it were abstract, is `apply$mcB$sp`... TODO (after M4): - do same for specialized functions (issues with boxing?) - remove scala/runtime/java8/JFunction* (need new STARR?)
* | Merge pull request #5033 from szeiger/issue/9623-2.12Adriaan Moors2016-03-301-44/+46
|\ \ | | | | | | Replace JoinIterator & improve ConcatIterator
| * | Replace JoinIterator & improve ConcatIteratorStefan Zeiger2016-03-111-44/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The new `ConcatIterator` requires only one extra lightweight wrapper object (cons cell) to be allocated compared to `JoinIterator`. All additional concatenations are then done in place with one cons cell per appended iterator. Running 1000000 iterations of the following benchmark for LHS recursion: ``` def lhs(n: Int) = (1 to n).foldLeft(Iterator.empty: Iterator[Int])((res, _) => res ++ Iterator(1)).sum ``` On 2.12.x before SI-9623 fix: ``` $ ../scala/build-sbt/quick/bin/scala -J-Xmx1024M -nc concatit.scala 1000000: 555ms 1000000: 344ms 1000000: 397ms 1000000: 309ms 1000000: 290ms 1000000: 283ms 1000000: 282ms 1000000: 281ms 1000000: 290ms 1000000: 279ms ``` With SI-9623 fix: ``` $ ../scala/build-sbt/quick/bin/scala -J-Xmx1024M -nc concatit.scala 1000000: 610ms 1000000: 324ms 1000000: 387ms 1000000: 315ms 1000000: 296ms 1000000: 300ms 1000000: 341ms 1000000: 294ms 1000000: 291ms 1000000: 281ms ``` With this version: ``` $ ../scala/build-sbt/quick/bin/scala -J-Xmx1024M -nc concatit.scala 1000000: 362ms 1000000: 162ms 1000000: 140ms 1000000: 150ms 1000000: 110ms 1000000: 57ms 1000000: 79ms 1000000: 109ms 1000000: 120ms 1000000: 49ms ``` And for RHS recursion: ``` def rhs(n: Int) = (1 to n).foldLeft(Iterator.empty: Iterator[Int])((res, _) => Iterator(1) ++ res).sum ``` On 2.12.x before SI-9623 fix: ``` StackOverflowError ``` With SI-9623 fix: ``` StackOverflowError ``` With this version: ``` $ ../scala/build-sbt/quick/bin/scala -J-Xmx1024M -nc concatit.scala 1000000: 3156ms 1000000: 1536ms 1000000: 1240ms 1000000: 1575ms 1000000: 439ms 1000000: 706ms 1000000: 1043ms 1000000: 1211ms 1000000: 515ms 1000000: 314ms ```
* | | Merge pull request #5008 from janekdb/2.12.x-remove-Predef-errorSeth Tisue2016-03-291-7/+1
|\ \ \ | | | | | | | | Remove deprecated Predef.error
| * | | Remove deprecated Predef.errorJanek Bogucki2016-03-261-7/+1
| | |/ | |/| | | | | | | | | | | | | error was deprecated in 2.9.0 but remained to ensure compatibility with sbt. This changes follows on from an update to the latest sbt version (0.13.11).
* | | Merge pull request #5021 from szeiger/wip/remove-deprecationsSeth Tisue2016-03-2917-248/+204
|\ \ \ | |/ / |/| | Seal collection classes that were annotated with deprecatedInheritance in 2.11.0
| * | Make some collection classes final or sealedStefan Zeiger2016-03-2317-248/+204
| | | | | | | | | | | | | | | | | | | | | They were all annotated with `@deprecatedInheritance` in 2.11.0. Some deprecated classes are moved to new source files in order to seal the parent class. The package-private class `DoublingUnrolledBuffer` is moved from `scala.collection.parallel.mutable` to `scala.collection.mutable` in order to seal `UnrolledBuffer`.
* | | Merge pull request #5051 from kmizu/improve-api-docsAdriaan Moors2016-03-231-0/+1
|\ \ \ | | | | | | | | Improve documentation of `GenSeqLike#length`
| * | | Add scaladoc comment about the case when Exception will be thrown by ↵Kota Mizushima2016-03-241-0/+1
| |/ / | | | | | | | | | invocation of length method
* | | Merge pull request #5047 from kmizu/resolve-several-warningsAdriaan Moors2016-03-223-9/+9
|\ \ \ | | | | | | | | Resolve several deprecation warnings
| * | | Resolve warnings related to SyncVar#setKota Mizushima2016-03-183-9/+9
| |/ / | | | | | | | | | Replace it with SyncVar#put
* | | Merge pull request #5034 from janekdb/topic/2.12.x-scaladoc-Predef-method-groupsSeth Tisue2016-03-211-0/+106
|\ \ \ | | | | | | | | Organise Predef methods into Scaladoc groups
| * | | Organise Predef members into Scaladoc groupsJanek Bogucki2016-03-161-0/+106
| |/ / | | | | | | | | | | | | By grouping members and providing descriptions the signal to noise ratio in Predef is usefully enhanced.
* | | Merge pull request #5043 from dongjoon-hyun/fix_typos_in_spec_and_commentsJason Zaugg2016-03-211-1/+1
|\ \ \ | | | | | | | | Fix some typos in `spec` documents and comments.