summaryrefslogtreecommitdiff
path: root/test
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #3778 from xeno-by/topic/plugins-is-blackboxJason Zaugg2014-06-275-0/+40
|\ | | | | adds MacroPlugin.pluginsIsBlackbox
| * adds MacroPlugin.pluginsIsBlackboxEugene Burmako2014-05-225-0/+40
| | | | | | | | | | | | | | | | | | | | This is an important omission in the current macro plugin API, which was designed before the blackbox vs whitebox separation was implemented. Even if one overrides pluginsTypedMacroBody and pluginsMacroExpand, that would still be not enough to write a custom macro expander, because typedImplicit1 uses isBlackbox, which is tightly coupled with the standard way of reading/writing macro signatures.
* | Merge pull request #3780 from xeno-by/topic/rangepos-macro-argsJason Zaugg2014-06-274-0/+16
|\ \ | | | | | | macro args now correctly preserve range positions
| * | macro args now correctly preserve range positionsEugene Burmako2014-05-234-0/+16
| |/ | | | | | | | | | | | | | | Somewhen in the 2.11.0 development cycle we started duplicating macro arguments for increased robustness. What wasn't taken into account though is that Tree.duplicate destroys range positions. This commit fixes the problem. 2.10.x is unaffected by this bug, because it doesn't duplicate the args yet.
* | Merge pull request #3832 from jrudolph/w/fix-tailrecJason Zaugg2014-06-274-2/+92
|\ \ | | | | | | SI-8657 don't miss tailrec defs in more positions
| * | SI-8657 don't miss tailrec defs in more positionsJohannes Rudolph2014-06-254-2/+92
| | | | | | | | | | | | | | | | | | | | | 1) First operand of boolean expression using `&&` or `||`. Second operands of those boolean exprs were already treated specially here but handling for first operands was missing. 2) Condition of `If`. Also added a test for guards.
* | | Merge pull request #3749 from huitseeker/issue/DeprecWarningJason Zaugg2014-06-2761-71/+71
|\ \ \ | | | | | | | | SI-8185 Correct grammar for single-warning compilation run
| * | | SI-8185 Correct grammar for single-warning compilation runFrançois Garillot2014-05-1461-71/+71
| | | |
* | | | Merge pull request #3758 from gourlaysama/wip/t7372Ichoran2014-06-261-2/+2
|\ \ \ \ | | | | | | | | | | SI-7372 fix wrong insertion point for binary & linear search.
| * | | | SI-7372 fix wrong insertion point for binary & linear search.Antoine Gourlay2014-06-041-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | It should return the position the value would have if it was a part of the sequence. Somehow even the test was wrong.
* | | | | Merge pull request #3806 from clhodapp/fix/SI-6967Adriaan Moors2014-06-253-31/+67
|\ \ \ \ \ | |_|_|/ / |/| | | | SI-6967 Fix ClassTag unapply for primitives
| * | | | SI-6967 Fix ClassTag unapply for primitivesclhodapp2014-06-103-31/+67
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit fixes the behavior of ClassTag's Any-accepting unapply overload. Previously, ClassTag had overloads of unapply that accepted all of the Java primitive aliases (language-supported magic classes extending AnyVal), as well as an implementation that accepted an Any. All of the AnyVal-accepting (more specific) versions of the methods worked correctly. However, the Any-accepting version incorrectly handled these types. For example, ClassTag.Int.unapply(3) would return Some(3) (through the Int-accepting overload), while ClassTag.Int.unapply(3: Any) would return None (through the Any-accepting overload). This commit unifies these behaviors, making ClassTag.Int.unapply(3: Any) return Some(3). It accomplishes this by adding a pattern match on the type of that method's argument, which will delegate to one of the more-specifically-typed overloads if possible. It also improves the formatting of the code a bit. One thing to note (though I doubt anyone will ever do this based on this message) is that the AnyVal-subtype-accepting overloads should be removed in Scala 2.12, as they are unneeded. I placed a note to this effect into the code.
* | | | | SI-8672 Better end-of-sentence detection for ScaladocJason Zaugg2014-06-202-0/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The first sentence of a Scaladoc comment is parsed as the summary. However, this was breaking of the sentence at the first `.`, even if that was immediately followed by another character. This commit only considers a period followed by whitespace, EOL or EOF as the end of a sentence.
* | | | | Merge pull request #3797 from retronym/topic/exhaust-compoundJason Zaugg2014-06-113-0/+45
|\ \ \ \ \ | | | | | | | | | | | | SI-8631 Treat `A with Sealed` as enumerable for pattern matching
| * | | | | SI-8631 Treat `A with Sealed` as enumerable for pattern matchingJason Zaugg2014-06-103-0/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Enumerate the subtypes of sealed parent types of refinement types, and filter those that conform to the refinement type. Such types can crop up easily when LUB-bing case classes which add `Product with Serializable` to the mix.
* | | | | | Merge pull request #3781 from retronym/topic/8611Jason Zaugg2014-06-117-0/+129
|\ \ \ \ \ \ | | | | | | | | | | | | | | SI-8611 Avoid accidental patmat unification with refinement types
| * | | | | | SI-8611 Avoid accidental patmat unification with refinement typesJason Zaugg2014-06-107-0/+129
| |/ / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In the enclosed test, t8611a.scala, the patterns `O.{A, B}` were incorrect treated as equivelent by the combination of `uniqueTpForTree` and `Const.uniqueTpForTree`. `uniqueTpForTree` used `Type#narrow` to try to create a distinct type for each new pattern tree it encountered. However, narrowing a `RefinedType` does not create a distinct type as we are used to when narrowing, e.g. a class type. // Type def narrow: Type = if (phase.erasedTypes) this else { val cowner = commonOwner(this) refinedType(this :: Nil, cowner, EmptyScope, cowner.pos).narrow } // CompoundType override def narrow: Type = typeSymbol.thisType This commit creates a fresh existential type symbol rather than trying to use `narrow`. I've included a unit test to show the sublteties of narrowing refinment types.
* | | | | | Merge pull request #3777 from som-snytt/issue/5905-testJason Zaugg2014-06-101-3/+5
|\ \ \ \ \ \ | |/ / / / / |/| | | | | SI-5905 Clarify test case
| * | | | | SI-5905 Clarify test caseSom Snytt2014-05-221-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The language feature options are discovered reflectively, but it is nice to enforce that expected options are supplied. Short of that, the code string includes a rowdy postfix operator. It still does enforce that at least one option was discovered.
* | | | | | Merge pull request #3815 from retronym/topic/java8-support-2Adriaan Moors2014-06-104-104/+31
|\ \ \ \ \ \ | | | | | | | | | | | | | | Java 8 agnostism for our test suite
| * | | | | | Support Java 8 in the checkfile for neg/t6289Jason Zaugg2014-06-041-1/+1
| | | | | | |
| * | | | | | Java 6-8 agnosticism for a testJason Zaugg2014-06-043-103/+30
| | |_|/ / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Under Java 8, the output contains newly added methods in j.u.Iterator. I've created cut down, test-local versions of the relevant types to decouple.
* | | | | | Merge pull request #3818 from som-snytt/issue/repl-javap-app8Adriaan Moors2014-06-101-1/+24
|\ \ \ \ \ \ | | | | | | | | | | | | | | Java 8 support for run/repl-javap-app.check
| * | | | | | Java 8 support for run/repl-javap-app.checkSom Snytt2014-06-051-1/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Just adding the java 8 output. No attempt to finesse anything. But the partest mechanism does still need auto-update of these conditional check files, plus expression evaluation of the condition.
* | | | | | | Merge pull request #3812 from retronym/merge/2.10.x-to-2.11.x-20140604Adriaan Moors2014-06-104-1/+31
|\ \ \ \ \ \ \ | |/ / / / / / |/| | | | | | Merge 2.10.x to 2.11.x
| * | | | | | Merge remote-tracking branch 'origin/2.10.x' into ↵Jason Zaugg2014-06-044-1/+31
| |\ \ \ \ \ \ | | |/ / / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | merge/2.10.x-to-2.11.x-20140604 Conflicts: src/compiler/scala/tools/nsc/typechecker/NamesDefaults.scala
| | * | | | | SI-8596 Fix rangepos crasher with defaults, poly methodsJason Zaugg2014-05-294-1/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Regressed in SI-7915 / 3009a525b5 We should be deriving the position of the synthetic `Select` from `basefun1`, rather than `basefun`. In the new, enclosed test, the difference amounts to: new Container().typeParamAndDefaultArg[Any]() `------------ basefun1 --------------' `----------------- basefun ---------------' For monomorphic methods, these are one and the same, which is why `presentation/t7915` was working. I've extended that test to a polymorphic method to check that hyperlink resolution works.
* | | | | | | Test: classfile reading during inlining works if there is dead codeLukas Rytz2014-06-052-0/+101
| | | | | | |
* | | | | | | Make test repl-javap-app independent of precise constant pool indicesLukas Rytz2014-06-042-6/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Allows the test to pass on both backends
* | | | | | | Tone down the noise in the output of t7974Lukas Rytz2014-06-042-30/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This makes it pass under -Ybackend:GenBCode
* | | | | | | Merge pull request #3743 from ruippeixotog/issue/8553Ichoran2014-06-041-0/+16
|\ \ \ \ \ \ \ | |/ / / / / / |/| | | | | | SI-8553 WrappedArray throws exception on lastIndexWhere when index out of range
| * | | | | | SI-8553 WrappedArray throws exception on lastIndexWhere when index out of rangeRui Gonçalves2014-05-121-0/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Adds a check in `IndexedSeqOptimized#lastIndexWhere(A => Boolean, Int)` to begin searching in the end of the collection if `end` is greater than the collection's length. Discussed in https://groups.google.com/d/topic/scala-internals/-MacXivbY0Q/discussion.
* | | | | | | Merge pull request #3803 from xeno-by/ticket/8637Adriaan Moors2014-06-032-0/+9
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | SI-8637 fixes toolbox phase corruption
| * | | | | | | SI-8637 fixes toolbox phase corruptionEugene Burmako2014-05-302-0/+9
| | |_|_|_|_|/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It turns out, Toolbox.typecheck hasn't been properly re-initializing its state between requests. In particular, globalPhase was left untouched, which made the compiler think that it's past typer, and that in turn disabled implicits. This commit applies a symptomatic fix to this problem.
* | | | | | | Merge pull request #3796 from som-snytt/issue/8630Adriaan Moors2014-06-033-0/+13
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | SI-8630 lineToString no longer long by one at eof
| * | | | | | | SI-8630 lineToString no longer long by one at eofSom Snytt2014-05-273-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | One more EOL crasher, or lack-of-EOL crasher, when the text is at EOF. It was not caught by the last round of excellent and thorough tests because ``` // If non-whitespace tokens run all the way up to EOF, // positions go wrong because the correct end of the last // token cannot be used as an index into the char array. // The least painful way to address this was to add a // newline to the array. ```
* | | | | | | | Merge pull request #3795 from som-snytt/issue/8475Adriaan Moors2014-06-031-0/+8
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | SI-8475 GroupedIterator is also lazy when padded
| * | | | | | | | SI-8475 GroupedIterator is also lazy when paddedSom Snytt2014-05-271-0/+8
| |/ / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is the related case which dnlgtm in the previous fix. The old code seems to be tilting for laziness, but we have to fill the buffer with the current group anyway, so there is no reason to be coy about calling ArrayBuffer.length.
* | | | | | | | Merge pull request #3774 from lrytz/opt/backendWipLukas Rytz2014-06-013-6/+210
|\ \ \ \ \ \ \ \ | |_|_|_|_|_|/ / |/| | | | | | | More type safe implementation of BType, cleanups in GenBCode
| * | | | | | | Unit tests for reflect/internal/NamesLukas Rytz2014-06-011-0/+95
| | | | | | | |
| * | | | | | | Unit tests for new BType classesLukas Rytz2014-06-012-6/+115
| | |_|_|_|/ / | |/| | | | |
* | | | | | | Merge pull request #3770 from retronym/ticket/8607Grzegorz Kossakowski2014-05-292-8/+41
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | SI-8607 Fix erasure for value class inheriting from private class
| * | | | | | | SI-8607 Generalize previous change to preEraseJason Zaugg2014-05-211-8/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In the previous commit, we avoided an awkward chain of casts by exploiting the knowledge that Scala defined classes will by JVM accessible, and as such immune to `LinkageError`s when used as the target of a cast. This commit generalized this to the entire fix for SI-4283, rather than just for derived value classes.
| * | | | | | | SI-8607 Fix erasure for value class inheriting from private classJason Zaugg2014-05-211-0/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The fix for SI-4283 added a pre-emptive cast of the qualifier of a selection `qual.a` to avoid later casting to the owner of `a` if that owner might be inaccessible at the call site. This fixed a `LinkageError`. In the enclosed test, this cast led to the following diff in the tree shapes (with respect to a version with a public base class). [erasure] - new p1.C.<init>(c.$asInstanceOf[scala.this.Int]()).a(); + new p1.C.<init>(new p1.C.<init>(c.$asInstanceOf[scala.this.Int]()).$asInstanceOf[ErasedValueType( class C, scala.this.Int)]().$asInstanceOf[scala.this.Int]()).a(); [posterasure] - new p1.C.<init>(c).a(); + new p1.C.<init>(new p1.C.<init>(c).$asInstanceOf[scala.this.Int]().$asInstanceOf[scala.this.Int]()) .a(); () What we really wanted to end up with is: new p1.C.<init>(c).$asInstanceOf[C]().a(); The stray cast leads to the crash: error: should have been unboxed by erasure: new p1.C.<init>(c).$asInstanceOf[scala.this.Int]() Rather than trying to fix this in erasure/posterasure, this commit instead relies on the fact the owner of `a` cannot be Java defined if `qual`s type is a derived value class. This follows from the restrictions we place on value classes. With this knowledge, we elide the cast altogether in this case.
* | | | | | | | Merge pull request #3791 from S11001001/ticket/8346Ichoran2014-05-292-0/+40
|\ \ \ \ \ \ \ \ | |_|_|/ / / / / |/| | | | | | | SI-8346 Rebuild invariant sets in #toSet, avoiding CCE
| * | | | | | | SI-8346: Rebuild invariant sets in #toSet, avoiding CCE.Stephen Compall2014-05-242-0/+40
| | |/ / / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | SI-3953 caused several types of sets' operations to trivially throw `ClassCastException` after using inherited covariant #toSet method, by doing an unchecked cast that is only safe for intrinsically covariant set data structures like `HashSet`, but totally unsafe for others like `TreeSet` or `Enumeration.ValueSet`. This change moves the cast to the leaves of the class hierarchy where that is safe, and incidentally undeprecates overriding Set#toSet.
* | | | | | | Merge pull request #3733 from retronym/topic/pr-3712-resubmitJason Zaugg2014-05-271-0/+20
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | SI-8475 Fix off by one in GroupedIterator when Streaming
| * | | | | | | SI-8475 Fix off by one in GroupedIterator when StreamingJean-Remi Desjardins2014-05-091-0/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This also affected sliding and grouped since they defer to GroupedIterator
* | | | | | | | Merge pull request #3794 from lrytz/t8625Jason Zaugg2014-05-271-0/+5
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | SI-8625 fix unreachability analysis for boolean expressions
| * | | | | | | | SI-8625 fix unreachability analysis for boolean expressionsLukas Rytz2014-05-271-0/+5
| | | | | | | | |