summaryrefslogtreecommitdiff
path: root/test/files/jvm
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #2033 from adriaanm/patmat-optAdriaan Moors2013-02-0316-0/+142
|\ | | | | pattern matching efficiency: addresses SI-6686 and SI-6941, affects SI-5739
| * SI-6941 testsAdriaan Moors2013-01-314-0/+28
| | | | | | | | | | | | | | | | tests that the methods' bytecodes are similar as variable load/stores are reordered, it ignores which variables are modified when checking for bytecode equality the assert is: `similarBytecode(methNodeA, methNodeB, equalsModuloVar)`
| * SI-6686 drop valdef unused in flatMapCond's blockAdriaan Moors2013-01-313-3/+0
| |
| * no type test if static type <:< primitive value classAdriaan Moors2013-01-314-0/+35
| |
| * don't store subpats bound to underscoreAdriaan Moors2013-01-314-0/+47
| | | | | | | | | | | | | | also, tweak fix in place for SI-5158 to appease SI-6941 don't store mutable fields from scala.* as we can assume these classes are well-behaved and do not mutate their case class fields
| * no null check for type-tested unapply argAdriaan Moors2013-01-314-0/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | pattern matching on case classes where pattern is not known to be a subclass of the unapply's argument type used to result in code like: ``` if (x1.isInstanceOf[Foo]) { val x2 = x1.asInstanceOf[Foo] if (x2 != null) { // redundant ... } } ``` this wastes byte code on the redundant null check with this patch, when previous type tests imply the variable cannot be null, there's no null check
* | Merge pull request #2044 from phaller/issue/7029Adriaan Moors2013-02-021-1/+13
|\ \ | | | | | | SI-7029 - Makes sure that uncaught exceptions are propagated to the UEH ...
| * | SI-7029 - Make test more robustPhilipp Haller2013-02-011-24/+12
| | |
| * | SI-7029 - Makes sure that uncaught exceptions are propagated to the UEH for ↵Viktor Klang2013-01-311-0/+24
| |/ | | | | | | the global ExecutionContext
* | Merge pull request #2021 from gkossakowski/issue/SI-7009Grzegorz Kossakowski2013-01-314-0/+85
|\ \ | |/ |/| SI-7009: `@throws` annotation synthesized incorrectly
| * SI-7009: `@throws` annotation synthesized incorrectlyGrzegorz Kossakowski2013-01-301-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The 990b3c7 made `scala.throws` annotation polymorphic but forgot to adapt compiler code that synthesizes it, e.g. when parsing class files. The consequence was that we would get non-deterministically either `scala.throws` or `scala.throws[T]` as a type for synthesized annotation. The reason is that `Symbol.addAnnotation` would call `tpe` method which does not initialization of symbol so type parameters list would not be determined correctly. Only if info of that symbol was forced for other reason we would get `scala.throws[T]`. That non-deterministic behavior was observed in sbt's incremental compiler. Another problem we have is that Scala allows polymorphic exceptions so in ClassfileParser we could synthesize `@throws` annotation with wrong (polymorphic) type applied. In such case the best we can do is to convert such type to monomorphic one by introducing existentials. Here's list of changes this commit introduces: * The `Symbol.addAnnotation` that takes symbol as argument asserts that the type represented by that symbol is monomorphic (disabled due to cycles; see comments in the code) * Introduce `Symbol.addAnnotation` overload that allows us to pass an applied type * Change all places where polymorphic annotations are synthesized to pass an applied type * Handle polymorphic exception types in `ClassfileParser.parseExceptions` Fixes SI-7009.
| * Test case for SI-7009.Grzegorz Kossakowski2013-01-294-0/+85
| | | | | | | | | | The next commit fixes the problem itself and it's easier to see in diff what's being fixed exactly.
* | Add Bytecode test (ASM-based) to partest.Grzegorz Kossakowski2013-01-293-0/+42
|/ | | | | | | | | | | | | | | | | | | This commit introduces a new kind of test `Bytecode` that allows one to inspect bytecode generated for given piece of Scala code. The bytecode inspection is achieved by inspection of ASM trees. See the included example for details. NOTE: This commit does not introduce a new category of pratest tests. Bytecode tests should be run in `jvm` category of partest tests. Specific list of changes: * Add BytecodeTest that contains common utilities to partest * Add asm to classpath when compiling partest. That's not a new dependency as it's being already done for javac task we were running while compiling partest. * Add an example test that shows how to count null checks in given method.
* Fix SI-6932 by enabling linearization of callback execution for the ↵Viktor Klang2013-01-211-0/+7
| | | | internal execution context of Future
* Backport of SI-6846.Jason Zaugg2013-01-082-0/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Squashed commit of the following: commit 55806cc0e6177820c12a35a18b4f2a12dc07bb39 Author: Paul Phillips <paulp@improving.org> Date: Wed Dec 19 07:32:19 2012 -0800 SI-6846, regression in type constructor inference. In 658ba1b4e6 some inference was gained and some was lost. In this commit we regain what was lost and gain even more. Dealiasing and widening should be fully handled now, as illustrated by the test case. (cherry picked from commit dbebcd509e4013ce02655a2687b27d0967b3650e) commit e6ef58447d0f4ef6de956fcc03ee283bb9028c02 Author: Paul Phillips <paulp@improving.org> Date: Fri Dec 21 15:11:29 2012 -0800 Cleaning up type alias usage. I determined that many if not most of the calls to .normalize have no intent beyond dealiasing the type. In light of this I went call site to call site knocking on doors and asking why exactly they were calling any of .normalize .widen.normalize .normalize.widen and if I didn't like their answers they found themselves introduced to 'dropAliasesAndSingleTypes', the recursive widener and dealiaser which I concluded is necessary after all. Discovered that the object called 'deAlias' actually depends upon calling 'normalize', not 'dealias'. Decided this was sufficient cause to rename it to 'normalizeAliases'. Created dealiasWiden and dealiasWidenChain. Dropped dropAliasesAndSingleTypes in favor of methods on Type alongside dealias and widen (Type#dealiasWiden). These should reduce the number of "hey, the type alias doesn't work" bugs. (cherry picked from commit 3bf51189f979eb0dd41744ca844fd12dfdaa0dee) Conflicts: src/compiler/scala/tools/nsc/interpreter/CompletionOutput.scala commit c1d8803cea1523f458730103386d8e14324a9446 Author: Paul Phillips <paulp@improving.org> Date: Sat Dec 22 08:13:48 2012 -0800 Shored up a hidden dealiasing dependency. Like the comment says: // This way typedNew always returns a dealiased type. This // used to happen by accident for instantiations without type // arguments due to ad hoc code in typedTypeConstructor, and // annotations depended on it (to the extent that they worked, // which they did not when given a parameterized type alias // which dealiased to an annotation.) typedTypeConstructor // dealiases nothing now, but it makes sense for a "new" to // always be given a dealiased type. PS: Simply running the test suite is becoming more difficult all the time. Running "ant test" includes time consuming activities of niche interest such as all the osgi tests, but test.suite manages to miss the continuations tests. (cherry picked from commit 422f461578ae0547181afe6d2c0c52ea1071d37b) commit da4748502792b260161baa10939554564c488051 Author: Paul Phillips <paulp@improving.org> Date: Fri Dec 21 12:39:02 2012 -0800 Fix and simplify typedTypeConstructor. Investigating the useful output of devWarning (-Xdev people, it's good for you) led back to this comment: "normalize to get rid of type aliases" You may know that this is not all the normalizing does. Normalizing also turns TypeRefs with unapplied arguments (type constructors) into PolyTypes. That means that when typedParentType would call typedTypeConstructor it would find its parent had morphed into a PolyType. Not that it noticed; it would blithely continue and unwittingly discard the type arguments by way of appliedType (which smoothly logged the incident, thank you appliedType.) The simplification of typedTypeConstructor: There was a whole complicated special treatment of AnyRef here which appears to have become unnecessary. Removed special treatment and lit a candle for regularity. Updated lots of tests regarding newly not-so-special AnyRef. (cherry picked from commit 394cc426c1ff1da53146679b4e2995ece52a133e) commit 1f3c77bacb2fbb3ba9e4ad0a8a733e0f9263b234 Author: Paul Phillips <paulp@improving.org> Date: Fri Dec 21 15:06:10 2012 -0800 Removed dead implementation. Another "attractive nuisance" burning off time until I realized it was commented out. (cherry picked from commit ed40f5cbdf35d09b02898e9c0950b9bd34c1f858)
* SI-4664 [Make scala.util.Random Serializable] Add test caseJean-Remi Desjardins2012-12-041-0/+15
|
* Removing actors-migration from main repository so it can live on elsewhere.Josh Suereth2012-11-012-35/+0
| | | | | | | * Removes actors-migration hooks from partest * Removes actors-migration code * removes actors-migration tests * removes actors-migration distribution packaging.
* Merge branch '2.10.0-wip' of github.com:scala/scala into 2.10.0-wipJosh Suereth2012-11-012-0/+35
|\
| * SI-6581 fixed by inlining `Actor.self`.Vojin Jovanovic2012-10-302-0/+35
| | | | | | | | | | | | This avoids the necessary type cast that was preventing leakage of internal migration classes. Review by @phaller
* | Removing actors-migration from main repository so it can live on elsewhere.Josh Suereth2012-10-3026-1579/+0
|/ | | | | | | * Removes actors-migration hooks from partest * Removes actors-migration code * removes actors-migration tests * removes actors-migration distribution packaging.
* avoid single-art assert where harmful in duration-tckRoland2012-10-181-4/+7
|
* SI-6442 - Add ActorDSL object for actor migration kitphaller2012-09-2911-78/+68
| | | | Removes MigrationSystem, since ActorDSL replaces it.
* Additional Actor Migration Tests.Vojin Jovanovic2012-09-2510-0/+656
| | | | Review by @phaller.
* Support for scala.concurrent for the ActorRef.Vojin Jovanovic2012-09-258-39/+74
| | | | Review by @phaller
* SI-6305 fix.Vojin Jovanovic2012-09-255-7/+12
|
* Merge remote-tracking branch 'paulp/topic/gitattributes' into 2.10.xPaul Phillips2012-09-202-128/+128
|\
| * Normalized line endings.Paul Phillips2012-09-202-128/+128
| | | | | | | | | | | | This brings all the files into line with the .gitattributes settings, which should henceforth be automatically maintained by git.
* | Merge pull request #1339 from rkuhn/wip-6389-finite-duration-multJosh Suereth2012-09-2012-26/+34
|\ \ | |/ |/| enable integer multiplication/divison on FiniteDuration, see SI-6389
| * some small remaining fixesRoland2012-09-201-1/+4
| | | | | | | | | | | | | | | | - added test for “span” and “fromNow” qualifiers - make those actually work even when there is an expected type - add ScalaDoc to them - verify (and fix) conversion Deadline -> FiniteDuration - also make Int * Duration => FiniteDuration work (and test it)
| * Adjustments to scala.concurrent.duration.Paul Phillips2012-09-191-10/+9
| | | | | | | | | | | | | | | | More use of implicit classes and value classes; aliased units to make importing TimeUnit and TimeUnit._ unnecessary; placed some classes in their own files because "the unit of compilation is the file" and we shouldn't bundle more than necessary; fixed some examples.
| * move Duration (incl. DSL) into scala.concurrent.duration packageRoland2012-09-1912-15/+14
| | | | | | | | | | | | | | | | | | so that the full package can be imported naturally: import scala.concurrent.duration._ will give you all the types (Duration, FiniteDuration, Deadline) and the DSL for constructing these.
| * enable integer multiplication/divison on FiniteDuration, see SI-6389Roland2012-09-181-1/+8
| | | | | | | | | | | | | | | | | | - without this "2.seconds * 2" will not return FiniteDuration but Duration - added test case verifying this behavior - matches normal arithmetics: integers throw on div-by-zero while doubles yield infinity; extended here to include overflow protection on integer multiplication
* | Merge pull request #1298 from pavelpavlov/SI-5767Josh Suereth2012-09-184-4/+92
|\ \ | |/ |/| SI-5767 fix + protecting public FlatHashMap API
| * pull request feedbackPavel Pavlov2012-09-184-4/+92
| |
* | Merge remote-tracking branch 'origin/2.10.x' into fix-duration-issues-RKRoland2012-09-121-1/+28
|\ \
| * | improve docs and Promise implRoland2012-09-111-8/+1
| | | | | | | | | | | | | | | | | | | | | - scaladoc the exceptions thrown by Await.* and Awaitable.* - move intercept[Exception] into partest’s TestUtil object - improve Promise.tryAwait implementation following Viktor’s comments and make use of Deadline to avoid calling System.nanoTime too often
| * | fix usage of Duration in Promise implRoland2012-09-101-0/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | - correctly treat MinusInf and Undefined - don't toMillis in the timeout message (could be MinusInf) - also notice that Inf did not actually wait unbounded - and further notice that tryAwait swallows InterruptedException instead of bailing out early => changed to do so and added throws annotation - also removed some unused imports of Duration
* | | two more minor cleanups to DurationRoland2012-09-111-6/+1
| | | | | | | | | | | | | | | - copy partest TestUtil.intercept change from PR 1279 branch - add comment on non-obvious match cases
* | | fix some one more issue in DurationRoland2012-09-071-6/+12
| | | | | | | | | | | | | | | | | | | | | - Inf / Zero == Inf - add some more missing test cases - clarify magic constant - move exception descriptions into proper @throws docs
* | | second round of Duration cleanupRoland2012-09-071-79/+157
| | | | | | | | | | | | | | | | | | | | | | | | - make Duration behave consistent with Double's non-finite semantics - add ScalaDoc - add complete test suite - change overflow protection impl after review comments - clean up code
* | | several fixes to scala.concurrent.util.DurationRoland2012-09-053-24/+141
|/ / | | | | | | | | | | | | | | | | | | | | - add test cases (migrated from Akka sources) - add overflow checking (will throw IllegalArgumentException instead of giving wrong results) - make string parsing more precise when giving >100days in nanoseconds - make method signatures more precise in retaining FiniteDuration throughout calculations - fix mul/div of infinities by negative number - add Ordering for Deadline (was accidentally left out earlier)
* | Removing duplication from Duration.Paul Phillips2012-09-042-0/+400
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I don't know what good it is to have code review if we are checking in code like this. We must raise the bar, people. When the justification for code being in the standard library is borderline at best - as it is here - then the code must be of exceptional quality. This code is not of exceptional quality. Mostly these are not behavioral changes, but: - I removed finite_? as it is a gratuitous deviation from every isXXX method in the world. This isn't ruby. - I removed all the regexps, which only made things complicated - I removed all the unnecessary casts, which is to say, all of them - I made more things final, sealed, and private - The unapply structure was all wrong; returning Option[Duration] on the string unapply meant you'd have to say case Duration(Duration(x, y)) => ... So I fixed apply and unapply to be symmetric. - And I removed the "parse" method, since it was doing what apply is supposed to do. There's a test case to exercise accessing it from java, which also reveals what I hope are bugs. Thanks to viktor klang for DurationConversions.
* | Merge pull request #1197 from scalamacros/topic/kindEugene Burmako2012-08-291-1/+1
|\ \ | | | | | | removes Symbol.kind and Type.kind
| * | removes Symbol.kind and Type.kindEugene Burmako2012-08-261-1/+1
| |/ | | | | | | | | | | | | | | | | | | | | | | | | use Universe.showRaw instead: scala> import scala.reflect.runtime.{universe => ru} import scala.reflect.runtime.{universe=>ru} scala> ru.showRaw(typeOf[Int]) res0: String = TypeRef(ThisType(scala), scala.Int, List()) scala> ru.showRaw(typeOf[Int].typeSymbol, printKinds = true) res1: String = scala.Int#CLS
* / Add missing tests for SI-6190Paolo Giarrusso2012-08-251-1/+13
|/ | | | | This was silently fixed in commit 3cb0e784a05db7d0b542cec9bf4c5fbf3772a6cf but no test was added.
* Merge pull request #1056 from heathermiller/try-based-futuresAdriaan Moors2012-08-086-227/+224
|\ | | | | Bases futures on Try instead of Either
| * Fix test for ExecutionContext.preparephaller2012-08-081-1/+1
| |
| * Doc fix on exec ctx prepare method, fix to testsHeather Miller2012-08-082-2/+3
| |
| * Added tests, removal of unnecessary methods, fixes prepareHeather Miller2012-08-072-6/+20
| |
| * Merge branch 'try-based-futures' of https://github.com/heathermiller/scala ↵Heather Miller2012-08-051-0/+61
| |\ | | | | | | | | | into try-based-futures