summaryrefslogtreecommitdiff
path: root/test/files/pos
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #634 from retronym/ticket/4579Adriaan Moors2012-05-302-0/+519
|\ | | | | SI-4579 Yoke the power of lisp.scala as a stress for the optimizer.
| * SI-4579 Yoke the power of lisp.scala as a stress for the optimizer.Jason Zaugg2012-05-272-0/+519
| | | | | | | | The reported bug was fixed between 2.10.0-M1 and 2.10.0-M2.
* | Merge pull request #635 from adriaanm/topic/virtpatmatAdriaan Moors2012-05-281-1/+11
|\ \ | | | | | | fixes for exhaustivity
| * | don't check exhaustivity involving user-defined unapplySeqAdriaan Moors2012-05-281-1/+11
| |/
* | Merge pull request #633 from retronym/topic/value-class-bridgeAdriaan Moors2012-05-273-0/+19
|\ \ | |/ |/| Fix a NSDNHAO in extension methods.
| * Fix a NSDNHAO in extension methods.Jason Zaugg2012-05-273-0/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A bridge method, created when we override a method from a superclass and refine the return type, was appearing as an overloaded alternative. (`erasure` doesn't create new scopes, so the bridges it builds are visible at earlier phases.) The problem was masked when compiling with specialization, which *does* create a new scope, shielding the code in question from the artefacts of erasure. To fix the problem, we filter out bridge methods from the overloaded alternatives returned by `.decl`, as would happen internally in `.member`.
* | Orphan checkfile remover.Paul Phillips2012-05-262-2/+0
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Are these -msil checkfiles used in some secret fashion? The level of activity suggest otherwise. Since scala-nightly-msil has been disabled for over a year, it's an easy rm unless someone speaks up. % tools/rm-orphan-checkfiles Scanning for orphan check files... rm 'test/disabled/run/code.check' rm 'test/files/jvm/t1652.check' rm 'test/files/neg/macro-argtype-mismatch.check' rm 'test/files/neg/macro-noncompilertree.check' rm 'test/files/neg/macro-nontree.check' rm 'test/files/run/Course-2002-01-msil.check' rm 'test/files/run/Course-2002-02-msil.check' rm 'test/files/run/Course-2002-03-msil.check' rm 'test/files/run/Course-2002-04-msil.check' rm 'test/files/run/Course-2002-08-msil.check' rm 'test/files/run/Course-2002-09-msil.check' rm 'test/files/run/Course-2002-10-msil.check' rm 'test/files/run/absoverride-msil.check' rm 'test/files/run/bitsets-msil.check' rm 'test/files/run/boolord-msil.check' rm 'test/files/run/bugs-msil.check' rm 'test/files/run/impconvtimes-msil.check' rm 'test/files/run/infix-msil.check' rm 'test/files/run/iq-msil.check' rm 'test/files/run/macro-invalidret-doesnt-conform-to-impl-rettype.check' rm 'test/files/run/macro-rettype-mismatch.check' rm 'test/files/run/misc-msil.check' rm 'test/files/run/promotion-msil.check' rm 'test/files/run/richs-msil.check' rm 'test/files/run/runtime-msil.check' rm 'test/files/run/tuples-msil.check' rm 'test/pending/jvm/t1464.check' rm 'test/pending/run/subarray.check' rm 'test/pending/run/t0446.check' rm 'test/pending/run/t5629.check' Scanning for orphan flags files... rm 'test/files/neg/macro-argtype-mismatch.flags' rm 'test/files/neg/macro-noncompilertree.flags' rm 'test/files/neg/macro-nontree.flags' rm 'test/files/pos/anyval-children.flags' rm 'test/files/pos/t3097.flags' rm 'test/files/run/macro-invalidret-doesnt-conform-to-impl-rettype.flags' rm 'test/files/run/macro-rettype-mismatch.flags'
* Merge pull request #612 from adriaanm/ticket/5829Adriaan Moors2012-05-261-0/+18
|\ | | | | fix SI-5829: refinement typeref has a prefix
| * fix SI-5829: refinement typeref has a prefixAdriaan Moors2012-05-241-0/+18
| |
* | Merge pull request #630 from retronym/ticket/5041Adriaan Moors2012-05-261-0/+9
|\ \ | | | | | | Test case closes SI-5041.
| * | Test case closes SI-5041.Jason Zaugg2012-05-261-0/+9
| |/
* / Test case closes SI-4911.Jason Zaugg2012-05-262-0/+17
|/ | | | The unchecked warning departed sometime between 4afae5be...278a225.
* Widen types in names/defaults transformations.Paul Phillips2012-05-232-0/+14
| | | | | | | | We were getting away with this somehow, but the types are wrong after typer and that sort of thing is noticed by more people now. I took the opportunity to add our first -Ycheck:all test, which is at least as much about helping -Ycheck:all remain in good working order as it is about this test.
* Pending and passing tests.Paul Phillips2012-05-231-0/+11
| | | | | | | | Move now-passing SI-963 test into neg. Test for partial specialization. Pending test for SI-5008. Pending test for SI-4649. Abstract array type test.
* Relax -Xlint warning for implicit classes. Closes SI-5809.Paul Phillips2012-05-232-0/+11
|
* Merge pull request #601 from adriaanm/3f7b8b58748eb70aec4269f1ef63853b5ad4af60Adriaan Moors2012-05-238-50/+76
|\ | | | | virtpatmat: treemaker approximation refactorings and exhaustivity
| * Exhaustivity: TreeMakers as boolean propositionsAdriaan Moors2012-05-227-31/+76
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We check exhaustivity by representing a match as a formula in finite-domain propositional logic (FDPL) that is false when the match may fail. The variables in the formula represent tested trees in the match (type tests/value equality tests). The approximation uses the same framework as the CSE analysis. A matrix of tree makers is turned into a DAG, where sharing represents the same value/type being tested. We reduce FDPL to Boolean PL as follows. For all assignments, V_i = c_i_j, we introduce a proposition P_i_j that is true iff V_i is equal to the constant c_i_j, for a given i, and all j, P_i_j are mutually exclusive (a variable cannot have multiple values). If the variable's domain is closed, we assert that one of P_i_j must be true for each i and some j. The conjunction of these propositions constitutes the equality axioms. After going through negational normal form to conjunctive normal form, we use a small SAT solver (the DPLL algorithm) to find a model under which the equational axioms hold but the match fails. The formula: EqAxioms /\ -MatchSucceeds. Note that match failure expresses nicely in CNF: the negation of each case (which yields a disjunction) is anded. We then turn this model into variable assignments (what's the variable (not) equal to, along with recursive assignments for its fields). Valid assignments (no ill-typed field assignments) are then presented to the user as counter examples. A counter example is a value, a type test, a constructor call or a wildcard. We prune the example set and only report the most general examples. (Finally, we sort the output to yield stable, i.e. testable, warning messages.) A match is only checked for exhaustivity when the type of the selector is "checkable" (has a sealed type or is a tuple with at least one component of sealed type). We consider statically known guard outcomes, but generally back off (don't check exhaustivity) when a match has guards or user-defined extractor calls. (Sometimes constant folding lets us statically decide a guard.) We ignore possibly failing null checks (which are performed before calling extractors, for example), though this could be done easily in the current framework. The problem is false positives. People don't usually put nulls in tuples or lists. To improve the exhaustivity checks, we rewrite `List()` to Nil. TODO: more general rewrite of List(a, b, ..., z) to `a :: b :: ... :: z`. When presenting counter examples, we represent lists in the user-friendly List(a,...,z) format. (Similarly for tuples.) There are no exhaustivity checks for a match-defined PartialFunction. misc notes: - fix pure case of dpll solver impure set (symbol that occurs both as a positive and negative literal) was always empty since I was looking for literals (which are not equal if positivity is not equal) but should have been looking for symbols - FDPL -> BoolPL translation collects all syms in props since propForEqualsTo generates an Or, must traverse the prop rather than assuming only top-level Syms are relevant... also, propForEqualsTo will not assume Or'ing a whole domain is equivalent to True (which it isn't, since the type test may fail in general) - improve counter example description - treat as constructor call when we either have definite type information about a real class, or we have no equality information at all, but the variable's type is a class and we gathered constraints about its fields (typically when selector is a tuple) - flatten a :: b :: ... :: Nil to List(a, b, ...) - don't print tuple constructor names, so instead of "Tuple2(a, b)", say "(a, b)" - filter out more statically impossible subtypes the static types convey more information than is actually checkable at run time this is good, as it allows us to narrow down the subtypes of a sealed type, however, when modeling the corresponding run-time checks we need to "erase" the uncheckable parts (using existentials so that the types are still well-kinded), so that we can use static subtyping as a sound model for dynamic type checks - experimental java enum handling seals enum class before, we created a refinement class as the placeholder for the sealed children it seems more direct to use the enum class for that this way, the new pattern matcher's exhaustiveness checker just works for java enums
| * TreeMaker approximation refactorings and bug fixesAdriaan Moors2012-05-221-19/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - TypeTestTreeMaker subsumes the old TypeTestTM and TypeAndEqualityTM its type- and equality-testing logic is configurable so that it can: - generate trees (main purpose) - check whether this tree maker is a pure type test - generate the proposition that models this tree maker (for exhaustivity and other analyses) - [CSE] subst binders of dropped tm's to stored ones somehow the refactoring broke the replacement of the binder of dropped treemakers by the binder of the reused treemaker when replacing TM1(x1 => ...) >> TM2(x2 => ...) >> TM3(x3 => ...) >> ... TM1'(x1' => ...) >> TM2'(x2' => ...) >> TM3(x3' => ...) >> ... by Memo1(x1 => ...) >> TM2(x2 => ...) >> Memo2(x3 => ...) >> ... Reuse(Memo2)... you need to replace x1' and x2' by x1 since TM2 tested a shared condition but was not memo-ised, that implies it simply passed x1 through to x3 unmodified, and x2' can simply use the stored x1 - type of first uniqued binder sets type of tree when approximating a tree of treemakers as a DAG, where sharing indicates the same value is tested, use the type of the binder that was first used to create a unique tree as the type of that tree, and thus all trees used for the same binder in the future - track substitution of alternatives when approximating - error on unswitchable @switch annotated matches if we can't turn a match (with more than two cases) into a switch, but the user insists, emit an error misc notes: - when all you need is nextBinder, FunTreeMaker is your guy - must pass flag to TypeTestTM for extractorarg test case TypeTestTreeMaker(prevBinder, testedBinder, expectedTp, nextBinderTp) (prevBinder eq testedBinder) does not imply it's a pure type test for an extractor call note that the expected type for an extractor argument is not a type pattern, thus we only do a classic type test -- the idea was to detect that case by noticing we're being called with the same previous and tested binder, but that case also arises for Typed patterns
* | Merge pull request #599 from som-snytt/ticket/5779-numeq-warnAdriaan Moors2012-05-221-0/+13
|\ \ | | | | | | SI-5779: Wrong warning message (comparing Number)
| * | SI-5779: Wrong warning message (comparing values of types Float/Double and ↵Som Snytt2012-05-211-0/+13
| |/ | | | | | | | | | | Number using `==' will always yield false) BoxesRuntime knows how to compare java.lang.Number, so we must not warn.
* | Merge pull request #592 from retronym/ticket/4975Adriaan Moors2012-05-221-0/+12
|\ \ | | | | | | Consider method-scoped companions in the implicit scope.
| * | Consider method-scoped companions in the implicit scope.Jason Zaugg2012-05-211-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes SI-4975. I'll reproduce a relevant snippet of dialogue from Namers#companionSymbolOf: /** The companion class or companion module of `original`. * Calling .companionModule does not work for classes defined inside methods. * * !!! Then why don't we fix companionModule? Does the presence of these * methods imply all the places in the compiler calling sym.companionModule are * bugs waiting to be reported? If not, why not? When exactly do we need to * call this method? */ def companionSymbolOf(original: Symbol, ctx: Context): Symbol = { This was one such bug.
* | | Merge pull request #588 from retronym/ticket/5305Adriaan Moors2012-05-222-0/+14
|\ \ \ | | | | | | | | Don't hop to the first enclosing, non-silent context typing refinements
| * | | Don't hop to the first enclosing, non-silent context when typing refinements.Jason Zaugg2012-05-062-0/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Closes SI-5305. This reverts a few lines of e5cfe47a19, which was a remedy for SI-3614 and SI-3856*. I added a test case for the former, the latter was already tested. Both tests pass after this change, and they do so with the old and new pattern matcher. But does this change still "avoid trees with null types in presentation compiler"? What was the intent of the context hopping in the first place? * Based on this comment: https://issues.scala-lang.org/browse/SI-3614?focusedCommentId=50477&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-50477, which elaborates further than the commit comment of e5cfe47a19.
* | | | SI-2405 Confer implicit privileges to renamed imports.Jason Zaugg2012-05-221-0/+23
| |_|/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Yin and yang would be pleased: A fix in two parts. 1. Use the name of the imported symbol, rather than the alias, in the generated `Select(qual, name)` tree. 2. Do the opposite in `isQualifyingImplicit`, which performs one part of the shadowing check. But there is still work to do. The second part of the shadowing check, `nonImplicitSynonymInScope`, fails to notice this case (irrespective of aliased imports). // Expecting shadowing #2. Alas, none is cast! object Test1 { object A { implicit val x: Int = 1 } import A.x def x: Int = 0 implicitly[Int] } I'm hitching the residual problem to SI-4270's wagon.
* | | Merge pull request #591 from retronym/ticket/3888Adriaan Moors2012-05-211-0/+16
|\ \ \ | | | | | | | | Test case closes SI-3880.
| * | | Test case closes SI-3880.Jason Zaugg2012-05-201-0/+16
| | |/ | |/| | | | | | | virtpatmat ftw.
* | | Merge pull request #576 from axel22/issue/4717Adriaan Moors2012-05-211-0/+35
|\ \ \ | |/ / |/| | | | | Fix SI-4717: lazy val declared inside an anonymous class inside a specialized context no longer crashes Duplicators.
| * | Fixes SI-4717.Aleksandar Prokopec2012-05-181-6/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A lazy val declared inside an anonymous class inside a specialized context no longer crashes Duplicators. Previously, a duplicated lazy val was assigned to the wrong owner in Duplicators: def x[B >: A]: Unit = new Bounds[B] { lazy val it = ??? // def or val okay } Above, the `it` in `$anon` in `x$mcZ$sp` had its owner set to `x$mcZ$sp` instead of `$anon`. This crashed the typer when it had to retype its lazy accessor, because there was no `lazy var it` in `$anon$`. Furthermore, the duplicated symbol wasn't being added to the list of declarations of `$anon`. Changes: 1) `invalidate` in Duplicators takes an additional parameter which is the new owner of the new symbol that has to be duplicated. If this parameter is set to `NoSymbol`, then the new owner is `context.owner`, as before. 2) the newly created lazy val symbol is being added to the list of declarations of its new owner. Removes debugging output from the previous commit. Review by dragos. @mention dragos
| * | Add more logging.Aleksandar Prokopec2012-05-151-0/+39
| | |
* | | Fix 4812Lukas Rytz2012-05-191-0/+4
| | | | | | | | | | | | Remove default arguments from parameter ValDefs in UnCurry.
* | | Merge pull request #558 from lrytz/wip/t5259Josh Suereth2012-05-161-0/+21
|\ \ \ | | | | | | | | Fix SI-5259
| * | | Fix SI-5259Lukas Rytz2012-05-151-0/+21
| | | | | | | | | | | | | | | | Calling the type checker on an Ident tree instead of using gen.mkAttributedRef assigns a SingleType to the tree.
* | | | Removing extraneous files.Paul Phillips2012-05-152-3/+0
|/ / / | | | | | | | | | Culling accumulated unnecessary code.
| | |
| \ \
| \ \
| \ \
*---. | | Merge commit 'refs/pull/547/head'; commit 'refs/pull/548/head'; commit ↵Paul Phillips2012-05-142-0/+15
|\ \ \| | | | | | | | | | | | | | | | | 'refs/pull/549/head'; commit 'refs/pull/550/head'; commit 'refs/pull/551/head' into develop
| | * | | Closes SI-5796.Hubert Plociniczak2012-05-141-0/+8
| | |/ /
| * | | fix SI-5384Lukas Rytz2012-05-141-0/+7
| | | | | | | | | | | | | | | | make TreeInfo recognize constructor calls after named arguments transformation.
* | | | Test case closes SI-5137.Jason Zaugg2012-05-131-0/+17
| | | | | | | | | | | | | | | | virtpatmat strikes again.
| | | |
| \ \ \
| \ \ \
| \ \ \
| \ \ \
| \ \ \
| \ \ \
| \ \ \
| \ \ \
| \ \ \
*---------. \ \ \ Merge remote-tracking branches 'retronym/ticket/5407', ↵Paul Phillips2012-05-125-2/+50
|\ \ \ \ \ \ \ \ \ | |_|_|_|_|_|/ / / |/| | | | | | | / | | | |_|_|_|_|/ | | |/| | | | | 'scalamacros/topic/macrocherrypick', 'lrytz/t5626', 'lrytz/t5009', 'retronym/ticket/5029', 'retronym/ticket/4025', 'retronym/topic/quieter-nsdhnao' and 'retronym/ticket/1133' into develop
| | | | | | * | Confirm extractor based pattern matches don't explode exponentially.Jason Zaugg2012-05-121-0/+32
| | |_|_|_|/ / | |/| | | | | | | | | | | | | | | | | | | Closes SI-1133, thanks virtpatmat.
| | | | | * | Another bug bites virtpatmat's dust.Jason Zaugg2012-05-122-0/+4
| | |_|_|/ / | |/| | | | | | | | | | | | | | | | Test case closes SI-5029.
| | | | * | Fix SI-5009: case-class copy method now eta-expands over higher parameter lists.Lukas Rytz2012-05-111-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Example: Given case class C(a: Int)(b: Int) if you call (new C(1)(2)).copy(a = 10)), you get a function (f: Int => C) such that (f.apply(20)) yields a (new C(10)(20)).
| | | * | | Fix SI-5626.Lukas Rytz2012-05-111-0/+12
| | | |/ / | | | | | | | | | | | | | | | By not replacing 'CaseClass.apply()' factor by 'new CaseClass()' when the class type 'CaseClass' is not accessible.
| | | | |
| \ \ \ \
| \ \ \ \
| \ \ \ \
| \ \ \ \
| \ \ \ \
*-----. | | | | Merge commit 'refs/pull/530/head'; commit 'refs/pull/531/head'; commit ↵Paul Phillips2012-05-1111-0/+117
|\ \ \ \| | | | | | | |_|_|/ / | | |/| | | | | | | | | | | 'refs/pull/532/head'; commit 'refs/pull/533/head'; commit 'refs/pull/534/head' into develop
| | | | * | | Test case closes SI-5165.Paul Phillips2012-05-113-0/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Also fixed by annotation/enum commit.
| | | | * | | Recognize java enums as constants from source.Paul Phillips2012-05-113-0/+16
| | | |/ / / | | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | Fixed up one of the mismatches between how java source is modeled and how java bytecode is modeled. We should get the rest of them too. Closes SI-2764.
| | | * | | fixes a problem with an extractor object overloaded by a regular defEugene Burmako2012-05-111-0/+32
| | |/ / /
| | | | |
| | | \ \
| | | \ \
| | | \ \
| | *---. \ \ Merge commit 'refs/pull/527/head'; commit 'refs/pull/528/head'; commit ↵Paul Phillips2012-05-112-0/+40
| | |\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | 'refs/pull/529/head' into develop
| | | | | * | | Fix for SI-5654.Lukas Rytz2012-05-101-0/+13
| | | | | | |/ | | | | | |/| | | | | | | | | | | | | | | More details as code comment and in the bug database.
| | | | * / | Test case closes SI-2435.Jason Zaugg2012-05-111-0/+27
| | | |/ / /