summaryrefslogtreecommitdiff
path: root/test/files/run
Commit message (Collapse)AuthorAgeFilesLines
* SI-6591 Reify and path-dependent typesDmitry Bushev2013-02-0812-4/+113
| | | | | | | | | | | | | | | | | | | | | | | | | Reification scheme changed. Now Select an SelectFromTypeTree trees reified appropriately, as Select and SelectFromTypeTree accordingly. Packages and Predef object was excluded in order not to break the existing reification scheme and not to break tests which rely on it. Reified free terms can contain flag <stable> to make reified values become stable identifiers. For example in the case of reify_newimpl_15.scala class C { type T reify { val v: List[T] = List(2) } } class C reified as free term C$value, and List[C.T] becomes List[C$value().T], so C$value.apply() need to pass stability test isExprSafeToInline at scala.reflect.internal.TreeInfo. For this purpose special case for reified free terms was added to isExprSafeToInline function. test run/reify_newipl_30 disabled due to SI-7082 test t6591_4 moved to pending due to SI-7083
* Merge pull request #2035 from scalamacros/ticket/6989Eugene Burmako2013-02-083-0/+299
|\ | | | | SI-6989 privateWithin is now populated in reflect
| * introduces an exhaustive java-to-scala testEugene Burmako2013-02-053-17/+262
| | | | | | | | | | | | | | | | | | | | Originally composed to accommodate pull request feedback, this test has uncovered a handful of bugs in FromJavaClassCompleter, namely: * SI-7071 non-public ctors get lost * SI-7072 inner classes are read incorrectly I'm leaving the incorrect results of FromJavaClassCompleters in the check file, so that we get notified when something changes there.
| * SI-6989 privateWithin is now populated in reflectEugene Burmako2013-02-043-0/+54
| | | | | | | | | | Runtime reflection in JavaMirrors previously forgot to fill in privateWithin when importing Java reflection artifacts. Now this is fixed.
* | Merge pull request #2085 from scalamacros/ticket/5824Eugene Burmako2013-02-082-0/+9
|\ \ | | | | | | SI-5824 Fix crashes in reify with _*
| * | SI-5824 Fix crashes in reify with _*Evgeny Kotelnikov2013-02-072-0/+9
| | | | | | | | | | | | Reification crashes if "foo: _*" construct is used. This happens besause type tree is represented either with TypeTree, or with Ident (present case), and `toPreTyperTypedOrAnnotated' only matches of the former. The fix is to cover the latter too. A test is included.
* | | Merge pull request #2093 from adriaanm/ticket-6961James Iry2013-02-072-82/+0
|\ \ \ | | | | | | | | SI-6961 no structural sharing in list serialization
| * | | SI-6961 no structural sharing in list serializationAleksandar Prokopec2013-02-072-82/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Revert list serialization back to what it was in 2.9.x and before. Partial revert of a6fcd70b60 e234978dfd, which fixed SI-5374. The ListBuffer part of the fix remains in place.
* | | | Merge pull request #2090 from adriaanm/rebase-pr-2011James Iry2013-02-074-25/+55
|\ \ \ \ | | | | | | | | | | SI-6187 Make partial functions re-typable
| * | | | SI-6187 Make partial functions re-typableJason Zaugg2013-02-074-25/+55
| |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - `New(tpe)` doesn't survive a `resetAttrs` / typecheck; use a name instead. - Abandon the tree attachment that passed the default case from `typer` to `patmat`; this tree eluded the attribute reset performed in the macro. Instead, add it to the match. Apart from making the tree re-typable, it also exposes the true code structure to macros, which is important if they need to perform other code transformations. - Install original trees on the declared types of the parameters of the `applyOrElse` method to ensure that references to them within the method pick up the correct type parameter skolems upon retypechecking. - Propagate `TypeTree#original` through `copyAttrs`, which is called during tree duplication / `TreeCopiers`. Without this, the original trees that we installed were not visible anymore during `ResetAttrs`. We are not able to reify partial functions yet -- the particular sticking point is reification of the parentage which is only available in the `ClassInfoType`.
* | | | Merge pull request #2088 from retronym/ticket/6146James Iry2013-02-072-0/+91
|\ \ \ \ | | | | | | | | | | SI-6146 More accurate prefixes for sealed subtypes.
| * | | | SI-6146 More accurate prefixes for sealed subtypes.Jason Zaugg2013-02-072-0/+91
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When analysing exhaustivity/reachability of type tests and equality tests, the pattern matcher must construct a set of sealed subtypes based on the prefix of the static type of and the set of sealed descendent symbols of that type. Previously, it was using `memberType` for this purpose. In simple cases, this is sufficient: scala> class C { class I1; object O { class I2 } }; object D extends C defined class C defined module D scala> typeOf[D.type] memberType typeOf[C#I1].typeSymbol res0: u.Type = D.I1 But, as reported in this bug, it fails when there is an additional level of nesting: scala> typeOf[D.type] memberType typeOf[c.O.I2 forSome { val c: C }].typeSymbol res5: u.Type = C.O.I2 This commit introduces `nestedMemberType`, which uses `memberType` recursively up the prefix chain prefix chain. scala> nestedMemberType(typeOf[c.O.I2 forSome { val c: C }].typeSymbol, typeOf[D.type], typeOf[C].typeSymbol) res6: u.Type = D.O.Id
* | | | | Merge pull request #2084 from scalamacros/ticket/6113Adriaan Moors2013-02-072-0/+7
|\ \ \ \ \ | | | | | | | | | | | | SI-6113 typeOf now works for type lambdas
| * | | | | SI-6113 typeOf now works for type lambdasEugene Burmako2013-02-072-0/+7
| | |_|/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It's not a problem to have an abstract type symbol in a ground type tag if that symbol is defined in the type being reified. This mechanics was already built in for existentials, now we extend it to include type params of poly types. Credit goes to @katefree
* | | | | Merge pull request #2069 from retronym/ticket/6888James Iry2013-02-072-0/+22
|\ \ \ \ \ | |_|_|/ / |/| | | | SI-6888 Loosen criteria for $outer search.
| * | | | SI-6888 Loosen criteria for $outer search.Jason Zaugg2013-02-052-0/+22
| | |/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In order to cater for nested classes with names that end with '$', which lead to ambiguity when unmangling expanded names. In: class X { object $ } We end up with: orginalName(X$$$$$outer) = $$$outer This change modifies `outerSource` to consider that to be and outer accessor name. It is a piecemeal fix, and no doubt there are other nasty surprises in store for those inclined to flash their $$$ in identifier names, but the method changed is not used widely and this solves the reported problem. SI-2806 remains open to address the deeper problem.
* | | | Merge pull request #2068 from scalamacros/ticket/7064Adriaan Moors2013-02-077-32/+80
|\ \ \ \ | | | | | | | | | | [nomaster] SI-7064 Reflection: forward compat for 2.10.1
| * | | | [nomaster] verifies compat with 2.10.0Eugene Burmako2013-02-052-0/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Makes sure that the compiler understands the 2.10.0 format of super constructor calls after the recent revert from the typemacro-compatible format.
| * | | | [nomaster] Revert "refactors handling of parent types"Eugene Burmako2013-02-051-18/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 40063b0009d55ed527bf1625d99a168a8faa4124. Conflicts: src/compiler/scala/tools/nsc/ast/parser/Parsers.scala src/compiler/scala/tools/nsc/typechecker/Typers.scala
| * | | | [nomaster] Revert "introduces global.pendingSuperCall"Eugene Burmako2013-02-054-14/+14
| | |/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 0ebf72b9498108e67c2133c6522c436af50a18e8. Conflicts: src/compiler/scala/tools/nsc/typechecker/Typers.scala src/reflect/scala/reflect/internal/Trees.scala
* | | | [nomaster] Revert "SI-5017 Poor performance of :+ operator on Arrays"James Iry2013-02-062-15/+0
| |/ / |/| | | | | | | | This reverts commit 02b2da63409af6a28824cbb74d00d0ec04518c8d.
* | | Merge pull request #2051 from adriaanm/ticket-7039Adriaan Moors2013-02-042-0/+12
|\ \ \ | | | | | | | | SI-7039 unapplySeq result type independent of subpattern count
| * | | SI-7039 unapplySeq result type independent of subpattern countAdriaan Moors2013-02-012-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes a bug in the implementation of the `unapplySeq` part of the spec below. An `unapply` method with result type `R` in an object `x` matches the pattern `x(p_1, ..., p_n)` if it takes exactly one argument and, either: - `n = 0` and `R =:= Boolean`, or - `n = 1` and `R <:< Option[T]`, for some type `T`. The argument pattern `p1` is typed in turn with expected type `T`. - Or, `n > 1` and `R <:< Option[Product_n[T_1, ..., T_n]]`, for some types `T_1, ..., T_n`. The argument patterns `p_1, ..., p_n` are typed with expected types `T_1, ..., T_n`. An `unapplySeq` method in an object `x` matches the pattern `x(p_1, ..., p_n)` if it takes exactly one argument and its result type is of the form `Option[S]`, where either: - `S` is a subtype of `Seq[U]` for some element type `U`, (set `m = 0`) - or `S` is a `ProductX[T_1, ..., T_m]` and `T_m <: Seq[U]` (`m <= n`). The argument patterns `p_1, ..., p_n` are typed with expected types `T_1, ..., T_m, U, ..., U`. Here, `U` is repeated `n-m` times.
* | | | Merge pull request #2040 from scalamacros/ticket/7008Adriaan Moors2013-02-0419-5/+203
|\ \ \ \ | |_|/ / |/| | | SI-7008 @throws annotations are now populated in reflect
| * | | reflecting @throws defined in Scala codeEugene Burmako2013-02-044-0/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As per Jason's comment: How are Scala classes containing @throws annots treated? I can't figure out whether we pickle the annotation in addition to adding the exception to the signature. If we do, might we end up with duplicate annotations in runtime reflection? This warrants a test. See the context of the discussion here: https://github.com/scala/scala/pull/2040/files#r2874769. No, we won't end up with duplicates, because classes defined in Scala are loaded in a different completer. But I'll add a test - you can never have too many of those.
| * | | evicts javac-artifacts.jarEugene Burmako2013-02-0114-7/+141
| | | | | | | | | | | | | | | | | | | | | | | | Apparently, the usual _1, _2, _3... naming scheme also works for java files, which need to be compiled together with partests. This allows us to get rid of javac-artifacts.jar.
| * | | SI-7008 @throws annotations are now populated in reflectEugene Burmako2013-02-013-0/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Runtime reflection in JavaMirrors previously forgot to fill in @throws when importing Java reflection artifacts. Now this is fixed. Note that generic exception types used in `throws` specifications will be garbled (i.e. erased), because we don't use `getGenericExceptionTypes` in favor of just `getExceptionTypes` to stay compatible with the behavior of ClassfileParser. That's a bug, but a separate one and should be fixed separately. Also note that this commit updated javac-artifacts.jar, because we need to test how reflection works with javac-produced classfiles. The sources that were used to produce those classfiles can be found in the jar next to the classfiles.
* | | | Merge pull request #2001 from JamesIry/2.10.x_SI-5313Grzegorz Kossakowski2013-02-042-0/+66
|\ \ \ \ | | | | | | | | | | SI-5313 Do not eliminate stores that potentially wipe referenes
| * | | | SI-5313 Test clobbers on the back edge of a loopJames Iry2013-02-022-2/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I realized I was missing a test case for a local store early in a loop that was unused but turned out to be a clobber of a store later in the loop.
| * | | | SI-5313 Eliminate more stores by replacing clobbers with null storesJames Iry2013-01-302-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When an unused store clobbers a previous store, replace it with storing a null. Don't mark clobbers as "used" so that the original clobber and all following clobbers can still be eliminated.
| * | | | SI-5313 Do not eliminate stores that potentially wipe referenesJames Iry2013-01-282-0/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Storing to local variables of reference or array type is indirectly observable because it potentially allows gc to collect an object. So this commit makes DeadCodeElimination mark a store necessary if it assigns to a local that potentially stored by a previous necessary store.
* | | | | Merge pull request #2039 from scalamacros/ticket/7046Eugene Burmako2013-02-042-0/+15
|\ \ \ \ \ | | | | | | | | | | | | SI-7046 reflection now auto-initializes knownDirectSubclasses
| * | | | | SI-7046 reflection now auto-initializes knownDirectSubclassesEugene Burmako2013-01-312-0/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | knownDirectSubclasses joins the happy family of flags, annotations and privateWithin, which automatically trigger initialization, when used within runtime reflection.
* | | | | | Merge pull request #2022 from lrytz/analyzerPlugins210Lukas Rytz2013-02-035-1/+344
|\ \ \ \ \ \ | | | | | | | | | | | | | | Analyzer Plugins
| * | | | | | Analyzer PluginsLukas Rytz2013-02-032-0/+318
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | AnnotationCheckers are insufficient because they live outside the compiler cake and it's not possible to pass a Typer into an annotation checker. Analyzer plugins hook into important places of the compiler: - when the namer assigns a type to a symbol (plus a special hook for accessors) - before typing a tree, to modify the expected type - after typing a tree, to modify the type assigned to the tree Analyzer plugins and annotation checker can be activated only during selected phases of the compiler. Refactored the CPS plugin to use an analyzer plugin (since adaptToAnnotations is now part of analyzer plugins, no longer annotation checkers).
| * | | | | | SI-1803, plus documentation and cleanups in Namers, mainly in typeSigLukas Rytz2013-02-032-0/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - when typing (and naming) a ValDef, tpt and rhs are now type checked in the same context (the inner / ValDef context). this does not change any behavior, but is more uniform (same as for DefDef). martin told me (offline) that this change is desirable if it doesn't break anything. (it doesn't). - typeSig is now more uniform with a separate method for each case (methodSig, valDefSig, etc). methodSig was cleaned up (no more variables) and documented. the type returned by methodSig no longer contains / refers to type skolems, but to the actual type parameters (so we don't need to replace the skolems lateron). - documentation on constructor contexts, type skolems - more tests for SI-5543
| * | | | | | case module toString is syntheticLukas Rytz2013-02-031-1/+1
| | | | | | |
* | | | | | | Merge pull request #2033 from adriaanm/patmat-optAdriaan Moors2013-02-033-120/+110
|\ \ \ \ \ \ \ | |/ / / / / / |/| | | | | | pattern matching efficiency: addresses SI-6686 and SI-6941, affects SI-5739
| * | | | | | SI-6686 drop valdef unused in flatMapCond's blockAdriaan Moors2013-01-312-73/+69
| | | | | | |
| * | | | | | don't store subpats bound to underscoreAdriaan Moors2013-01-311-8/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-311-103/+103
| |/ / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 #1979 from retronym/backport/1499James Iry2013-02-012-0/+41
|\ \ \ \ \ \ | | | | | | | | | | | | | | [backport] Fix for SI-6206, inconsistency with apply.
| * | | | | | [backport] Fix for SI-6206, inconsistency with apply.Jason Zaugg2013-01-262-0/+41
| | |_|_|_|/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Squashed commit of the following: commit f6bbf85150cfd7e461989ec1d6765ff4b4aeba51 Author: Paul Phillips <paulp@improving.org> Date: Mon Oct 1 09:10:45 2012 -0700 Fix for SI-6206, inconsistency with apply. The code part of this patch is 100% written by retronym, who apparently has higher standards than I do because I found it just lying around in his repository. I think I'll go pick through his trash and see if he's throwing away any perfectly good muffins. I made the test case more exciting so as to feel useful. (cherry picked from commit 267650cf9c3b07e360a59f3c5b70b37fea9de453)
* | | | | | Merge pull request #2026 from JamesIry/2.10.x_SI-2818Grzegorz Kossakowski2013-02-012-0/+10
|\ \ \ \ \ \ | |_|_|_|_|/ |/| | | | | SI-2818 Makes List#foldRight work for large lists
| * | | | | SI-2818 Make List.foldRight always do a reverse/foldLeft flipJames Iry2013-01-312-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Benchmarks show that lists smaller than 110 elements or so doing reverse/foldLeft is faster than recursively walking to the end of the list and then folding as the stack unwinds. Above that 110 element threshold the recursive procedure is faster. Unfortunately, at some magic unknown large size the recursive procedure blows the stack. This commit changes List#foldRight to always do reverse/foldLeft.
* | | | | | Merge pull request #2043 from lrytz/t3353Adriaan Moors2013-02-012-0/+11
|\ \ \ \ \ \ | | | | | | | | | | | | | | SI-3353 don't extract <unapply-selector> into named-arg local val
| * | | | | | SI-3353 don't extract <unapply-selector> into named-arg local valLukas Rytz2013-01-312-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This already fixes all of SI-3353 because no named-args-block is generated anymore (they are avoided if they have a single expr). So the same NPE in extractorFormalTypes as described in the ticket is no longer triggered. I think that's all there is to fix, since extractor patterns are translated to unapply calls with one argument, i think it's not possible to write a pattern that would result in a named-apply block.
* | | | | | | Merge pull request #1960 from ViniciusMiana/2.10.xJames Iry2013-02-011-0/+18
|\ \ \ \ \ \ \ | |_|_|_|_|_|/ |/| | | | | | SI-6853 changed private method remove to be tail recursive.
| * | | | | | SI-6853 changed private method remove to be tail recursive.Vinicius Miana2013-01-251-0/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Operations += and -= on mutable.ListMap rely on the private method remove to perform. This methods was implemented using recursion, but it was not tail recursive. When the ListMap got too big the += caused a StackOverflowError.
* | | | | | | Merge pull request #2015 from paulp/rc1-backportsPaul Phillips2013-01-317-0/+119
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | 10 backports