summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Merge commit 'fedbfd7' into merge/2.11-to-2.12-apr-21Lukas Rytz2015-04-2151-250/+1420
|\
| * Merge pull request #4427 from gourlaysama/wip/t5795-scaladoc-empty-paramsLukas Rytz2015-04-096-18/+108
| |\ | | | | | | SI-5795 empty scaladoc tags should be omitted from output
| | * SI-5795 empty scaladoc tags should be omitted from outputAntoine Gourlay2015-04-023-8/+75
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Empty scaladoc tags, like `@param`, `@return`, `@version`, etc. should be omitted from the output when they have no meaning by themselves. They are still parsed, for validation (warning that a tag doesn't exist and so on), but are removed, if empty, when building the Comment. The only ones that stay even when empty are `@deprecated`, so that the class name can be striked-through ("Deprecated" also appears in the header, even if there is no message with it), and `@throws`.
| | * fix scaladoc issue with parsing of empty tagsAntoine Gourlay2015-04-023-10/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Consider the following code: /** * @see * @deprecated */ object Foo The comment parser properly parsed the body of the 'see' tag as empty, but not the one of 'deprecated': it supposedly contains a single character, a newline '\n', which is wrong. This always happened to the last tag in the list; it is always appended a new line (whether empty or not), which breaks formatting (and things later on that test if a body is empty of not).
| | * fix Scaladoc html display when there are empty tagsAntoine Gourlay2015-04-021-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Empty scaladoc tags used to completely break the HTML layout of classes and methods. See the difference between before [1] and after [2]. [1]: http://static.gourlaysama.net/img/scaladoc_t5795_before.png [2]: http://static.gourlaysama.net/img/scaladoc_t5795_after.png
| * | Merge pull request #4411 from xeno-by/ticket/9252Lukas Rytz2015-04-093-5/+7
| |\ \ | | | | | | | | SI-9252 gets rid of custom logic for jArrayClass in runtime reflection
| | * | SI-9252 gets rid of custom logic for jArrayClass in runtime reflectionEugene Burmako2015-03-273-5/+7
| | | | | | | | | | | | | | | | | | | | Apparently, I've already fixed a very similar issue two years ago. That was a fun surprise! (https://issues.scala-lang.org/browse/SI-5680)
| * | | Merge pull request #4442 from retronym/topic/upgradeJason Zaugg2015-04-092-2/+2
| |\ \ \ | | | | | | | | | | Upgrade Ruby / Jekyll versions used to build the spec
| | * | | Upgrade Ruby / Jekyll versions used to build the specJason Zaugg2015-04-092-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I've given this a dry-run in a separate repository: https://travis-ci.org/retronym/scala-spec/builds/57744110 Right now, we are getting an error during `bundle install`: https://travis-ci.org/scala/scala/builds/57737768 I haven't verified that the output is the same, though.
| * | | | Merge pull request #4439 from esfand-r/error-message-improvementJason Zaugg2015-04-093-5/+5
| |\ \ \ \ | | | | | | | | | | | | Error message improvement
| | * | | | Error message improvementesfandiar amirrahimi2015-04-083-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | 'may be not be' -> 'may not be'
| * | | | | Merge pull request #4438 from retronym/topic/plugin-api-regressionAdriaan Moors2015-04-081-2/+4
| |\ \ \ \ \ | | |/ / / / | |/| | | | Fix regression in plugin API
| | * | | | Fix regression in plugin APIJason Zaugg2015-04-081-2/+4
| | |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Removing a call to a deprecated method had the effect of rendering plugins that override that method inoperable. This manifest as a failure to build scala-js in the community build: https://github.com/scala/community-builds/issues/95 Partially reverts d4546fd.
| * | | | Merge pull request #4434 from gknauth/2.11.xAdriaan Moors2015-04-071-1/+1
| |\ \ \ \ | | | | | | | | | | | | grammar it's -> its
| | * | | | grammar it's -> itsGeoffrey Knauth2015-04-071-1/+1
| |/ / / /
| * | | | Merge pull request #4332 from Ichoran/opt-TravOnce-2.11.xGrzegorz Kossakowski2015-04-071-2/+15
| |\ \ \ \ | | | | | | | | | | | | Performance improvement: collectFirst in TraversableOnce
| | * | | | Performance improvement: collectFirst in TraversableOnceRex Kerr2015-03-301-2/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | collectFirst was implemented in TraversableOnce by calling toIterator and then using a non-local return to pull out a Some when the partial function succeeded. This had two problems: 1. If the TraversableOnce was Iterator or Iterable, stepping through until pf is happy is much (15x!) faster. 2. If the TraversableOnce was not, creating an Iterator is a waste of time and memory This fixes both of these issues by inspecting the self-type and choosing the appropriate implementation. Further (modest) improvements likely possible in 2.12 by moving specialized implementations to child classes and using `applyOrElse` on the partial function with a package-private object instead of a locally created one.
| * | | | | Merge pull request #4413 from lrytz/opt/inliningEverythingLukas Rytz2015-04-0725-146/+319
| |\ \ \ \ \ | | | | | | | | | | | | | | Fixes and Improvements for the new inliner
| | * | | | | SI-9139 don't inline across @strictfp modesLukas Rytz2015-04-014-1/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Cannot inline if one of the methods is @strictfp, but not the other.
| | * | | | | Test case: cannot inline a private call into a different class.Lukas Rytz2015-04-011-0/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Invocations of private methods cannot be inlined into a different class, this would cause an IllegalAccessError.
| | * | | | | Don't inlinie if the resulting method becomes too large for the JVMLukas Rytz2015-04-016-3/+54
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This threshold is really the last resort and should never be reached. An inlining heuristic that blows up methods to the maximum size allowed by the JVM is broken. In the future we need to include some heuristic about code size when making an inlining decision, see github.com/scala-opt/scala/issues/2
| | * | | | | Don't force the GenASM backend when passing -optimizeLukas Rytz2015-04-017-12/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This behavior is confusing and also problematic for writing partest tests: CI passes -optimize, which negates the -Ybackend:GenBCode entry in a flags file.
| | * | | | | Apply local variable index shift when inlining iinc instructionLukas Rytz2015-04-011-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | That was an oversight. Scalac never emits iinc, but it can appear when inlining from the classpath.
| | * | | | | Clean up the way compiler settings are accessed in the backend.Lukas Rytz2015-04-0114-94/+77
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Many backend components don't have access to the compiler instance holding the settings. Before this change, individual settings required in these parts of the backend were made available as members of trait BTypes, implemented in the subclass BTypesFromSymbols (which has access to global). This change exposes a single value of type ScalaSettings in the super trait BTypes, which gives access to all compiler settings.
| | * | | | | Don't try to inline native methodsLukas Rytz2015-04-013-2/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Because you can't, really.
| | * | | | | Eliminate unreachable code before inlining a methodLukas Rytz2015-04-018-45/+96
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Running an ASM analyzer returns null frames for unreachable instructions in the analyzed method. The inliner (and other components of the optimizer) require unreachable code to be eliminated to avoid null frames. Before this change, unreachable code was eliminated before building the call graph, but not again before inlining: the inliner assumed that methods in the call graph have no unreachable code. This invariant can break when inlining a method. Example: def f = throw e def g = f; println() When building the call graph, both f and g contain no unreachable code. After inlining f, the println() call becomes unreachable. This breaks the inliner's assumption if it tries to inline a call to g. This change intruduces a cache to remember methods that have no unreachable code. This allows invoking DCE every time no dead code is required, and bail out fast. This also simplifies following the control flow in the optimizer (call DCE whenever no dead code is required).
| | * | | | | Command-line flag to control inlining heuristicsLukas Rytz2015-03-314-2/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Introduces a stress-test mode "everything" in which the inliner tries to inline every calliste that can be statically resolved.
| | * | | | | Make class Invalid a ControlThrowableLukas Rytz2015-03-311-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Invalid is used for control flow in RightBiasedEither.orThrow.
| * | | | | | Merge pull request #4432 from retronym/ticket/9264Grzegorz Kossakowski2015-04-071-1/+6
| |\ \ \ \ \ \ | | |_|_|/ / / | |/| | | | | SI-9264 An even-better diagnostic for an unexplained crash
| | * | | | | SI-9264 An even-better diagnostic for an unexplained crashJason Zaugg2015-04-071-1/+6
| |/ / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We have seen an intermittent crasher in the backend for the last month or so. In https://github.com/scala/scala/pull/4397, I added a diagnostic to show the actual locals in scope in the method. This commit further expands the diagnistic to show the method's tree.
| * | | | | Merge pull request #4370 from gbasler/ticket/SI-9181Adriaan Moors2015-04-067-67/+952
| |\ \ \ \ \ | | |_|_|_|/ | |/| | | | SI-9181 Exhaustivity checking does not scale (regression)
| | * | | | Bring back improvements from `SI-6942` that were lost during the switch toGerard Basler2015-03-021-8/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Tseitin's transformation, e.g., use `CNF(P1 /\ ... /\ PN) == CNF(P1) ++ CNF(...) ++ CNF(PN)` in order to simplify the resultung formula.
| | * | | | Add a check to ensure that if the formulas originating from the exhaustivity /Gerard Basler2015-03-027-59/+922
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | reachability analysis are too big to be solved in reasonable time, then we skip the analysis. I also cleaned up warnings. Why did `t9181.scala` work fine with 2.11.4, but is now running out of memory? In order to ensure that the scrutinee is associated only with one of the 400 derived classes we add 400*400 / 2 ~ 80k clauses to ensure mutual exclusivity. In 2.11.4 the translation into CNF used to fail, since it would blow up already at this point in memory. This has been fixed in 2.11.5, but now the DPLL solver is the bottleneck. There's a check in the search for all models (exhaustivity) that it would avoid a blow up, but in the search for a model (reachability), such a check is missing.
| * | | | | Merge pull request #4419 from adriaanm/partest-bumpJason Zaugg2015-04-021-1/+1
| |\ \ \ \ \ | | | | | | | | | | | | | | Enable #4285: switch to partest 1.0.6
| | * | | | | Bump partest to 1.0.6Adriaan Moors2015-03-311-1/+1
| | | |/ / / | | |/| | | | | | | | | | | | | | | To enable #4285
* | | | | | Merge pull request #4436 from adriaanm/rebase-4082Adriaan Moors2015-04-132-0/+73
|\ \ \ \ \ \ | | | | | | | | | | | | | | SI-8336: add `fold` & `toEither` to `util.Try`
| * | | | | | SI-8336: add `fold` & `toEither` to `util.Try`cchantep2015-04-072-0/+73
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `res.fold(fa, fb)` evaluates to `fa(e)` if `res` is a `Failure(e)`, or `fb(value)` if `res` is a `Success(value)`. (If `fb` throws an exception `e` when applied, `fa(e)`.)
* | | | | | | Merge pull request #4425 from lrytz/script-2.12.0-M0Lukas Rytz2015-04-101-0/+57
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | release script for 2.12.0-M0
| * | | | | | | release script for 2.12.0-M0Lukas Rytz2015-04-011-0/+57
| | | | | | | |
* | | | | | | | Merge pull request #4408 from kzys/one-wiki-syntaxAdriaan Moors2015-04-091-19/+0
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | Don't define the wiki syntax in multiple places
| * | | | | | | | Don't define the wiki syntax in multiple placesKato Kazuyoshi2015-03-261-19/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | DocComments#expandWiki() had been used by DocComments#toJavaDoc before, but the latter was removed by #3004. Based on GitHub (yeah, it's wild guess), we don't have any external cosumers other than that. https://github.com/search?l=scala&q=expandWiki+-filename%3ADocComments&ref=searchresults&type=Code&utf8=%E2%9C%93
* | | | | | | | | Merge pull request #4424 from lrytz/merge/2.11-to-2.12-apr-1Jason Zaugg2015-04-09283-1251/+8042
|\ \ \ \ \ \ \ \ \ | |_|_|/ / / / / / |/| | | | | | | | Merge/2.11 to 2.12 apr 1
| * | | | | | | | Merge commit '347c475' into merge/2.11-to-2.12-apr-1Lukas Rytz2015-04-010-0/+0
| |\ \ \ \ \ \ \ \ | | | |_|/ / / / / | | |/| | | | | |
| | * | | | | | | Merge pull request #4423 from lrytz/merge/2.10-to-2.11-apr-1Lukas Rytz2015-04-010-0/+0
| | |\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | Merge/2.10 to 2.11 apr 1
| | | * | | | | | | Merge branch '2.10.x' into merge/2.10-to-2.11-apr-1Lukas Rytz2015-04-010-0/+0
| | |/| | | | | | |
| | | * | | | | | | Merge pull request #4417 from retronym/backport/flakyLukas Rytz2015-03-311-2/+7
| | | |\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | [backport] SI-8689 Make a Future test case determistic
| | | | * | | | | | | [backport] SI-8689 Make a Future test case determisticJason Zaugg2015-03-311-2/+7
| | | |/ / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As discussed: https://groups.google.com/forum/#!topic/scala-internals/m8I_3GQR4vQ We need to ensure a happens-before relationship between the callback that prints "success" and the end of the main method.
| | | * | | | | | | Fix link...Adriaan Moors2015-03-041-1/+1
| | | | | | | | | |
| | | * | | | | | | 2.10.5 is it for 2.10.xAdriaan Moors2015-03-041-65/+3
| | | | | | | | | |
| | | * | | | | | | Merge pull request #4365 from adriaanm/2.10.xv2.10.5Adriaan Moors2015-02-261-137/+2
| | | |\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | Publish to sonatype staging (the default).