summaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Fix typo in the docs for the ++ method of StreamMarkus Hauck2016-03-311-1/+1
|
* Merge pull request #5066 from acjay/cleanup_scaladoc_hoverAdriaan Moors2016-03-301-3/+3
|\ | | | | minor style updates for Scaladoc formatting
| * minor style updates for Scaladoc formattingAlan Johnson2016-03-281-3/+3
| | | | | | | | | | - lighten hover highlight color for higher text/background contrast - adjust border-left for div.members to prevent content shifts on-hover
* | 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 #5062 from felixmulder/topic/scaladoc-search-historySeth Tisue2016-03-301-0/+24
|\ \ \ | | | | | | | | Add back to search for Scaladoc
| * | | Add search history for ScaladocFelix Mulder2016-03-301-0/+24
| | | |
* | | | Add type and class/trait member search, fixes SI-9721 and SI-9722Felix Mulder2016-03-302-14/+29
|/ / /
* | | Merge pull request #5058 from lrytz/newTraitsInlinerLukas Rytz2016-03-302-3/+9
|\ \ \ | | | | | | | | Inline super calls, as they are statically resolved
| * | | Inline super calls, as they are statically resolvedLukas Rytz2016-03-232-3/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Ensures that mixin methods of `@inline` annotated concrete trait methods inline the trait method. Fixes https://github.com/scala/scala-dev/issues/86
* | | | Merge pull request #5060 from scala/DarkDimius-patch-1Lukas Rytz2016-03-291-2/+2
|\ \ \ \ | | | | | | | | | | Fix a bug in multi-dimensional array creation
| * | | | Fix a bug in multi-dimensional array creationDmitry Petrashko2016-03-231-2/+2
| |/ / / | | | | | | | | | | | | | | | | `']' * 5` is not `]]]]]` but `245`. I guess this code is never executed, because it would never work.
* | | | 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`.
* | | | scaladoc fix permalinksDavid Hoepelman2016-03-251-25/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * Member description auto-expands * If member comes from implicits is now becomes visible * Member is no longer hidden by search bar after scrolling * Permalink button now works when member is in a group (scrolling is still broken)
* | | | Fixed Typo in scaladoc scheduler.jsPim Verkerk2016-03-251-1/+1
| | | |
* | | | Merge pull request #5055 from lrytz/merge-2.11-to-2.12-mar-21Adriaan Moors2016-03-2323-228/+364
|\ \ \ \ | | | | | | | | | | Merge 2.11 to 2.12
| * | | | Updates to IntelliJ files for 2.12.xLukas Rytz2016-03-212-32/+41
| | | | |
| * | | | Merge commit '5f5cc18' into merge-2.11-to-2.12-mar-21Lukas Rytz2016-03-2123-228/+355
| |\ \ \ \
| | * | | | Update IntelliJ build for use with sbtLukas Rytz2016-03-2123-234/+336
| | | | | |
* | | | | | 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 #5053 from som-snytt/issue/9314Lukas Rytz2016-03-231-7/+13
|\ \ \ \ \ \ | |_|_|_|/ / |/| | | | | SI-9314 Marginal edge case to warn-missing-interp
| * | | | | SI-9314 No warn on ${nonid}Som Snytt2016-03-231-7/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use the sym test on an expr that happens to be a subset of idents and is not in scope. Other `${ operator_* }` warn.
| * | | | | SI-9314 Ignore "${}"Som Snytt2016-03-201-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As an Easter egg, let "${} $x" forego the check on `x`. In other words, empty expression interpolation looks too degenerate to check.
| * | | | | SI-9314 Don't warn on "$pkg"Som Snytt2016-03-201-1/+1
| |/ / / / | | | | | | | | | | | | | | | | | | | | Edge cases of things not to warn about include package names.
* | | | | Merge pull request #5057 from lrytz/flatClasspathLukas Rytz2016-03-2316-202/+361
|\ \ \ \ \ | | | | | | | | | | | | Enable -YclasspathImpl:flat by default
| * | | | | Support :require when using the flat classpath representation.Lukas Rytz2016-03-227-82/+198
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | :require was re-incarnated in https://github.com/scala/scala/pull/4051, it seems to be used by the spark repl. This commit makes it work when using the flat classpath representation.
| * | | | | Enable flat classpath by defaultLukas Rytz2016-03-2210-120/+163
| | |/ / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | Implements VirtualDirectoryFlatClassPath, which is required for the presentation compiler created for the repl's tab-completion. Various minor cleanups in the flat classpath implementation.
* | | | | Merge pull request #5047 from kmizu/resolve-several-warningsAdriaan Moors2016-03-226-12/+12
|\ \ \ \ \ | | | | | | | | | | | | Resolve several deprecation warnings
| * | | | | Resolve warnings related to SyncVar#setKota Mizushima2016-03-183-9/+9
| | | | | | | | | | | | | | | | | | | | | | | | Replace it with SyncVar#put
| * | | | | * Replace isPackage with hasPackageFlagKota Mizushima2016-03-172-2/+2
| | | | | |
| * | | | | Fix one warning in Util.scalaKota Mizushima2016-03-171-1/+1
| | |/ / / | |/| | | | | | | | | | | | | Explicitly annotate return type of trace macro to avoid type inference
* | | | | 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-2123-28/+28
|\ \ \ \ | | | | | | | | | | Fix some typos in `spec` documents and comments.
| * | | | Fix some typos in `spec` documents and comments.Dongjoon Hyun2016-03-1523-28/+28
| |/ / /
* | | | Remove manual mixins in JFunctionN.v2.12.0-M3-dc9effeJason Zaugg2016-03-1824-264/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | These manual mixins were forwarding to the impl classes have just been removed. We can now rely on default methods instead. Update Tests: - Fix test/files/pos/t1237.scala, we can't have an outer field in an interface, always use the outer method. - Don't crash on meaningless trait early init fields test/files/neg/t2796.scala - Remove impl class relate parts of inner class test - Remove impl class relate parts of elidable test - Remove impl class related reflection test. - Remove test solely about trait impl classes renaming - Update check file with additional stub symbol error - Disable unstable parts of serialization test. - TODO explain, and reset the expectation
* | | | New trait encoding: use default methods, jettison impl classesJason Zaugg2016-03-1831-816/+188
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Until now, concrete methods in traits were encoded with "trait implementation classes". - Such a trait would compile to two class files - the trait interface, a Java interface, and - the implementation class, containing "trait implementation methods" - trait implementation methods are static methods has an explicit self parameter. - some methods don't require addition of an interface method, such as private methods. Calls to these directly call the implementation method - classes that mixin a trait install "trait forwarders", which implement the abstract method in the interface by forwarding to the trait implementation method. The new encoding: - no longer emits trait implementation classes or trait implementation methods. - instead, concrete methods are simply retained in the interface, as JVM 8 default interface methods (the JVM spec changes in [JSR-335](http://download.oracle.com/otndocs/jcp/lambda-0_9_3-fr-eval-spec/index.html) pave the way) - use `invokespecial` to call private or particular super implementations of a method (rather `invokestatic`) - in cases when we `invokespecial` to a method in an indirect ancestor, we add that ancestor redundantly as a direct parent. We are investigating alternatives approaches here. - we still emit trait fowrarders, although we are [investigating](https://github.com/scala/scala-dev/issues/98) ways to only do this when the JVM would be unable to resolve the correct method using its rules for default method resolution. Here's an example: ``` trait T { println("T") def m1 = m2 private def m2 = "m2" } trait U extends T { println("T") override def m1 = super[T].m1 } class C extends U { println("C") def test = m1 } ``` The old and new encodings are displayed and diffed here: https://gist.github.com/retronym/f174d23f859f0e053580 Some notes in the implementation: - No need to filter members from class decls at all in AddInterfaces (although we do have to trigger side effecting info transformers) - We can now emit an EnclosingMethod attribute for classes nested in private trait methods - Created a factory method for an AST shape that is used in a number of places to symbolically bind to a particular super method without needed to specify the qualifier of the `Super` tree (which is too limiting, as it only allows you to refer to direct parents.) - I also found a similar tree shape created in Delambdafy, that is better expressed with an existing tree creation factory method, mkSuperInit.
* | | Merge pull request #5037 from janekdb/topic/2.12.x-scaladoc-fix-Source-linksAdriaan Moors2016-03-141-10/+8
|\ \ \ | | | | | | | | Fix Scaladoc links in scala.io.Source
| * | | Fix Scaladoc links in scala.io.SourceJanek Bogucki2016-03-131-10/+8
| | |/ | |/| | | | | | | | | | The link to iter will work if the restriction to showing only public members is lifted in the visibility section.
* | | Merge pull request #4974 from szeiger/wip/patmat-outertestAdriaan Moors2016-03-145-64/+55
|\ \ \ | | | | | | | | More conservative optimization for unnecessary outer ref checks
| * | | Improved outer ref checking in pattern matches:Adriaan Moors2016-03-075-64/+55
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The old algorithm omitted necessary outer ref checks in some places. This new one is more conservative. It only omits outer ref checks when the expected type and the scrutinee type match up, or when the expected type is defined in a static location. For this specific purpose the top level of a method or other code block (which is not a trait or class definition) is also considered static because it does not have a prefix. This change comes with a spec update to clarify the prefix rule for type patterns. The new wording makes it clear that the presence of a prefix is to be interpreted in a *semantic* way, i.e. the existence of a prefix determines the necessity for an outer ref check, no matter if the prefix is actually spelled out *syntactically*. Note that the old outer ref check implementation did not use the alternative interpretation of requiring prefixes to be given syntactically. It never created an outer ref check for a local class `C`, no matter if the pattern was `_: C` or `_: this.C`, thus violating both interpretations of the spec. There is now explicit support for unchecked matches (like `case _: (T @unchecked) =>`) to suppress warnings for unchecked outer refs. `@unchecked` worked before and was used for this purpose in `neg/t7721` but never actually existed as a feature. It was a result of a bug that prevented an outer ref check from being generated in the first place if *any* annotation was used on an expected type in a type pattern. This new version will still generate the outer ref check if an outer ref is available but suppress the warning otherwise. Other annotations on type patterns are ignored. New tests are in `neg/outer-ref-checks`. The expected results of tests `neg/t7171` and `neg/t7171b` have changed because the compiler now tries to generate additional outer ref checks that were not present before (which was a bug).
* | | | Merge pull request #5040 from adriaanm/rebase-5031Jason Zaugg2016-03-156-112/+122
|\ \ \ \ | | | | | | | | | | Merge 2.11.x into 2.12.x [ci: last-only]
| * \ \ \ Merge 2.11.x into 2.12.xAdriaan Moors2016-03-145-66/+76
| |\ \ \ \ | | | |_|/ | | |/| | | | | | | Resolved conflicts as in b0e05b67c7
| | * | | Merge pull request #5005 from janekdb/2.11.x-man-page-scalacv2.11.8Seth Tisue2016-03-041-25/+26
| | |\ \ \ | | | | | | | | | | | | Document -Xxml:coalescing in scalac man page
| | | * | | Document -Xxml:coalescing in scalac man pageJanek Bogucki2016-03-031-25/+26
| | | | | | | | | | | | | | | | | | | | | | | | The formatting style is based on -g and -target.
| | * | | | Merge pull request #4994 from dk14/patch-1Seth Tisue2016-03-041-1/+1
| | |\ \ \ \ | | | | | | | | | | | | | | explicitly specify insertion-order feature in docs