summaryrefslogtreecommitdiff
path: root/test/pending/pos/existentials-harmful.scala
diff options
context:
space:
mode:
authorAleksandar Prokopec <axel22@gmail.com>2012-02-16 13:34:06 +0100
committerAleksandar Prokopec <axel22@gmail.com>2012-02-16 13:34:06 +0100
commit53b05bb12f5a7a50448bcac9434389bf95273c45 (patch)
treed10140f4a3f2ea46dd39b47828c1326e9a61681e /test/pending/pos/existentials-harmful.scala
parentf2ccb43a844e484ae511c8cff3fbf534a0d86ebe (diff)
parent91148376049a152edec12348ff9b7e9e93e6ebe1 (diff)
downloadscala-53b05bb12f5a7a50448bcac9434389bf95273c45.tar.gz
scala-53b05bb12f5a7a50448bcac9434389bf95273c45.tar.bz2
scala-53b05bb12f5a7a50448bcac9434389bf95273c45.zip
Merge branch 'master' into execution-context
Conflicts: src/library/scala/package.scala
Diffstat (limited to 'test/pending/pos/existentials-harmful.scala')
-rw-r--r--test/pending/pos/existentials-harmful.scala54
1 files changed, 0 insertions, 54 deletions
diff --git a/test/pending/pos/existentials-harmful.scala b/test/pending/pos/existentials-harmful.scala
deleted file mode 100644
index 8722852e8a..0000000000
--- a/test/pending/pos/existentials-harmful.scala
+++ /dev/null
@@ -1,54 +0,0 @@
-// a.scala
-// Mon Jul 11 14:18:26 PDT 2011
-
-object ExistentialsConsideredHarmful {
- class Animal(val name: String)
- object Dog extends Animal("Dog")
- object Sheep extends Animal("Sheep")
-
- trait Tools[A] {
- def shave(a: A): A
- }
- def tools[A](a: A): Tools[A] = null // dummy
-
- case class TransportBox[A <: Animal](animal: A, tools: Tools[A]) {
- def label: String = animal.name
- }
-
- // 1.
- def carry[A <: Animal](box: TransportBox[A]): Unit = {
- println(box.animal.name+" got carried away")
- }
-
- val aBox =
- if (math.random < 0.5)
- TransportBox(Dog, tools(Dog))
- else
- TransportBox(Sheep, tools(Sheep))
-
- // 2.
- //aBox.tools.shave(aBox.animal)
-
- // Use pattern match to avoid opening the existential twice
- aBox match {
- case TransportBox(animal, tools) => tools.shave(animal)
- }
-
- abstract class BoxCarrier[R <: Animal](box: TransportBox[R]) {
- def speed: Int
-
- def talkToAnimal: Unit = println("The carrier says hello to"+box.animal.name)
- }
-
- // 3.
- //val bc = new BoxCarrier(aBox) {
-
- // Use pattern match to avoid opening the existential twice
- // Type annotation on bc is required ... possible compiler bug?
- // val bc : BoxCarrier[_ <: Animal] = aBox match {
- val bc = aBox match {
- case tb : TransportBox[a] => new BoxCarrier(tb) {
- def speed: Int = 12
- }
- }
-}