summaryrefslogtreecommitdiff
path: root/test
Commit message (Collapse)AuthorAgeFilesLines
* slight improvement to lubList so that the simpl...Adriaan Moors2011-06-291-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | slight improvement to lubList so that the simple case of lubbing type constructors works. review by extempore the strategy is to detect when the ts in lub(ts) are actually type constructors and remember their type parameters the BTS of a type constructor is a list of proper types (the type constructors have been applied to their dummy arguments, which are simply type refs to the original type parameters) in lubList, we undo this damage by stripping these dummy arguments (they refer to type parameters that are meant to be bound) a better fix would be to actually bind those type parameters that appear free in error, but that would require major changes to the BTS infrastructure example that only kindasorta works now... given: trait Container[+T] trait Template[+CC[X] <: Container[X]] class C1[T] extends Template[Container] with Container[T] C1's BTS contains Template[Container] with Container[T], but that should really be [T] => Template[Container] with Container[T] instead of wrapping it in a polytype, the current approach uses elimHOTparams to patch up this type so that it looks more like a type ctor: Template[Container] with Container, but this is ill-kinded as Template[Container] is a proper type, whereas Container is not the performance impact should be minimal, but caveat reviewer
* Don't infer anonymous classes.Paul Phillips2011-06-274-1/+22
| | | | | | | | | | | | | | possible, just far enough to avoid all kinds of undesirable consequences which accompany the preservation of too much type information. (The problems are akin to inferring the singleton type too freely.) // Example of code which did not compile, but now does class A class B[T <: A](cons: T) object C extends B(new A {}) Closes #4110, #3048. I already ran this by moors, so review by odersky.
* Test cases close #2782, #2171, no review.Paul Phillips2011-06-253-0/+26
|
* Another one I missed which was fixed by r25149.Paul Phillips2011-06-241-0/+41
|
* Another one brought to compilation by r25149.Paul Phillips2011-06-241-0/+31
|
* A test case from recently closed #490, no review.Paul Phillips2011-06-241-0/+16
|
* Added sanity check to lub calculation to preven...Paul Phillips2011-06-248-16/+90
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Added sanity check to lub calculation to prevent invalid lubs from emerging. The underlying cause of said lubs is that higher-order type parameters are not handled correctly: this is why the issue is seen so frequently in the collections. See pending test pending/pos/those-kinds-are-high.scala for a demonstration. Until that's fixed, we can at least raise the bar a bit. Closes #2094, #2322, #4501. Also, some test cases in neg have been promoted into working programs: #2179, #3774. (They're not in neg for the "shouldn't work" reason, but out of despair.) In some cases, such as the original reported ticket in #3528, this only pushes the problem downfield: it still fails due to inferred type parameters not conforming to bounds. I believe a similar issue with higher-order type parameters underlies that. Look at how far this takes us though. All kinds of stuff which did not work, now works. None of these even compiled until now: scala> :type List(mutable.Map(1 -> 1), immutable.Map(1 -> 1)) List[scala.collection.Map[Int,Int]] scala> :type Set(List(1), mutable.Map(1 -> 1)) scala.collection.Set[Iterable[Any] with PartialFunction[Int,Int]] scala> :type Stream(List(1), Set(1), 1 to 5) Stream[Iterable[Int] with Int => AnyVal{def getClass(): Class[_ >: Int with Boolean <: AnyVal]}] scala> :type Map(1 -> (1 to 10), 2 -> (1 to 10).toList) scala.collection.immutable.Map[Int,scala.collection.immutable.Seq[Int] ] PERFORMANCE: compiling quick.lib and quick.comp, this patch results in an extra 27 subtype tests. Total. Time difference too small to measure. However to be on the safe side I made it really easy to disable. private final val verifyLubs = true // set to false Review by moors, odersky.
* getting the revamped getClass to work on Java 5Adriaan Moors2011-06-232-0/+0
| | | | | | | | | | | | | | | | | hunch by adriaan (needed to change Object to Any in strategic location), location + fix determined by paul, menial work (reverts of obsolete spears and introduction of fix) by adriaan review by extempore Revert "A line missed from spear thrust, no review. Revert " "Thrusting spear into darkened alcove attempting to slay java5 " Revert "New theory: fails running on java 1.5. Put in hack to " discover Revert "Everything builds for me, but apparently not for " jenkins. First "
* Overrode contains and apply in mutable.HashMap ...Paul Phillips2011-06-231-1/+1
| | | | | | | | Overrode contains and apply in mutable.HashMap to avoid allocating an unnecessary Some on every call to either of them. Fruit looks a little better defended in immutable.HashMap, so I deleted a bunch of old debugging code instead. Closes #4469, no review.
* Notice when erasure is trying to cast something...Paul Phillips2011-06-231-0/+14
| | | | | | | | Notice when erasure is trying to cast something to Unit, and don't do it. I'm not sure at what prior point such things should have been caught, but for now we can have a sanity check. Closes #4731, review by odersky.
* New theory: fails running on java 1.5.Paul Phillips2011-06-222-0/+0
| | | | | truth of theory. No review.
* Moved test for #4727 to where it was supposed t...Paul Phillips2011-06-222-0/+11
| | | | | Moved test for #4727 to where it was supposed to go, no review.
* A total rewrite of "runtimeClass", discarding t...Paul Phillips2011-06-222-0/+84
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A total rewrite of "runtimeClass", discarding the user-space approach in favor of simply fixing getClass. def f1 = 5.getClass // Class[Int] def f2 = (5: AnyVal).getClass // Class[_ <: AnyVal] def f3 = (5: java.lang.Integer).getClass // Class[_ <: java.lang.Integer] class A class B extends A def f1 = (new B: Any).getClass().newInstance() // Any def f2 = (new B: AnyRef).getClass().newInstance() // AnyRef def f3 = (new B: A).getClass().newInstance() // A def f4 = (new B: B).getClass().newInstance() // B But that's not all! def f0[T >: B] = (new B: T).getClass().newInstance() def f5 = f0[Any] // Any def f6 = f0[AnyRef] // AnyRef def f7 = f0[A] // A def f8 = f0[B] // B Closes #490, #896, #4696. Review by moors. (Note: I think this is pretty good, but picky review requested.)
* Test case closes #4727, no review.Paul Phillips2011-06-221-0/+7
|
* Updated a test with GenSetLike.Aleksandar Pokopec2011-06-221-1/+1
|
* Removed "isInterpreterWrapper" from the conditi...Paul Phillips2011-06-212-0/+13
| | | | | | | | Removed "isInterpreterWrapper" from the conditions which imply an effective root. This was an old hack from before my time which is no longer necessary and then recently became actively hostile. Closes #4710, no review.
* Relaxes a typer check which fails valid code wi...Paul Phillips2011-06-211-0/+11
| | | | | | | | Relaxes a typer check which fails valid code with NoCommonType. If the instantiated types or type bounds do not conform, it tries normalizing the type before throwing the exception. Closes #4553. I wrote this patch with adriaan already, but bonus review by moors.
* Routed Stream.+: through cons to avoid some tru...Paul Phillips2011-06-212-0/+9
| | | | | | Routed Stream.+: through cons to avoid some truly pathological performance. Closes #4697, no review.
* Added test case.Martin Odersky2011-06-212-0/+19
|
* Some tests for pending, no review.Paul Phillips2011-06-212-0/+51
|
* Test case closes #4601, no review.Paul Phillips2011-06-212-0/+16
|
* Moved a test to pending.Aleksandar Pokopec2011-06-201-2/+0
| | | | | No review.
* Disabled failing test.Aleksandar Pokopec2011-06-201-0/+2
| | | | | No review.
* When TypeVars were given higher-order abilities...Paul Phillips2011-06-203-0/+11
| | | | | | | When TypeVars were given higher-order abilities, so too should have been WildcardType, which acts as a plceholder for typevars. Always inflicting arguments upon it was the cause of #2308. Closes #2308, review by moors.
* Separete index.js to parallelize downloads.Kato Kazuyoshi2011-06-202-20/+52
|
* Fixed an overflow which occurs in hashtable siz...Aleksandar Pokopec2011-06-201-0/+29
| | | | | | | | Fixed an overflow which occurs in hashtable size computations. Fixes #4678. No review.
* Fixed an issue with higher kinded type inferenc...Paul Phillips2011-06-193-0/+64
| | | | | | | | Fixed an issue with higher kinded type inference on constructors without any help from adriaan. Provisionally notched belt. Wrapped up as many tickets as I added characters of code. Closes SI-3343, SI-4018. Review by moors.
* The usual unbreaking of broken builds, no review.Paul Phillips2011-06-181-1/+1
|
* Go back to printing the message that transcript...Paul Phillips2011-06-162-0/+6
| | | | | | Go back to printing the message that transcript pastes can be finished with ctrl-D. No review.
* closes #4692: unification in type constructor i...Adriaan Moors2011-06-151-0/+27
| | | | | | | | | | | closes #4692: unification in type constructor inference now widens *and* dealiases when necessary in 2.8.1 implicit conversion search started with a widened type, so that combo never came up no review
* Update manually created tree which was calling ...Paul Phillips2011-06-142-0/+4
| | | | | | | | Update manually created tree which was calling Predef.error to call scala.sys.error instead. Created convenience functions in Definitions for getting package objects akin to those for getting classes and objects. No review.
* closes #4547.Adriaan Moors2011-06-141-0/+4
| | | | | review by rompf -- odersky may want to take a quick look and update the spec
* Test case for implicits which unwrap typeclasse...Paul Phillips2011-06-135-8/+57
| | | | | | | Test case for implicits which unwrap typeclasses, something which must really live on the edge given the multiple ways we've busted it lately. Also some Array/signature and repl tests. No review.
* Views using methods implemented in terms of isE...Paul Phillips2011-06-132-0/+46
| | | | | | | | | | | | | | | Views using methods implemented in terms of isEmpty (in particular, headOption and lastOption) were traversing the collection twice up to the nonEmpty element, because "if (isEmpty) None else Some(head)" means calling isEmpty separately from head. I overrode those methods in TraversableViewLike to avoid the second traversal. This leaves at least init and tail still in that boat, but they were getting too involved. How do I say "review by pool of reviewers", who can help set that up? In the meantime no review.
* The '#' sign may easily to lead to problems, So...Kato Kazuyoshi2011-06-122-0/+10
| | | | | | The '#' sign may easily to lead to problems, So we use '_' instead of '#'. Closes #4641.
* Don't issue unchecked warnings on higher-kinded...Paul Phillips2011-06-122-1/+3
| | | | | | Don't issue unchecked warnings on higher-kinded types. Closes #1439, review by moors.
* Fix for wrong results from groupBy on views.Paul Phillips2011-06-121-0/+11
|
* Reverts r25051 due to witnessed movement of sca...Paul Phillips2011-06-121-1/+1
| | | | | | Reverts r25051 due to witnessed movement of scalaz in the noncompiling direction. Postmortem help I hope in the review by moors.
* A test case demonstrating some of the issues wi...Paul Phillips2011-06-102-0/+131
| | | | | | A test case demonstrating some of the issues with DelayedInit. References #4680. Review by odersky.
* Compilation of spec-List enters an infinite loo...Paul Phillips2011-06-101-0/+0
| | | | | | | Compilation of spec-List enters an infinite loop under -optimise, disabling in the hopes of seeing a new build before I die. I'll put it back. No review.
* Tweaks repl tests to enforce -Yrepl-sync and ot...Paul Phillips2011-06-102-6/+13
| | | | | | | | | Tweaks repl tests to enforce -Yrepl-sync and other setup on all clients. Also includes some more why-do-tests-hang bosons for the particle accelerator in case that doesn't wrap it up. I think it will though, because now constrained-types is the only one which failed and it's also the only one which overrides Settings. No review.
* Modified erasure not to generate instance tests...Paul Phillips2011-06-072-0/+43
| | | | | | | | | | | Modified erasure not to generate instance tests for statically known types. It appears the production of types like "Foo with Bar" in the pattern matcher (where the scrutinee is known to be Foo) has been a major contributor of suboptimal pattern matches. I will also fix it in the matcher, but it makes sense to catch it in erasure as both a check on the matcher and because they may come from elsewhere too. Review by odersky.
* Lisp test wins again, no review.Paul Phillips2011-06-072-0/+0
|
* Proliferating the number of debugging modes bec...Paul Phillips2011-06-068-14/+14
| | | | | | | | | | | | | | Proliferating the number of debugging modes because it's still way too hard to see what's going on in there. Until we get hubert's type debugger with its whiz-bang whizbanginess, we'll have to struggle along with somewhat prettier ascii. This introduces: -Yinfer-debug which tries to print in readable fashion what is happening in the worlds of inference and implicit search. It should be made a bit more complementary and less overlappy with -Ytyper-debug. No review.
* Carved out access exception for java protected ...Paul Phillips2011-06-068-0/+68
| | | | | | Carved out access exception for java protected statics, which otherwise cannot be accessed from scala. Changes close status of #1806, no review.
* More polishing up repl power mode, no review.Paul Phillips2011-06-031-1/+0
|
* More adjustments to repl parsing to accomodate ...Paul Phillips2011-06-012-0/+27
| | | | | | More adjustments to repl parsing to accomodate inaccurately positioned parse trees. No review.
* The eagerly awaited companion commit to r23622,...Paul Phillips2011-06-012-3/+3
| | | | | | | | | | | | | | | The eagerly awaited companion commit to r23622, the surprise hit of last winter. Singletons now have the singleton type inferred in monomorphic contexts as well. In english: scala> object X defined module X scala> def f = X f: X.type Wait, that's not english. English review by moors.
* Fixed a repl regression with parentheses handli...Paul Phillips2011-05-312-0/+41
| | | | | | | | Fixed a repl regression with parentheses handling, reminding me we really need that honest parser phase which doesn't betray us with parentheses abandonment and dramatic desugarings. I'll promote it from page 14 to page 11. Closes #4661, no review.
* A getter with type params is still a getter.Paul Phillips2011-05-311-0/+6
| | | | | | | | There were two distinct bugs in here, which if I ran the world would be a wakeup call that robust software cannot emerge from thousands of lines of low-level AST matching. In case you are frozen in suspense: I do not run the world. Review by moors.