summaryrefslogtreecommitdiff
path: root/test/files/run
Commit message (Collapse)AuthorAgeFilesLines
* SI-6260 Avoid double-def error with lambdas over value classesJason Zaugg2014-02-105-0/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Post-erasure of value classs in method signatures to the underlying type wreaks havoc when the erased signature overlaps with the generic signature from an overriden method. There just isn't room for both. But we *really* need both; callers to the interface method will be passing boxed values that the bridge needs to unbox and pass to the specific method that accepts unboxed values. This most commonly turns up with value classes that erase to Object that are used as the parameter or the return type of an anonymous function. This was thought to have been intractable, unless we chose a different name for the unboxed, specific method in the subclass. But that sounds like a big task that would require call-site rewriting, ala specialization. But there is an important special case in which we don't need to rewrite call sites. If the class defining the method is anonymous, there is actually no need for the unboxed method; it will *only* ever be called via the generic method. I came to this realisation when looking at how Java 8 lambdas are handled. I was expecting bridge methods, but found none. The lambda body is placed directly in a method exactly matching the generic signature. This commit detects the clash between bridge and target, and recovers for anonymous classes by mangling the name of the target method's symbol. This is used as the bytecode name. The generic bridge forward to that, as before, with the requisite box/unbox operations.
* Merge pull request #3420 from som-snytt/issue/8092-f-parsingEugene Burmako2014-02-092-0/+20
|\ | | | | SI-8092 More verify for f-interpolator
| * SI-8092 More verify for f-interpolatorSom Snytt2014-01-282-0/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Attempt to verify the nooks and crannies of the format string. Allows all syntax in the javadoc, including arg indexes. If the specifier after an arg has an index that doesn't refer to the arg, a warning is issued and the missing `%s` is prepended (just as for a part with a leading `%n`). Other enhancements include detecting that a `Formattable` wasn't supplied to `%#s`. Error messages attempt to be pithy but descriptive.
* | Merge pull request #3391 from xeno-by/ticket/8131Jason Zaugg2014-02-081-0/+32
|\ \ | | | | | | SI-8131 fixes residual race condition in runtime reflection
| * | SI-8131 fixes residual race condition in runtime reflectionEugene Burmako2014-01-211-0/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Apparently some completers can call setInfo while they’re not yet done, which resets the LOCKED flag, and makes anything that uses LOCKED to track completion unreliable. Unfortunately, that’s exactly the mechanism that was used by runtime reflection to elide locking for symbols that are known to be initialized. This commit fixes the problematic lock elision strategy by introducing an explicit communication channel between SynchronizedSymbol’s and their completers. Now instead of trying hard to infer whether it’s already initialized or not, every symbol gets a volatile field that can be queried to provide necessary information.
* | | Merge pull request #3453 from Ichoran/issue/4997Adriaan Moors2014-02-051-1/+1
|\ \ \ | | | | | | | | SI-4997 deprecate StringLike.linesIterator for StringLike.lines
| * | | SI-4997 deprecate StringLike.linesIterator for StringLike.linesRex Kerr2014-01-311-1/+1
| | | | | | | | | | | | | | | | Deprecated. lines is by far more consistent with the rest of the naming in the library.
* | | | SI-8233 Fix regression in backend with boxed nullsJason Zaugg2014-02-053-0/+37
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Regressed in SI-7015 / 1b6661b8. We do need to "unbox" the null (ie, drop a stack from and load a null) in general. The only time we can avoid this is if the tree we are adapting is a `Constant(Literal(null))`. I've added a test for both backends. Only GenICode exhibited the problem.
* | | Merge pull request #3425 from retronym/ticket/7700Jason Zaugg2014-01-312-0/+19
|\ \ \ | | | | | | | | SI-7700 @unspecialized, Part Deux: Now Working.
| * | | SI-7700 @unspecialized, Part Deux: Now Working.Jason Zaugg2014-01-312-0/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This annotation was introduced to allow us to mark methods within a specialized trait as immune from specialization. In particular, this is desirable for `Function1.{andThen, compose}`. However, it seems we need to check for this in two places in the specialization code base. The feature is now backed with a test.
* | | | Merge pull request #3357 from retronym/ticket/8143Adriaan Moors2014-01-311-17/+0
|\ \ \ \ | | | | | | | | | | SI-8143 Regressions with override checks, private members
| * | | | SI-8143 Regressions with override checks, private membersJason Zaugg2014-01-141-17/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | These regressed in e609f1f20b, which excluded all private methods from overriding checks. We should only exclude private[this] members on the low end of a pair, as was done before that commit, and, we must also exclude private members on the high side. Why? Warning: reverse engineered intuition follows. We need to report an error when if a private method in a subclass has matches a less-private method in the super class and report an error, lest the user be fooled into thinking it might be invoked virtually. On the other hand, adding a private method to a super class shouldn't invalidate the choice names of public members in its superclasses. I've removed the test case added by that commit and will lodge a reworked version of it that Paul provided as a new issue. That shows a bug with qualified private + inheritance. In addition, the expectation of `neg/accesses.check` is reverted to its 2.10.3 version, which I believe is correct. When it was changed in e609f1f20b it sprouted a variation, `neg/accesses-2`, which has now changed behaviour. The intent of that test will be captured in the aforementioned issue covering qualified private inheritance.
* | | | | SI-8199 Account for module class suffix in -Xmax-classfile-nameJason Zaugg2014-01-291-0/+105
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The class file name of an inner class is based on the flattened name of its owner chain. But, if this is going to be unreasonably long, it is shortened with the help of a MD5 hash. However, after this shortening takes place, we sneakily add one more character (the infamous '$') to the name when it is used for the module class. It is thus possible to exceed the limit by one. The enclosed test failed on Mac with "filename too long" because of this. I have also tested for trait implementatation classes, but these seem to be suffixed with "$class" before the name compactification runs, so they weren't actually a problem. This change is binary incompatible as separately compiled defintions and usages of named, inner classes need to agree on this setting. Most typically, however, these long names crop up for inner anonymous classes / functions, which are not prone to the binary incompatiblity, assuming that their creation hasn't be inlined to a separately compiled client.
* | | | | Merge pull request #3388 from rklaehn/issue/7445Adriaan Moors2014-01-242-7/+6
|\ \ \ \ \ | |_|_|_|/ |/| | | | ListMap.tail is returning wrong result
| * | | | SI-7445 ListMap.tail is returning wrong resultRuediger Klaehn2014-01-202-7/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reverted the commit that introduced the bug, and modified HashMap to no longer assume that tail is O(1). Review by @Ichoran, @soc
* | | | | Merge pull request #3401 from xeno-by/topic/freshEugene Burmako2014-01-221-3/+3
|\ \ \ \ \ | | | | | | | | | | | | SI-6879 improves Context.freshName
| * | | | | SI-6879 improves Context.freshNameEugene Burmako2014-01-221-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of per-compilation unit unique counters, the freshName API now uses a per-Global counter. Fresh names now also contain dollars to exclude clashes with supported user-defined names (the ones without dollar signs). This doesn’t fix the bug, because per-Global counters get created anew every time a new Global is instantiated, and that provides some potential for name clashes even for def macros, but at least it completely excludes clashes in typical situations.
* | | | | | Expose seq field for variable arity definitionsDenys Shabalin2014-01-221-0/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In 2.11 we've changed TupleClass, ProductClass and FunctionClass endpoints to be exposed as (Int => Symbol) functions that never throw exceptions but rather return NoSymbol instead of previous error-prone indexed access on array that could explode. While simplifying one use case (indexed access) it complicated ability to check if symbol at hand is in fact a tuple, product or function: (1 to 22).map(TupleClass).toList.contains(symbol) To cover this extra use case we add a seq method to the variable arity class definitions that exposes a corresponding sequence of class symbols: TupleClass.seq.contains(symbol)
* | | | | | Merge pull request #3382 from soc/topic/std-inJason Zaugg2014-01-211-1/+1
|\ \ \ \ \ \ | |/ / / / / |/| | | | | Improve naming of ReadStdin
| * | | | | Improve naming of ReadStdinSimon Ochsenreither2014-01-181-1/+1
| | |_|/ / | |/| | | | | | | | | | | | | | | | | | We don't need to say everything twice, methods are already prefixed with “read”.
* | | | | Merge pull request #3392 from xeno-by/topic/untypecheckEugene Burmako2014-01-218-8/+8
|\ \ \ \ \ | | | | | | | | | | | | deprecates resetAllAttrs and resetLocalAttrs in favor of the new API
| * | | | | deprecates resetAllAttrs and resetLocalAttrs in favor of the new APIEugene Burmako2014-01-218-8/+8
| | |_|/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We now have c.untypecheck, which is supposed to be a counterpart of c.typecheck in the sense that it goes back from typed trees to untyped ones: http://stackoverflow.com/questions/20936509/scala-macros-what-is-the-difference-between-typed-aka-typechecked-an-untyped. Let’s hope that c.untypecheck will soon be able to solve our problems with partially/incorrectly attributed trees emitted by macros: https://groups.google.com/forum/#!topic/scala-internals/TtCTPlj_qcQ.
* | | | | Merge pull request #3368 from retronym/ticket/8151Grzegorz Kossakowski2014-01-212-16/+0
|\ \ \ \ \ | | | | | | | | | | | | SI-8151 Remove -Yself-in-annots and associated implementation
| * | | | | SI-8151 Remove -Yself-in-annots and associated implementationJason Zaugg2014-01-152-16/+0
| |/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This experimental option typechecked arguments of annotations with an injected value in scope named `self`: @Foo(self.foo < 1) This has been slated for removal [1] for some time. This commit removes it in one fell swoop, without any attempt at source compatibility with code that constructs or pattern matches on AnnotatedType. [1] https://groups.google.com/d/msg/scala-internals/VdZ5UJwQFGI/C6tZ493Yxx4J
* | | | | Merge pull request #3365 from retronym/ticket/8133Jason Zaugg2014-01-214-0/+33
|\ \ \ \ \ | | | | | | | | | | | | Fix regression with package objects, overloading
| * | | | | SI-8133 Fix regression with package objects, overloadingJason Zaugg2014-01-144-0/+33
| |/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Regressed in f5c336d56, a refactoring of `typedIdent`. In that commit, an (ostensibly) accidental change arrived, equivalent to: - val pre1 = if (qual == EmptyTree) NoPrefix else if (sym.isTopLevel) sym.owner.thisType else qual.tpe + val pre1 = if (sym.isTopLevel) sym.owner.thisType else if (qual == EmptyTree) NoPrefix else qual.tpe Here, `qual` is a tree returned in the successful result of `Context#lookup`. This change itself looks innocuous (top level symbols can be prefixed with a qualifier or not, right?), but it exposed us to a bug in `makeAccessible`. It is responsible for rewriting, e.g, `scala.List` to `scala.package.List`. It has a few cases, but one of them relies relies on typechecking `Ident(nme.PACKAGE)`, and hoping that it will bind to the right place. That's fraught with danger, and breaks in the enclosed tests. This commit binds that Ident symbolically, and in the process factors a tiny bit of code in common with `TreeGen`. (More work is still needed here!) In the next commit, I'm going to revert the change to `pre1`. That would have also fixed the regression, albeit symptomatically.
* | | | | addresses pull request feedbackEugene Burmako2014-01-201-1/+1
| | | | |
* | | | | SI-8158 compiler hangs printing out fancy typesEugene Burmako2014-01-201-1/+1
| |_|/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Apparently, even though the compiler has safeguards against infinite type printouts, having a depth counter, we didn’t account for the cases when printouts are both self-referential and self-multiplying. For one, SI-8158 provides an example of such a type, which is a structural type that refers to itself twice in return types of its methods. At first, printing such a type would go deeper and deeper, but then it will hit the depth limit and start multiply indefinitely. This commit fixes this particular problem by recognizing self-references as this.type’s and printing them out as such. The subsequent commit will introduce a more general facility.
* | | | Merge commit '97b9b2c06a' from 2.10.x into masterAdriaan Moors2014-01-172-0/+27
|\ \ \ \ | |_|/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | Check files updated: test/files/presentation/t8085*.check Conflicts: build.xml src/compiler/scala/tools/nsc/ast/parser/Parsers.scala src/compiler/scala/tools/nsc/symtab/classfile/ICodeReader.scala
| * | | Report error on code size overflow, log method name.Adriaan Moors2013-12-122-0/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | We used to silently skip class files that would exceed the JVM's size limits. While rare, this should still be an error. While I was at it, also included the name of the offending method.
* | | | Merge pull request #3322 from rklaehn/issue/6253Ichoran2014-01-163-0/+189
|\ \ \ \ | | | | | | | | | | SI-6253 HashSet should implement union
| * | | | SI-6253 HashSet should implement unionRüdiger Klaehn2014-01-163-0/+189
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implements of HashSet.union that reuses the two trees as much as possible when calculating the union of two sets. This leads to significant performance improvements as well as to much better structural sharing. There is a comprehensive correctness test for union since there was not a single test for HashSet.union before. In addition, there are some tests of the desirable properties of the new implementation (structural sharing and efficiency regarding calls of key.hashCode). The other operations diff and intersect, which are conceptually very similar to union, are also implemented along with comprehensive test cases for both correctness and structural sharing. Note that while it appears that there is some code duplication between the three methods, they are sufficiently different that it is not possible to merge them into one without sacrificing performance.
* | | | | Repairs unexpected failure of test t6200.scalaRex Kerr2014-01-151-3/+3
|/ / / / | | | | | | | | | | | | Added extra ()'s to get rid of deprecation warning for inferring unit arg.
* | | | Merge pull request #3318 from rklaehn/issue/6196Ichoran2014-01-152-0/+136
|\ \ \ \ | | | | | | | | | | SI-6196 - Set should implement filter
| * | | | SI-6200 - HashMap should implement filterRüdiger Klaehn2014-01-151-0/+68
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is the exact same algorithm as in SI-6196, with only slight differences due to the two type arguments of HashMap. Filter is tested by the new comparative collection test by @Ichoran, but there is nevertheless a small correctness test in t6200 in addition to tests of the new desirable behavior.
| * | | | SI-6196 - Set should implement filterRüdiger Klaehn2014-01-151-0/+68
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implements a version of filter and filterNot that reuses as much as possible from the existing tree instead of building an entirely new one like the builder-based filter does. This results in significant performance improvements on average. Adds a test of basic correctness of filter and filterNot as well as of the desirable properties of the new filter implementation. This is a collaboration between me and @Ichoran
* | | | | Merge pull request #3316 from Ichoran/topic/big-decimal-correctnessAdriaan Moors2014-01-153-18/+39
|\ \ \ \ \ | | | | | | | | | | | | Quasi-comprehensive BigDecimal soundness/correctness fix.
| * | | | | Quasi-comprehensive BigDecimal soundness/correctness fix.Rex Kerr2014-01-143-18/+39
| | |_|_|/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes issues SI-6153, SI-6173, SI-6456, SI-6699, and SI-8116, along with a number of other similar possible issues. Relevant changes include * Changes to avoid heap explosion when working with BigInt - to isWhole - to hashCode - to equals - to BigInt's equals * Changes to enable equality matching hashCode - Only for sufficiently small BigInt - For identical values with different precision * Changes to isValidDouble - Takes precision into account now - New methods added to test whether even if the Double is not represented exactly, it's a representation of a certain type - New companion methods added to allow intended expansion of Double (binary/decimal difference) * Changes to constructor - Null arguments are not allowed (these can throw NPEs later at awkward/unexpected times) * New JUnit test to test all these things * Fixed existing tests to expect new behavior * Modified scaladocs to explain the issues * Deprecated problematic methods * Made application of MathContext more consistent (it is where you expect it and not where you don't) These changes are coordinated, for the most part, hence the monolithic commit.
* | | | | Merge pull request #3304 from non/bug/stream-flatten2-8100Adriaan Moors2014-01-152-0/+9
|\ \ \ \ \ | | | | | | | | | | | | SI-8100 - prevent possible SOE during Stream#flatten.
| * | | | | SI-8100 - prevent possible SOE during Stream#flatten.Erik Osheim2013-12-242-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit changes stream flatten to avoid allocating a stack frame for every stream item. Previously, flattening a stream whose elements are mostly empty would result in a StackOverflowException. This commit also adds a test demonstrating the problem.
* | | | | | Merge pull request #3285 from som-snytt/issue/8015-FF-NLsAdriaan Moors2014-01-151-0/+7
|\ \ \ \ \ \ | | | | | | | | | | | | | | Count lines by EOLs
| * | | | | | SI-8015 Count lines by EOLsSom Snytt2014-01-081-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Source lines were counted by "line break chars", including FF. Clients of `pos.line` seem to all expect the ordinary line num, so that is what they get. Unicode processing now precedes line ending processing.
* | | | | | | Merge pull request #3260 from soc/SI-8035Adriaan Moors2014-01-158-18/+16
|\ \ \ \ \ \ \ | |_|_|_|/ / / |/| | | | | | Deprecate automatic () insertion in argument lists
| * | | | | | SI-8035 Deprecate automatic () insertion in argument listsSimon Ochsenreither2014-01-098-18/+16
| |/ / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This promotes the () insertion warning from -Ywarn-adapted-args to a deprecation warning. -Xfuture tunrs it into a compiler error. Auto tupling remains unchanged for now. The tests have been fixed the following way: - Warnings caused by general sloppiness (Try(), Future(), ...) have been fixed. - Warnings which raise interesting questions (x == (), ...) received an updated checkfile for now.
* | | | | | Merge pull request #3321 from VladimirNik/sprinterJason Zaugg2014-01-151-2/+2
|\ \ \ \ \ \ | | | | | | | | | | | | | | Add tree-based code generation
| * | | | | | Variance annotations printingVladimirNik2014-01-011-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | def printTypeParams is modified. Tests are updated.
* | | | | | | Merge pull request #3315 from rklaehn/issue/7326Ichoran2014-01-151-0/+64
|\ \ \ \ \ \ \ | |_|_|_|/ / / |/| | | | | | Implements specialized subsetOf for HashSet
| * | | | | | Implements specialized subsetOf for HashSetRüdiger Klaehn2014-01-141-0/+64
| | |_|/ / / | |/| | | | | | | | | | | | | | | | Fixes SI-7326. This also adds a basic test for subsetOf that was missing before.
* | | | | | Merge pull request #3355 from xeno-by/topic/saturday-nightJason Zaugg2014-01-14154-371/+414
|\ \ \ \ \ \ | | | | | | | | | | | | | | reshuffles names for blackbox/whitebox contexts, changes bundle notation
| * | | | | | changes bundles to be classes, not traits extending MacroEugene Burmako2014-01-1210-21/+61
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Adjusts bundle notation to read `class Bundle(val c: Context)` instead of `class Bundle extends Macro`. This avoids calling compileLate in the macro compiler and associated tooling problems.