summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
* | | | | | | | Merge pull request #4384 from sschaef/issue9226-npe-in-gen-asmGrzegorz Kossakowski2015-03-161-1/+1
|\ \ \ \ \ \ \ \ | |/ / / / / / / |/| | | | | | | SI-9226 Fix NPE in GenASM.writeIfNotTooBig
| * | | | | | | SI-9226 Fix NPE in GenASM.writeIfNotTooBigSimon Schäfer2015-03-161-1/+1
|/ / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On 2.11.6 line 535 (as reported in the issue) points to the changed line. Exception.getMessage can return null. Checking for null on the matched variable is not necessary. No tests, because I have no idea on how to reproduce the problem.
* | | / / / / Merge pull request #4377 from lrytz/opt/scalaInlineInfoGrzegorz Kossakowski2015-03-1110-31/+396
|\| | | | | | | |_|/ / / / |/| | | | | Emit the ScalaInlineInfo attribute under GenASM
| * | | | | Emit the ScalaInlineInfo attribute under GenASMLukas Rytz2015-03-1110-31/+396
| | |_|/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The goal of this commit is to allow the new inliner (in GenBCode, coming soon) to inline methods generated by the GenASM backend of 2.11.6. The ScalaInlineInfo attribute is added to every classfile generated by GenASM. It contains metadata about the class and its methods that will be used by the new inliner. Storing this metadata to the classfile prevents the need to look up a class symbol for a certain class file name, a process that is known to be brittle due to name mangling. Also, some symbols are not exactly the same when originating in a class being compiled or an unpickled one. For example, method symbols for mixed-in members are only added to classes being compiled. The classfile attribute is relatively small, because all strings it references (class internal names, method names, method descriptors) would exist anyway in the constant pool. It just adds a few references and bits for each method in the classfile. Jar sizes before: 480142 scala-actors.jar 15531408 scala-compiler.jar 5543249 scala-library.jar 4663078 scala-reflect.jar 785953 scalap.jar After: 490491 scala-actors.jar (102.1%) 15865500 scala-compiler.jar (102.1%) 5722504 scala-library.jar (103.2%) 4788370 scala-reflect.jar (102.7%) 805890 scalap.jar (102.5%)
* | | | | Quote `_` properly in lexical syntax.Adriaan Moors2015-03-051-1/+1
| |_|/ / |/| | | | | | | Avoid spurious italics...
* | | | Fix links to EPFL CI and nightly downloads.Adriaan Moors2015-02-261-2/+2
| | | | | | | | | | | | Reported by hu zhifeng -- thanks!
* | | | Merge pull request #4357 from retronym/merge/2.10.x-to-2.11.x-20150224v2.11.6Adriaan Moors2015-02-244-12/+82
|\ \ \ \ | |_|_|/ |/| | | Merge 2.10.x to 2.11.x
| * | | Merge commit 'b2f5101' into merge/2.10.x-to-2.11.x-20150224Jason Zaugg2015-02-240-0/+0
| |\ \ \
| | * \ \ Merge pull request #4307 from som-snytt/issue/4339-2.10-bGrzegorz Kossakowski2015-02-238-42/+80
| | |\ \ \ | | | | | | | | | | | | SI-4339 Backpatch event errors and attr fix
| | | * | | [backport] SI-9060 Backpatch fifth-edition namesSom Snytt2015-02-153-39/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Because the compiler and library share some code in this version, compiler must exclude xml tags that look like Scala operators, such as `<:`. This is an upstream port of: scala-xml/commit/968f7bd94e934c781c19e25847ab09ac98cfbaf6
| | | * | | [backport] SI-4339 Event errors and attribute fixSom Snytt2015-02-135-3/+55
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Improve attribute parsing and propagate errors across event thread. Otherwise tests just hang. This is tested, right? This is an upstream port of scala-xml 5f2cfadeb9e8574ed66f37dc7a7a868eb129a8a9
| | * | | | Merge pull request #4351 from adriaanm/scaladoc-2.10Adriaan Moors2015-02-201-1/+1
| | |\ \ \ \ | | | | | | | | | | | | | | Scaladoc js location synch more robust
| | | * | | | Scaladoc js location synch more robustAdriaan Moors2015-02-201-1/+1
| | |/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Tested on: - Mac: FF35/Safari 8/Chrome 41 - Win: IE11
| * | | | | Merge commit 'ad845ff' into merge/2.10.x-to-2.11.x-20150224Jason Zaugg2015-02-244-12/+82
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/library/scala/concurrent/Promise.scala test/files/jvm/future-spec/PromiseTests.scala
| | * | | | Merge pull request #4289 from retronym/ticket/8689Grzegorz Kossakowski2015-02-154-14/+84
| | |\ \ \ \ | | | | | | | | | | | | | | SI-8689 Avoid internal error in Promise after sequence of completions
| | | * | | | SI-8689 Avoid internal error in Promise after sequence of completionsViktor Klang2015-02-044-14/+84
| | | |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Calling `completeWith` when the `DefaultPromise` is already completed, leads to callbacks not being properly executed. This happened because `Future.InternalCallbackExecutor` extends `BatchingExecutor`[1] which assumes `unbatchedExecute` to be async, when in this case it is sync, and if there is an exception thrown by executing the batch, it creates a new batch with the remaining items from the current batch and submits that to `unbatchedExecute` and then rethrows, but if you have a sync `unbatchedExecute`, it will fail since it is not reentrant, as witnessed by the failed `require` as reported in this issue. This commit avoids problem by delegating `completeWith` to `tryComplete`, which has the effect of using `onComplete` + `tryComplete` i.s.o. `complete`, which means that when it fails (because of a benign race condition between completers) it won't throw an exception. It has been tested by the minimized reproducer. [1] Actually, in the 2.10.x branch where this patch is starting out, "The BatchingExecutor trait had to be inlined into InternalCallbackExecutor for binary compatibility.". This comment will be more literally correct in the context of 2.11.x and beyond
| * | | | | Merge commit 'fbbd1b2' into merge/2.10.x-to-2.11.x-20150224Jason Zaugg2015-02-240-0/+0
| |\| | | |
| | * | | | Merge pull request #4303 from milessabin/topic/backport-7753Grzegorz Kossakowski2015-02-155-37/+123
| | |\ \ \ \ | | | |/ / / | | |/| | | Backported fix for SI-7753 to 2.10.x.
| | | * | | Backported fix for SI-7753 to 2.10.x.Miles Sabin2015-02-095-37/+123
| | |/ / /
| | * | | Merge pull request #4290 from adriaanm/2.10.xJason Zaugg2015-02-047-0/+856
| | |\ \ \ | | | | | | | | | | | | New CI validation scripts
| | | * | | New CI validation scriptsAdriaan Moors2015-02-037-0/+856
| | |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently not validating the IDE, pending fix for https://github.com/scala-ide/uber-build/issues/48. The new infrastructure is documented over at: - https://github.com/scala/scabot - https://github.com/scala/scala-jenkins-infra - [jenkins jobs definitions](https://github.com/scala/scala-jenkins-infra/tree/master/templates/default/jobs/validate)
| | * | | Merge pull request #4186 from som-snytt/issue/9027-backportGrzegorz Kossakowski2014-12-083-6/+16
| | |\ \ \ | | | | | | | | | | | | SI-9027 Backport xml parser fix
| | | * | | SI-9027 Backport xml parser fixSom Snytt2014-12-043-6/+16
| | |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | Fingers crossed, I have no local java 6 here to test. No test because no q"" on 2.10.
* | | | | Merge pull request #4353 from xeno-by/topic/plugin-enter-statsAdriaan Moors2015-02-233-1/+81
|\ \ \ \ \ | | | | | | | | | | | | fixes pluginsEnterStats
| * | | | | fixes pluginsEnterStatsEugene Burmako2015-02-223-1/+81
| | |_|/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Initial implementation of pluginsEnterStats was incorrect, because I got the foldLeft wrong, making it perpetuate the initial value of stats. This worked fine if zero or one macro plugins were active at a time, but broke down if there were multiple of such plugins (concretely, I discovered this issue when trying to marry macro paradise with scalahost).
* | | | | Merge pull request #4354 from Ichoran/issue/9172Adriaan Moors2015-02-231-1/+1
|\ \ \ \ \ | |/ / / / |/| | | | SI-9172 FlatMapped views throw exception on filter
| * | | | SI-9172 FlatMapped views throw exception on filterRex Kerr2015-02-221-1/+1
|/ / / / | | | | | | | | | | | | | | | | | | | | Errant `self.length` changed to `length`. No tests; found and tested by collections-laws.
* | | | Merge pull request #4350 from adriaanm/scaladocAdriaan Moors2015-02-201-1/+1
|\ \ \ \ | | | | | | | | | | Scaladoc js location synch more robust
| * | | | Scaladoc js location synch more robustAdriaan Moors2015-02-201-1/+1
|/ / / / | | | | | | | | | | | | | | | | | | | | Tested on: - Mac: FF35/Safari 8/Chrome 41 - Win: IE11
* | | | Merge pull request #4344 from Ichoran/issue/9126Adriaan Moors2015-02-204-22/+46
|\ \ \ \ | |_|_|/ |/| | | SI-9126 Missing .seqs causes problems with parallel GenXs
| * | | SI-9126 Missing .seqs causes problems with parallel GenXsRex Kerr2015-02-204-22/+46
|/ / / | | | | | | | | | | | | | | | | | | | | | Added `.seq` in two essential places so that a parallel collection passed as an argument won't mess up side-effecting sequential computations in `List.flatMap` and `GenericTraversableTemplate.transpose` (thanks to retronym for finding the danger spots). Tests that `.seq` is called by constructing a `GenSeq` whose `.seq` disagrees with anything non-`.seq` (idea & working implementation from retronym). Also updates the `.seq` test for `Vector#++` to use the new more efficient method.
* | | Merge pull request #4347 from retronym/ticket/8801Adriaan Moors2015-02-191-0/+21
|\ \ \ | |/ / |/| | SI-8801 Another test for fixed exponential-time compilation
| * | SI-8801 Another test for fixed exponential-time compilationJason Zaugg2015-02-201-0/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Turns out that SI-9157 was a duplicate of SI-8801. This commit adds Paul's test, whose compile time is now back in the troposphere. % time qscalac test/files/pos/t8801.scala real 0m1.294s user 0m3.978s sys 0m0.240s
* | | Merge pull request #4340 from retronym/topic/infix-completionAdriaan Moors2015-02-1911-6/+425
|\ \ \ | | | | | | | | SI-9153 More complete and stable results for completions
| * | | Remove incorrect completions: implicits can't add type membersJason Zaugg2015-02-173-5/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The checkfile of the tests added in the last commit offered a type member from `RichInt` in the completions for the type `Int`. However, only term members can be extension methods; type members cannot.
| * | | SI-9153 More complete and stable results for completionsJason Zaugg2015-02-1710-4/+424
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Three items of background are needed to understand this bug. 1. When typechecking an application like `qual.m({stats; expr})`, the argument is typechecked using the formal parameter type of `m` as the expected type. If this fails with a type error located within in `expr`, the typer instead re-typechecks under `ContextMode.ReTyping` without an expected type, and then searches for an implicit adaptation to enable `view(qual).m(args)`. Under this mode, `Typer#typed1` clears the type of incoming trees. 2. The presentation compiler performs targetted operations like type completions by: - typechecking the enclosing tree, registering all typechecker `Context`s created in the process (`registerContext`) - finding the smallest enclosing `Context` around the target position (`doLocateContext`) - Using this context to perform implicit search, which can contribute members to the completion. (`applicableViews` within `interactive.Global#typeMembers`) 3. When verifiying whether or not a candidate implicit is applicable as a view from `F => T`, implicit search typechecks a dummy call of the form `q"candiate(${Ident("<argument>").setType(typeOf[F])})". Now, picture yourself at the nexus of these three storms. In the enclosed test case, we search for completions at: x + 1.<caret> 1. Because the code is incomplete, the application of `Int#+` doesn't typecheck, and the typer also tries to adapt `x` to a method applicable to the re-typechecked argument. 2. This process registers a context with `retypechecking` set to true. (If multiple contexts at the same position are registered, the last one wins.) 3. Implicit search uses this context to typecheck `Predef.Ensuring(<argument>.setType(Int))`, but the argument is promptly stripped of its type and retypechecking fails as there is no definition named `<argument>` in scope. As such, we missed out on extension methods, like `ensuring` in the list of completions. This commit changes the presentation compiler to turn off retyping mode in the context before starting to work with it. (Are the other modes that might cause similar bugs?) Once I made that change, I noticed that the results the enclosed test was not stable. I tracked this down to the use of a `HashMap` to carry the applicable implicit views, together with the way that the presentation compiler removes duplicates. This commit switched to a `LinkedHashMap`.
| * | | Cache name for dummy argument used in implicit searchJason Zaugg2015-02-172-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | This avoids a minor inefficiency of interning the name on each implicit candidate. Instead, we follow the usual practice and use a pre-baked name from `StdNames`.
* | | | Merge pull request #4337 from Ichoran/opt-IterLike-2.11.xAdriaan Moors2015-02-191-6/+6
|\ \ \ \ | | | | | | | | | | Optimization of IterableLike.scala
| * | | | Optimization of IterableLike.scalaRex Kerr2015-02-161-6/+6
| |/ / / | | | | | | | | | | | | | | | | | | | | Changed takeRight to have two tighter loops instead of one with a conditional. See about 10% performance improvement. Other changes were (surprisingly, in some cases) not a win. Overall, IterableLike is pretty well optimized.
* | | | Merge pull request #4330 from Ichoran/issue/8917Adriaan Moors2015-02-192-2/+13
|\ \ \ \ | | | | | | | | | | SI-8917 collection.mutable.BitSet's &= operator doesn't clear end
| * | | | SI-8917 collection.mutable.BitSet's &= operator doesn't clear endRex Kerr2015-02-132-2/+13
| |/ / / | | | | | | | | | | | | Made &= run to the end of its own bitset, ignoring the size of what it's &-ing with (which is exactly what you want for &=).
* | | | Merge pull request #4319 from axel22/fix-si-7943Adriaan Moors2015-02-193-0/+61
|\ \ \ \ | | | | | | | | | | Fix SI-7943 -- make `TrieMap.getOrElseUpdate` atomic.
| * | | | Fix SI-7943 -- make `TrieMap.getOrElseUpdate` atomic.Aleksandar Prokopec2015-02-183-0/+61
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Override `getOrElseUpdate` method in `TrieMap`. The signature and contract of this method corresponds closely to the `computeIfAbsent` from `java.util.concurrent.ConcurrentMap`. Eventually, `computeIfAbsent` should be added to `scala.collection.concurrent.Map`. Add tests. Review by @Ichoran
* | | | | Merge pull request #4345 from retronym/topic/scaladoc-test-java8Adriaan Moors2015-02-191-0/+8
|\ \ \ \ \ | | | | | | | | | | | | Fix the Scaladoc tests under Java 8
| * | | | | Fix the Scaladoc tests under Java 8Jason Zaugg2015-02-191-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Partest seems to require a second copy of the `filters` find in the root of the Scaladoc tests. This file ignores JVM-specific console output, like everone's favourite nag: Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256M; support was removed in 8.0 Not sure what changed to make this necessary, maybe a partest upgrade? The first failing build was on Feb 14: https://scala-webapps.epfl.ch/jenkins/view/2.N.x/job/scala-nightly-auxjvm-2.11.x/287/
* | | | | | Merge pull request #4346 from retronym/ticket/9164Grzegorz Kossakowski2015-02-195-40/+18
|\ \ \ \ \ \ | |/ / / / / |/| | | | | SI-9164 Fix thread safety of Scaladoc diagram generator
| * | | | | SI-9164 Fix thread safety of Scaladoc diagram generatorJason Zaugg2015-02-195-40/+18
|/ / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In a bug reminiscent of SI-7603 / ab8a223, when running multiple instances of Scaladoc in one JVM/classloader, we are exposed to race conditions in unprotected mutable state in a top-level object. This commit moves that state into the `Universe` object, which corresponds to a single Scaladoc instance. It also removes a little premature abstraction from the code. Note: the statistics code is still not thread safe, but this is no worse than the compiler itself, and not a real problem, as they are only enabled begind a `-Y` option.
* | | | | Merge pull request #4326 from JustinPihony/ticket/9148Adriaan Moors2015-02-182-3/+15
|\ \ \ \ \ | | | | | | | | | | | | SI-9148: Appends companion type to link tooltips
| * | | | | SI-9148: Appends companion type to link tooltipsJustinPihony2015-02-122-3/+15
| | | | | |
* | | | | | Merge pull request #4329 from adriaanm/followup-4235Adriaan Moors2015-02-183-30/+50
|\ \ \ \ \ \ | | | | | | | | | | | | | | Simpler & Scala.js-friendly `ClassTag.unapply`