summaryrefslogtreecommitdiff
path: root/test
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #3485 from xeno-by/topic/reset-all-attrsJason Zaugg2014-02-098-8/+8
|\ | | | | kills resetAllAttrs
| * renames resetLocalAttrs to resetAttrsEugene Burmako2014-02-075-5/+5
| | | | | | | | | | Now when resetAllAttrs is gone, we can use a shorter name for the one and only resetLocalAttrs.
| * further limits discoverability of resetAttrsEugene Burmako2014-02-073-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit removes resetAllAttrs from the public reflection API. This method was previously deprecated, but on a second thought that doesn't do it justice. People should be aware that resetAllAttrs is just wrong, and if they have code that uses it, this code should be rewritten immediately without beating around the bush with deprecations. There's a source-compatible way of achieving that (resetLocalAttrs), so that shouldn't bring much trouble. Secondly, resetAllAttrs in compiler internals becomes deprecated. In subsequent commits I'm going to rewrite the only two locations in the compiler that uses it, and then I think we can remove it from the compiler as well.
* | Merge pull request #3420 from som-snytt/issue/8092-f-parsingEugene Burmako2014-02-095-20/+187
|\ \ | | | | | | SI-8092 More verify for f-interpolator
| * | SI-8092 Refactor f-interpSom Snytt2014-02-042-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A denshish refactor makes the FormatInterpolator a nice bundle that destructures its input and flattens out the classes to give the code some elbow room. Everything shifts left. The `checkType` method is refolded and renamed `pickAcceptable`. An additional test case captures the leading edge test, that a % should follow a hole, and which is the most basic requirement.
| * | SI-8092 More verify for f-interpolatorSom Snytt2014-01-285-20/+181
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-1/+1
|\ \ \ | | | | | | | | SI-8131 fixes residual race condition in runtime reflection
| * | | SI-8131 fixes residual race condition in runtime reflectionEugene Burmako2014-01-211-0/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * | | removes non-determinism in reflection-sync-potpourriEugene Burmako2014-01-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Depending on the environment in which the test is run, s1 can be either “String” or “java.lang.String”. This is one of the known non-deterministic behaviors of our reflection, caused by prefix stripping only working for packages defined in the root mirror. Until we fix this, I suggest we make the test more lenient.
* | | | Add support for a more straightforward alternative to import selectorsDenys Shabalin2014-02-073-14/+82
| | | |
* | | | Represent tq"" as SyntacticEmptyTypeTree rather than TypeTree()Denys Shabalin2014-02-073-2/+15
| |_|/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Such representation codifies the fact that type tree that doesn't have embedded syntactic equivalent must have been inferred or otherwise provided by the compiler rather than specified by the end user. Additionally it also ensures that we can still match trees without explicit types (e.g. vals without type) after typechecking. Otherwise the same quote couldn't be used in situations like: val q"val x = 42" = typecheck(q"val x = 42")
* | | Merge pull request #3475 from densh/topic/holemap-orderingEugene Burmako2014-02-061-0/+5
|\ \ \ | | | | | | | | Fix inconsistent binding in patterns with 10+ holes
| * | | Fix inconsistent binding in patterns with 10+ holesDenys Shabalin2014-02-061-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously a map that was storing bindings of fresh hole variables with their contents (tree & cardinality) used to be a SortedMap which had issues with inconsistent key ordering: "$fresh$prefix$1" < "$fresh$prefix$2" ... "$fresh$prefix$8" < "$fresh$prefix$9" "$fresh$prefix$9" > "$fresh$prefix$10" This issue is solved by using a LinkedHashMap instead (keys are inserted in the proper order.)
* | | | Merge pull request #3474 from soc/topic/osgi-feature-warningsEugene Burmako2014-02-062-3/+5
|\ \ \ \ | | | | | | | | | | Fix feature warnings in test.osgi.comp
| * | | | Fix feature warnings in test.osgi.compSimon Ochsenreither2014-02-062-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | | Reduces the amount of noise from 22 lines down to the actually interesting 5 lines of information.
* | | | | Merge pull request #3458 from densh/si/8173Eugene Burmako2014-02-067-47/+111
|\ \ \ \ \ | |/ / / / |/| | | | SI-8173 add support for patterns like init :+ last to quasiquotes
| * | | | SI-8173 add support for patterns like init :+ last to quasiquotesDenys Shabalin2014-02-027-47/+111
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Adds support for patterns like: val q"{ ..$init; $last }" = q"{ a; b; c }" // init == List(q"a", q"b") // last == q"c" Which under the hood get compiled as `:+` patterns: SyntacticBlock(init :+ last)
* | | | | Merge pull request #3457 from retronym/ticket/8228Adriaan Moors2014-02-052-0/+11
|\ \ \ \ \ | | | | | | | | | | | | SI-8228 Avoid infinite loop with erroneous code, overloading
| * | | | | SI-8228 Avoid infinite loop with erroneous code, overloadingJason Zaugg2014-02-022-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `isApplicableBasedOnArity` couldn't get of the ferris wheel after as `followApply` kept insisting on another spin. scala> ErrorType nonPrivateMember nme.apply res0: $r.intp.global.Symbol = value apply scala> res0.info res1: $r.intp.global.Type = <error> This commit makes `followApply` consider that an `ErrorType` does not contain an `apply` member. I also considered whether to do a deep check on the type (`isErroneous`), but I can't motivate this with a test. I tend to think we *shouldn't* do that: `List[${ErrorType}]` still has an `apply` member that we should follow, right?
* | | | | | 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.
* | | | | | Merge pull request #3462 from retronym/ticket/8233Adriaan Moors2014-02-053-0/+37
|\ \ \ \ \ \ | | | | | | | | | | | | | | SI-8233 Fix regression in backend with boxed nulls
| * | | | | | 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 #3400 from retronym/ticket/8170Adriaan Moors2014-02-052-0/+52
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | SI-8170 Fix regression in TypeRef#transform w. PolyTypes
| * | | | | | | SI-8170 Fix regression in TypeRef#transform w. PolyTypesJason Zaugg2014-01-222-0/+52
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Regressed in SI-8046 / edc9edb7, by my hand. At the time, I noticed the problem: transform wasn't accounting for the potential Poly-Type-ness of its argument, and this would lead to under-substituted types. The commit comment of edc9edb7 shows an example. But the remedy wasn't the right one. The root problem is that a TypeMap over a PolyType can return one with cloned type parameter symbols, which means we've lose the ability to substitute the type arguments into the result. This commit detects up front whether the type-under-transform is a PolyType with the current TypeRef's type parameters, and just runs the `asSeenFrom` over its result type.
* | | | | | | | Merge pull request #3465 from pavelpavlov/list-head-valAdriaan Moors2014-02-051-1/+1
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | PR #3233 cleanup
| * | | | | | | | PR #3233 cleanupPavel Pavlov2014-02-051-1/+1
| | |/ / / / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - `::.head` became a `val`; excessive accessor removed - SerializationProxy moved to `object List`
* / | | | | | | Fix typo in compiler's error message: anoynmous => anonymousPavel Pavlov2014-02-051-3/+3
|/ / / / / / /
* | | | / / / SI-4014 Scaladoc omits @authorKonstantin Fedorov2014-02-024-2/+59
| |_|_|/ / / |/| | | | |
* | | | | | Merge pull request #3424 from som-snytt/issue/7322Adriaan Moors2014-02-011-0/+11
|\ \ \ \ \ \ | | | | | | | | | | | | | | SI-7322 Interpolator idents must be encoded
| * | | | | | SI-7322 Interpolator idents must be encodedSom Snytt2014-01-291-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Otherwise, they are not found. This matters for term names with a differential encoding. Footnote, normally ident() encodes, but INTERPOLATIONID is !isIdent, so that is not used here. Maybe that would be the better improvement.
* | | | | | | Merge pull request #3441 from gourlaysama/t7124Adriaan Moors2014-02-012-0/+25
|\ \ \ \ \ \ \ | |_|_|/ / / / |/| | | | | | SI-7124 make macro definitions prettier in scaladoc
| * | | | | | SI-7124 make macro definitions prettier in scaladocAntoine Gourlay2014-01-312-0/+25
| | |_|/ / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | Macros are now prettier in scaladoc, by - hiding the `macroImpl` annotation - showing the `macro` modifier in front
* | | | | | 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-315-19/+34
|\ \ \ \ \ \ \ | |_|/ / / / / |/| | | | | | SI-8143 Regressions with override checks, private members
| * | | | | | SI-8143 Regressions with override checks, private membersJason Zaugg2014-01-145-19/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | | | | | | Merge pull request #3434 from Ichoran/issue/8213Adriaan Moors2014-01-301-0/+12
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | SI-8213 AnyRefMap.getOrElseUpdate is faulty
| * | | | | | | SI-8213 AnyRefMap.getOrElseUpdate is faultyRex Kerr2014-01-301-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Altered getOrElseUpdate to be robust to the map changing out from under it as a result of calling the default value method. Side-effects FTW! Made a comparable change in LongMap also, as it was also affected. And added a test to SetMapConsistencyTest.
* | | | | | | | Merge pull request #3416 from retronym/topic/any-val-implicitAdriaan Moors2014-01-305-22/+42
|\ \ \ \ \ \ \ \ | |/ / / / / / / |/| | | | | | | Prohibit views targeting AnyVal
| * | | | | | | Prohibit views targeting AnyValJason Zaugg2014-01-275-22/+42
| | |/ / / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Library changes in Scala 2.10 mean that we are left with the unfortunate situation of admitting: scala> "": AnyVal res0: AnyVal = We already have explicit checks in place to prevent views targeting `AnyRef`. This commit balances this out by prohibiting `AnyVal`, as well. The enclosed test shows that this case is now prevented. If multiple implicits views are applicable, the ambiguity error is still raised; these check comes right at the end. Maybe that ought to be changed, but I don't think it matters too much. I've also disabled this prohibition under -Xsource:2.10.
* | | | | | | SI-8205 Don't include CR in lineSom Snytt2014-01-291-0/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | More penance. Extend the unit test and don't include CR in the line text. This is obvious, which shows how dangerous it is to refactor without unit tests. My very favorite bugs are off-by-one and EOL handling, followed closely by off-by-Int.MaxValue.
* | | | | | | Merge pull request #3427 from retronym/ticket/8205Jason Zaugg2014-01-291-0/+33
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Avoid long, slow march to AIIOBE in SourceFile#lineContent
| * | | | | | | SI-8205 Avoid long, slow march to AIIOBE in SourceFile#lineContentJason Zaugg2014-01-291-0/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixing a regression from SI-8015. The failure mode is kind of amusing: a while loop in `lineToString` would count all the way to `Int.MaxValue`, and integer overflow would foil a bounds check when looking for the 'LF' in 'CR'-'LF'. Given that we're not a style checker to enforce that source files end in a new-line, this commit accounts for EOF, and fixed the overflow problem too. A JUnit test exercises the bug and a few other variations of `lineContent`. While i was in the neighbourhood, I opted for a more efficient means to slice out that line.
* | | | | | | | Merge pull request #3426 from retronym/ticket/8199Grzegorz Kossakowski2014-01-291-0/+105
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | SI-8199 Account for module class suffix in -Xmax-classfile-name
| * | | | | | | | 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 #3374 from densh/si/6844-8076Jason Zaugg2014-01-296-4/+61
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | SI-6844 SI-8076 improve handling of function parameters in quasiquotes
| * | | | | | | | SI-8076 improve support for implicit argument listDenys Shabalin2014-01-162-2/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds support for construction and deconstruction of implicit argument list which was originally suggested by @cvogt. 1. Splicing vale into implicit argument list automatically adds implicit flag to them: val x = q"val x: Int" q"def foo(implicit $x)" // <=> q"def foo(implicit x: Int)" 2. One might extract implicit argument list separately from other argument lists: val q”def foo(...$argss)(implicit ..$impl)" = q"def foo(implicit x: Int) // argss is Nil, impl contains valdef for x But this doesn't require you to always extract it separatly: val q”def foo(...$argss)" = q"def foo(implicit x: Int) // argss contains valdef for x
| * | | | | | | | SI-6844 restrict splicing in parameter positionDenys Shabalin2014-01-164-2/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously were a bit too permissive on how splicing in function parameter position worked. This made confusing things like possible: val x = TermName(“x”) q”def foo($x)” Now you can either splice trees in that position (ValDefs) or you have to provide type if you splice a name.
* | | | | | | | | Merge pull request #3402 from densh/si/7275Eugene Burmako2014-01-292-16/+64
|\ \ \ \ \ \ \ \ \ | |_|/ / / / / / / |/| | | | | | | | SI-7275 allow flattening of blocks with ..$