summaryrefslogtreecommitdiff
path: root/test/files
Commit message (Collapse)AuthorAgeFilesLines
* Lambda impl methods static and more stably namedJason Zaugg2016-06-015-11/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The body of lambdas is compiled into a synthetic method in the enclosing class. Previously, this method was a public virtual method named `fully$qualified$Class$$anonfun$n`. For lambdas that didn't capture a `this` reference, a static method was used. This commit changes two aspects. Firstly, all lambda impl methods are now emitted static. An extra parameter is added to those that require a this reference. This is an improvement as it: - allows, shorter, more readable names for the lambda impl method - avoids pollution of the vtable of the class. Note that javac uses private instance methods, rather than public static methods. If we followed its lead, we would be unable to support important use cases in our inliner Secondly, the name of the enclosing method has been included in the name of the lambda impl method to improve debuggability and to improve serialization compatibility. The serialization improvement comes from the way that fresh names for the impl methods are allocated: adding or removing lambdas in methods not named "foo" won't change the numbering of the `anonfun$foo$n` impl methods from methods named "foo". This is in line with user expectations about anonymous class and lambda serialization stability. Brian Goetz has described this tricky area well in: http://cr.openjdk.java.net/~briangoetz/eg-attachments/lambda-serialization.html This commit doesn't go as far a Javac, we don't use the hash of the lambda type info, param names, etc to map to a lambda impl method name. As such, we are more prone to the type-1 and -2 failures described there. However, our Scala 2.11.8 has similar characteristics, so we aren't going backwards. Special case in the naming: Use "new" rather than "<init>" for constructor enclosed lambdas, as javac does. I have also changed the way that "delambdafy target" methods are identifed. Rather than relying on the naming convention, I have switched to using a symbol attachment. The assumption is that we only need to identify them from within the same compilation unit. This means we can distinguish impl metbods for expanded functions (ones called from an `apply` method of an ahead-of-time expanded anonfun class), from those that truly end up as targets for lambda metafactory. Only the latter are translated to static methods in this patch.
* Merge pull request #5076 from soc/topic/deprecations-sinceLukas Rytz2016-05-3059-98/+103
|\ | | | | Improvements to deprecations related to `since` parameter
| * Add since arg to deprecationWarning and use itSimon Ochsenreither2016-05-2941-48/+54
| |
| * Lower-case spelling of @deprecated messagesSimon Ochsenreither2016-05-286-18/+17
| |
| * SI-9084 Add `since` (if available) to deprecation warningsSimon Ochsenreither2016-05-2821-59/+59
| |
* | Merge pull request #5191 from som-snytt/issue/9382Lukas Rytz2016-05-303-41/+16
|\ \ | | | | | | SI-9382 Privatize enhanced x in Tuple2Zipped.Ops
| * | SI-9382 Zippy clean-up in aisle 2 & 3Som Snytt2016-05-261-41/+0
| | | | | | | | | | | | | | | Consolated JUnit tests and heeded comment about private def and code beauty.
| * | SI-9382 Privatize enhanced x in Tuple2Zipped.OpsSom Snytt2016-05-252-0/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Probably there should be an Abide rule to avoid leaking the "underlying value" of a value class. The spec or SIP defines "underlying type" but doesn't mention the underlying value. The argument for concealing the member is that it is redundant and makes autocompletion results harder to read. Also, possibly an additional implicit might want to add a member so-named.
* | | Merge pull request #5193 from som-snytt/issue/9794Lukas Rytz2016-05-302-1/+9
|\ \ \ | |_|/ |/| | SI-9794 Error advice uses decoded method name
| * | SI-9794 Error advice uses decoded method nameSom Snytt2016-05-262-1/+9
| | | | | | | | | | | | | | | | | | So much work went into polishing this error message, it's worth buffing the method name when it's an operator. The message now says `+` instead of `$plus`.
* | | Merge pull request #5102 from milessabin/2.12.xJason Zaugg2016-05-2730-1/+467
|\ \ \ | | | | | | | | SI-2712 Add support for partial unification of type constructors
| * | | -Xexperimental mode now only includes -Ypartial-unificationMiles Sabin2016-05-241-1/+1
| | | |
| * | | SI-2712 Add support for higher order unificationMiles Sabin2016-05-2429-0/+466
| | | |
* | | | Merge pull request #5192 from dwijnand/wip/scala-repl-no-importsJason Zaugg2016-05-279-15/+567
|\ \ \ \ | |_|/ / |/| | | Fully qualify types in REPL generated code
| * | | Fully qualify types in REPL generated codeDale Wijnand2016-05-269-15/+567
| | |/ | |/|
* / | Rename -Yopt to -opt, -Yopt-warnings to -opt-warningsLukas Rytz2016-05-2548-49/+49
|/ / | | | | | | Keep -Yopt-inline-heuristics and -Yopt-trace unchanged
* | Merge pull request #4935 from som-snytt/issue/8044-tickvarAdriaan Moors2016-05-245-0/+31
|\ \ | | | | | | SI-8044 Allow binding backquoted varid in patterns
| * | SI-8044 Allow any id in explicit pattern bindingSom Snytt2016-05-201-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Allows arbitrary identifier in `X @ pat`, including non-varids. This goes to regularity. Users of this syntax are not likely to be confused by the "backquoted var id is stable" rule. Also for sequence pattern, `X @ _*`.
| * | SI-8044 Test for quoted not-a-varidSom Snytt2016-05-202-0/+8
| | |
| * | SI-8044 Allow binding backquoted varid in patternsSom Snytt2016-05-203-0/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, a varid could not be backquoted, so that it was not possible to introduce variables with names such as `type` in a match expression. This commit allows backquoted varids in `case x @ _` and `case x: Int`. In neither position is a stable id accepted, that is, an id with leading uppercase. Therefore, this commit merely relaxes the backquoted varid to be taken as a normal varid in these contexts.
* | | Merge pull request #5175 from som-snytt/issue/9656-range-toStringStefan Zeiger2016-05-244-8/+65
|\ \ \ | |_|/ |/| | SI-9656 Distinguish Numeric with step type
| * | SI-9656 Range.toString distinguishes Numeric stepSteve Robinson2016-05-194-8/+65
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For Range and NumericRange, toString will indicate the step if it is not 1. Additionally, indicate empty ranges and ranges which are not "exact". For a "mapped" range, used by `Range.Double`, toString includes the underlying range and the simple type of the step (to distinguish Double from BigDecimal).
* | | Merge pull request #5179 from liff/topic/SI-9781Adriaan Moors2016-05-232-0/+8
|\ \ \ | | | | | | | | Check left side of an assignment expression for errors; fixes SI-9781
| * | | SI-9781 Don't convert erroneous expression to assignmentOlli Helenius2016-05-202-0/+8
| | |/ | |/| | | | | | | | | | | | | | | | | | | | | | `convertToAssignment` is triggered on a type error but it doesn't seem to really care what the error is as long as the expression can be converted to an assignment expression. This patch fixes that by checking whether the qualifier of the selection contains any errors before deciding to continue with the conversion.
* | | Merge pull request #5106 from milessabin/topic/hkgadtAdriaan Moors2016-05-233-0/+101
|\ \ \ | | | | | | | | SI-9760 Fix for higher-kinded GADT refinement
| * | | Added pos test with multiple cases; added neg tests.Miles Sabin2016-05-063-4/+87
| | | |
| * | | Added missing result type to test.Miles Sabin2016-04-201-1/+1
| | | |
| * | | SI-9760 Fix for higher-kinded GADT refinementMiles Sabin2016-04-191-0/+18
| | | |
* | | | Merge pull request #5181 from chrisokasaki/issue/9776Adriaan Moors2016-05-231-0/+102
|\ \ \ \ | | | | | | | | | | SI-9776 Fix type of PriorityQueue.newBuilder and improve performance
| * | | | SI-9776: Fix type of PriorityQueue.newBuilder and improve performancechrisokasaki2016-05-221-0/+102
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Fix the return type of mutable.PriorityQueue.newBuilder to be Builder[A, PriorityQueue[A]] rather than PriorityQueue[A]. - Improve performance of bulk inserts from O(N log N) to O(N), primarily in the builder, ++=, and reverse. These changes indirectly benefit the many other methods that use the builder or ++=. - Improve performance of clone. - Fix SI-9757 space leak in dequeue.
* | | | | Merge pull request #5164 from viktorklang/wip-future-docs-√Adriaan Moors2016-05-232-1/+32
|\ \ \ \ \ | | | | | | | | | | | | Improve Future documentation (+ minor code cleanups)
| * | | | | Improves the test cases for the scala-concurrent-tckViktor Klang2016-05-132-1/+32
| | | | | |
* | | | | | Merge pull request #5162 from milessabin/t9361Lukas Rytz2016-05-232-0/+16
|\ \ \ \ \ \ | | | | | | | | | | | | | | SI-9361 fixed assert allowing display of improved error message.
| * | | | | | SI-9361 fixed assert allowing display of improved error message.Miles Sabin2016-05-142-0/+16
| | | | | | |
* | | | | | | Merge pull request #5153 from petermz/ticket/5463Lukas Rytz2016-05-231-0/+21
|\ \ \ \ \ \ \ | |_|_|/ / / / |/| | | | | | SI-5463 Check .jars before using them
| * | | | | | SI-5463 Check .jars before using thempeterz2016-05-171-0/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Make broken JAR files on compiler classpath cause a fatal error
* | | | | | | Merge pull request #4988 from som-snytt/issue/backtick-barAdriaan Moors2016-05-201-0/+7
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | SI-9665 Backquoted vbar in extractor pattern
| * | | | | | | SI-9665 Backquoted vbar in extractor patternSom Snytt2016-03-151-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Allow an infix extractor named `|`, when backquoted.
* | | | | | | | SI-7916: ScriptEngine supportSom Snytt2016-05-196-25/+2
| |_|_|_|_|/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Refactor the ScriptEngine support to an adaptor atop the IMain API. Allow references to resolve to context attributes. (The attributes must be defined at compilation time, though they may resolve to updated values at evaluation time.) This means that attributes are not bound statically in REPL history. In particular, we forgo the trick of binding attributes named "name: Type" as typed values. Instead, an `x` bound in dynamic context is injected into the script as a dynamic selection `$ctx.x` where `ctx` performs the look-up in the script context. When a compiled script is re-evaluated, a new instance of the script class is created and defined symbols are rebound. The context stdout writer is handled with `Console.withOut`, with bytes decoded using the default charset. Compilation errors are thrown as ScriptException with the first reported error. This commit doesn't attempt dynamic selection from objects in context. Currently, script must cast.
* | | | | | | Test case for SI-5183, tagged primitives in case classes (#5144)Ben Hutchison2016-05-192-0/+42
| | | | | | | | | | | | | | | | | | | | | Test for SI-7088, arrays containing tagged primitives
* | | | | | | Generate static forwarders for object members in companion interface (#5131)Jason Zaugg2016-05-193-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We used to disable generation of static forwarders when a object had a trait as a companion, as one could not add methods with bodies to an interface in JVM 6. The JVM lifted this restriction to support default methods in interfaces, so we can lift the restriction on static forwarders, too. Fixes https://github.com/scala/scala-dev/issues/59
* | | | | | | SI-8756 Fix generic signature for refinement of primitiveJason Zaugg2016-05-181-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Java generic signature generation was making the wrong assumption about how refinement types should erase to Java generics. This commit passes through the current value of `primitiveOk`, rather than forcing it to `true`. This flag is true when generating the signature for `f2`, but false in `i2` (as we are in a type argument position).
* | | | | | | SI-8756 Test to demonstrate the status quoJason Zaugg2016-05-182-0/+31
| |_|_|_|_|/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Java generic signatures assume that refinement types should be boxed. Why did `g2` in the test seem to be immune to this bug demonstrated by `f2`? Because we opt to elide the generic signature altogether when no generics are involved.
* | | | | | Merge pull request #5103 from ruippeixotog/improve-list-map-set-perfLukas Rytz2016-05-176-41/+11
|\ \ \ \ \ \ | |_|/ / / / |/| | | | | Improve performance and behavior of ListMap and ListSet
| * | | | | Add SerialVersionUID to ListSetRui Gonçalves2016-05-171-1/+3
| | | | | |
| * | | | | Make ListMap and ListSet implementations similarRui Gonçalves2016-05-172-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | ListSet and ListMap are two collections which share the exact same internal structure. This commit makes the two approaches as similar as possible by renaming and reordering internal methods, improving their Scaladoc and their code style. The Scaladoc of the classes and companion objects is also improved in order to alert users of the time complexity of the collections' operations.
| * | | | | Improve performance and behavior of ListMap and ListSetRui Gonçalves2016-05-175-36/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Makes the immutable `ListMap` and `ListSet` collections more alike one another, both in their semantics and in their performance. In terms of semantics, makes the `ListSet` iterator return the elements in their insertion order, as `ListMap` already does. While, as mentioned in SI-8985, `ListMap` and `ListSet` doesn't seem to make any guarantees in terms of iteration order, I believe users expect `ListSet` and `ListMap` to behave in the same way, particularly when they are implemented in the exact same way. In terms of performance, `ListSet` has a custom builder that avoids creation in O(N^2) time. However, this significantly reduces its performance in the creation of small sets, as its requires the instantiation and usage of an auxilliary HashSet. As `ListMap` and `ListSet` are only suitable for small sizes do to their performance characteristics, the builder is removed, the default `SetBuilder` being used instead.
* | | | | | Merge remote-tracking branch 'origin/2.11.x' into ↵Jason Zaugg2016-05-174-4/+49
|\ \ \ \ \ \ | |_|_|/ / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | merge/2.11.x-to-2.12.x-20160517 Conflicts: build.sbt test/files/run/repl-javap-app.check test/files/run/repl-javap-app.scala
| * | | | | SI-9740 Repl import fix -Yrepl-class-basedSom Snytt2016-05-026-73/+55
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Under `-Yrepl-class-based`, templating must follow the same scoping as under traditional object-based. The new test shows a typical case where two values of the same simple name must be imported in different scopes.
* | | | | | Merge pull request #5146 from som-snytt/issue/9045-msgLukas Rytz2016-05-135-3/+18
|\ \ \ \ \ \ | | | | | | | | | | | | | | SI-9045 Error on recursive ctor