summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Fix infinite recursion in name-based patmat.Paul Phillips2014-01-091-1/+3
| | | | | | I discovered on erroneous code it could fall into a loop looking for product selectors, because ErrorType always claims to have whatever member you're asking about.
* Merge pull request #13 from retronym/ticket/8128Paul Phillips2014-01-093-4/+44
|\ | | | | SI-8128 Fix regression in extractors returning existentials
| * SI-8128 Fix regression in extractors returning existentialsJason Zaugg2014-01-093-4/+44
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The advent of the named based pattern matcher brought with it a change in the way we determine the type of the value in the "match monad". We used to take the base type to `Option` or `Seq` (guided by the method name in `unapply` vs `unapplySeq`), and simply use the type argument. Name-based patmat, instead, uses the result type of methods in the type. For example, the element type of an Option-like extractor result is given by the result type of the no-args `get` method. This approach, however, swiftly runs aground when navigating the existential atolls. Here's why: scala> class F[_] defined class F scala> val tp = typeOf[Some[F[X]] forSome { type X }] warning: there were 1 feature warning(s); re-run with -feature for details tp: $r.intp.global.Type = scala.this.Some[F[X]] forSome { type X } scala> tp.baseType(typeOf[Option[_]].typeSymbol).typeArgs.head res10: $r.intp.global.Type = F[X] forSome { type X } scala> tp.memberType(tp.member(nme.get)).finalResultType res11: $r.intp.global.Type = F[X] `res10` corresponds to 2.10.x approach in `matchMonadResult`. `res11` corresponds to the new approach in `resultOfMatchingMethod`. The last result is not wrapped by the existential type. This results in errors like (shown under -Ydebug to turn un accurate printing of skolems): error: error during expansion of this match (this is a scalac bug). The underlying error was: type mismatch; found : _$1&0 where type _$1&0 required: _$1 (0: Any) match { ^ one error found This commit addresses the regression in 2.10.x compatible extractors by using the 2.10 approach for them. The residual problem is shown in the enclosed pending test.
* Finalized some case classes, for better static checking.Paul Phillips2013-12-311-5/+5
|
* Eliminated some dead/redundant code based on review.Paul Phillips2013-12-313-51/+7
|
* SI-8045 type inference of extracted valuePaul Phillips2013-12-231-0/+17
| | | | Test case for SI-8045, fixed by the preceding commits.
* SI-7850 CCE in patmat with invalid isEmpty.Paul Phillips2013-12-158-18/+53
| | | | | | | | Name-based pattern matcher needed some hardening against unapply methods with the right name but wrong types. Only isEmpty methods which return Boolean are acceptable. Catching it directly rather than indirectly also allowed for better error messages.
* SI-7897, SI-6675 improves name-based patmatPaul Phillips2013-12-1523-303/+723
| | | | | | | | | | | | | | | | | | | This emerges from a recent attempt to eliminate pattern matcher related duplication and to bake the scalac-independent logic out of it. I had in mind something a lot cleaner, but it was a whole lot of work to get it here and I can take it no further. Key file to admire is PatternExpander.scala, which should provide a basis for some separation of concerns. The bugs addressed are a CCE involving Tuple1 and an imprecise warning regarding multiple pattern crushing. Editorial: auto-tupling unapply results was a terrible idea which should never have escaped from the crib. It is tantamount to purposely throwing type safety down the toilet in the very place where people need type safety the most. See SI-6111 and SI-6675 for some other comments.
* Merge pull request #3273 from paulp/pr/ackAdriaan Moors2013-12-152-20/+36
|\ | | | | Improvements to partest-ack, plus partest-paths.
| * Improvements to partest-ack, plus partest-paths.Paul Phillips2013-12-152-20/+36
|/ | | | | | | | | I noticed partest-ack was not finding all matching tests, and fixed that. Also cleaned up the ack options so they're understood by the latest version of ack. Along the way I broke the canonicalization functionality out into its own script so it can easily be used from other places.
* Merge pull request #3272 from adriaanm/modularize-cps-fixAdriaan Moors2013-12-132-2/+2
|\ | | | | Fix osgi bundle name for continuations.
| * Fix osgi bundle name for continuations.Adriaan Moors2013-12-132-2/+2
|/
* Merge pull request #3221 from adriaanm/modularize-cpsAdriaan Moors2013-12-13251-9643/+71
|\ | | | | Final library modularization for 2.11
| * Modularize the swing library.Adriaan Moors2013-12-13104-5445/+19
| | | | | | | | | | The Scala Swing library will still ship with 2.11 (albeit unsupported). It now resides at https://github.com/scala/scala-swing.
| * Modularize continuations plugin.Adriaan Moors2013-12-13153-4203/+57
| | | | | | | | | | The continuations plugin and library will still ship with 2.11 (albeit unsupported). They now reside at https://github.com/scala/scala-continuations.
* | Merge pull request #3266 from soc/SI-7546Adriaan Moors2013-12-134-11/+19
|\ \ | |/ |/| SI-7546 Use likely monotonic clock source for durations
| * SI-7546 Use likely monotonic clock source for durationsSimon Ochsenreither2013-12-134-11/+19
| | | | | | | | | | | | | | | | | | | | System.currentTimeMillis is affected by wall-clock time, which means things can appear to jump back in time. Use System.nanoTime which is more likely¹ to be monotonic instead. ¹ See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6458294 "nanoTime affected by system clock change on Linux (RH9) or in general lacks monotonicity".
* | Merge pull request #3270 from adriaanm/fix-dist.docAdriaan Moors2013-12-131-3/+0
|\ \ | | | | | | Fixup for #3265
| * | Fixup for #3265Adriaan Moors2013-12-131-3/+0
|/ /
* | Merge pull request #3233 from scottcarey/SI-8042Adriaan Moors2013-12-131-24/+34
|\ \ | | | | | | Use Serialization Proxy Pattern in List
| * | SI-8042 Use Serialization Proxy Pattern in ListScott Carey2013-12-121-24/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Modify List to use the Serialization Proxy Pattern instead of directly mutating its state during deserialization. Use the proxy at the List level for both Nil and :: for simplicity. Change one member variable (hd) to val from var as a result. The other member variable (tl) cannot yet be changed to val because it is mutated by ListBuffer in the library and Types in reflection.
* | | Merge pull request #3258 from ↵Adriaan Moors2013-12-134-4/+4
|\ \ \ | | | | | | | | | | | | | | | | jrudolph/w/fix-typo-that-that-occurs-twice-in-error-messages fix typo in error messages
| * | | fix typo in error messagesJohannes Rudolph2013-12-104-4/+4
| | |/ | |/|
* | | Merge pull request #3240 from soc/SI-7618Adriaan Moors2013-12-133-43/+16
|\ \ \ | | | | | | | | SI-7618 Remove octal number literals
| * | | SI-7618 Remove octal number literalsSimon Ochsenreither2013-12-093-43/+16
| | | | | | | | | | | | | | | | | | | | | | | | This also fixes a spurious detection of octal literals in floating point literals: Literals like 01.23 are neither deprecated nor planned for removal.
* | | | Merge pull request #3262 from densh/si/8030Adriaan Moors2013-12-137-20/+181
|\ \ \ \ | | | | | | | | | | SI-8030 force symbols on presentation compiler initialization
| * | | | SI-8030 force symbols on presentation compiler initializationDen Shabalin2013-12-127-20/+181
| | |/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit forces a number of built-in symbols in presentation compiler to prevent them from being entered during parsing. The property “parsing doesn’t enter new symbols” is tested on a rich source file that contains significant number of variations of Scala syntax.
* | | | Merge pull request #3250 from soc/SI-8059Adriaan Moors2013-12-133-4/+29
|\ \ \ \ | | | | | | | | | | SI-8059 Override immutable.Queue#{+:,:+} for performance
| * | | | SI-8059 Override immutable.Queue#{+:,:+} for performanceSimon Ochsenreither2013-12-113-4/+29
| |/ / / | | | | | | | | | | | | Without those overrides, all elements are unnecessarily copied.
* | | | Merge pull request #3204 from retronym/topic/patmat-classtag-compoundAdriaan Moors2013-12-133-0/+24
|\ \ \ \ | | | | | | | | | | Test case for recently improved unchecked warning
| * | | | Test case for recently improved unchecked warningJason Zaugg2013-12-123-0/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Prior to https://github.com/scala/scala/pull/2848, the enclosed test compiled without warning and printed: true false Features interacting: - implicit class tags to enable type patterns on abstract types - type tests on compound types. I think the unchecked warning is acceptable for now.
* | | | | Merge pull request #3214 from retronym/ticket/8024Adriaan Moors2013-12-136-5/+52
|\ \ \ \ \ | | | | | | | | | | | | SI-8024 Fix inaccurate message on overloaded ambiguous ident
| * | | | | SI-8024 Improve user-level toString of package objectsJason Zaugg2013-12-122-5/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We were outputing a the unattractive `package package`; now we opt for `package object pack`. Under `-Ydebug`, we still go to the "accurate" mode of the old `toString` implementation, which differentiates package objects vs package object classes.
| * | | | | SI-8024 Fix inaccurate message on overloaded ambiguous identJason Zaugg2013-12-125-6/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `Symbol#owner` of an overloaded symbol doesn't necessarily correspond to the owner of any of the alternatives, and as such it shouldn't be used in error message. neg/t8024.scala actually represents a progression since 2.10.3; the ambiguity was not reported. I bisected the change to https://github.com/scala/scala/pull/1554.
| * | | | | SI-8024 Pending test case for package object / overloading bugJason Zaugg2013-12-122-0/+20
| |/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The error is new in 2.11, but actually seems correct. It appeared in 2.11.0-M4, more specifically, after https://github.com/scala/scala/pull/1554 But, the error message itself is wrong, and suggests that a method symbol has latched itself to an incorrect owner.
* | | | | Merge pull request #3263 from retronym/ticket/6780Adriaan Moors2013-12-133-28/+67
|\ \ \ \ \ | | | | | | | | | | | | SI-6780 Better handling of cycles in in-scope implicit search
| * | | | | SI-6780 Refactor Context#implicitssJason Zaugg2013-12-111-30/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - split out a method for the part concernted with implicits from the current context - leaving the outer code to handle caching, cycle detection, and recursion up the context chain.
| * | | | | SI-6780 Better handling of cycles in in-scope implicit searchJason Zaugg2013-12-113-9/+45
| | |/ / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implicit searches in the body of implicit members with inferred types were leading to cycles. Before we used to resolve that by saying there were no implicits in scope at all; now we just skip the current context and still include the enclosing implicits. Care is taken not to cache results under these circumstances. This entails reworking `Context#implicitss` so that: - the implicit info cache only contains implicits from the current level. The List[List[_]] is now contructed on demand; - we can detect cycles by setting `implicitsCacheRunId` to -1 during the computation. The outer implicits when we encounter that. - we avoid caching when we hit a cycle or when the owner is uninitialized.
* | | | | Merge pull request #3265 from retronym/merge/2.10.x-to-masterAdriaan Moors2013-12-13124-6211/+562
|\ \ \ \ \ | | | | | | | | | | | | Merge 2.10.x to master
| * \ \ \ \ Merge commit '9cdbe28' into merge/2.10.x-to-masterJason Zaugg2013-12-11113-6150/+344
| |\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: build.examples.xml build.xml docs/examples/actors/pingpong.scala docs/examples/fors.scala docs/examples/iterators.scala docs/examples/jolib/Ref.scala docs/examples/jolib/parallelOr.scala docs/examples/monads/callccInterpreter.scala docs/examples/monads/directInterpreter.scala docs/examples/monads/errorInterpreter.scala docs/examples/monads/simpleInterpreter.scala docs/examples/monads/stateInterpreter.scala docs/examples/parsing/ArithmeticParser.scala docs/examples/patterns.scala docs/examples/pilib/elasticBuffer.scala docs/examples/pilib/handover.scala docs/examples/pilib/piNat.scala docs/examples/typeinf.scala src/build/pack.xml
| | * | | | | Fixup #3248 missed a spot in pack.xmlAdriaan Moors2013-12-101-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Forgot to run `ant distpack` to verify, only did `dist.done`. Implemented the rename of `doc/scala-devel-docs` to `api`.
| | * | | | | Merge pull request #3249 from retronym/ticket/7912Adriaan Moors2013-12-102-2/+24
| | |\ \ \ \ \ | | | | | | | | | | | | | | | | SI-7912 Be defensive calling `toString` in `MatchError#getMessage`
| | | * | | | | SI-7912 Be defensive calling `toString` in `MatchError#getMessage`Jason Zaugg2013-12-102-2/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Otherwise, objects with exception-throwing `toString` lead to a cascading error far removed from the originally failed match.
| | * | | | | | Merge pull request #3251 from retronym/ticket/8060Adriaan Moors2013-12-102-1/+12
| | |\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | SI-8060 Avoid infinite loop with higher kinded type alias
| | | * | | | | | SI-8060 Avoid infinite loop with higher kinded type aliasJason Zaugg2013-12-102-1/+12
| | | |/ / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The `dealiasLocals` map was assuming that: tp.isAliasType implies (tp.dealias ne tp) This isn't true if `!typeParamsMatchArgs`. This commit avoids the infinite loop by checking whether or not dealiasing progresses.
| | * | | | | | Merge pull request #3248 from adriaanm/dist-cleanup-licensesAdriaan Moors2013-12-10113-6236/+303
| | |\ \ \ \ \ \ | | | |/ / / / / | | |/| | | | | Clean up Scala distribution a bit.
| | | * | | | | Update README, include doc/licenses in distroAdriaan Moors2013-12-107-66/+301
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We forgot to copy the licenses directory to the dists/ directory, so that they weren't included in the binary distribution. I did some house cleaning while I was at it. We no longer distribute ant as far as I can see (we used to for the sbt build, but that was long since removed). Added license for ASM, and Jansi (just to be sure).
| | | * | | | | Add attribution for Typesafe.Adriaan Moors2013-12-091-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This was agreed on a while ago, but not yet implemented.
| | | * | | | | Remove docs/examples; they reside at scala/scala-distAdriaan Moors2013-12-09104-6120/+1
| | | | | | | |
| | | * | | | | Remove unused android test and corresponding license.Adriaan Moors2013-12-093-43/+0
| | | | | | | |