summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
| * | | | | | | 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 #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).
| | * | | | | | | | Publish to sonatype staging.Adriaan Moors2015-02-261-137/+2
| |/ / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | Simplified while I was at it.
| * | | | | | | | Merge pull request #4359 from adriaanm/2.10.xGrzegorz Kossakowski2015-02-261-301/+23
| |\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | Port old 2.10 release script to new CI.
| | * | | | | | | | Port old 2.10 release script to new CI.Adriaan Moors2015-02-241-301/+23
| |/ / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To fit in with the new flow, we upload to S3 instead of using the copy artifact plugin.
* | | | | | | | | Merge pull request #4422 from lrytz/t8940-2.11Lukas Rytz2015-04-011-1/+1
|\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | [nomerge] SI-8940 Scaladoc: Fix "Order by Alphabetical" button
| * | | | | | | | | [nomerge] SI-8940 Scaladoc: Fix "Order by Alphabetical" buttonKato Kazuyoshi2015-04-011-1/+1
|/ / / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | The selector has been wrong since 0c2614e.
* | | | | | | | | Merge pull request #4418 from lrytz/t8731-relaxAdriaan Moors2015-03-313-6/+4
|\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | SI-8731 don't issue a @switch warning for two-case matches
| * | | | | | | | | SI-8731 don't issue a @switch warning for two-case matchesLukas Rytz2015-03-313-6/+4
| | |_|_|_|/ / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This allows annotating small pattern matches with `@switch` without getting any warnings. There's no reason to warn, the performance of the generated bytecode is good.
* | | | | | | | | Merge pull request #4399 from lambdista/scaladoc-typo-1Lukas Rytz2015-03-311-2/+2
|\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | ScalaDoc typo
| * | | | | | | | | fix typo in scaladocAlessandro Lacava2015-03-241-2/+2
| | |_|_|_|_|_|/ / | |/| | | | | | |
* | | | | | | | | Merge pull request #4375 from som-snytt/issue/8861Lukas Rytz2015-03-313-3/+14
|\ \ \ \ \ \ \ \ \ | |_|_|_|/ / / / / |/| | | | | | | | SI-8861 Handle alias when probing for Any
| * | | | | | | | SI-8861 Handle alias when probing for AnySom Snytt2015-03-093-3/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If args to a method are alias types, dealias to see if they contain Any before warning about inferring it. Similarly for return and expected types.