aboutsummaryrefslogtreecommitdiff
path: root/tests/pos/pets.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2015-05-27 10:29:44 +0200
committerMartin Odersky <odersky@gmail.com>2015-05-27 10:30:56 +0200
commit397dfd6d564b032e5f1d52dda015ffb4238a595f (patch)
treed0d2d4280ec1eac3978cd80a83751deee534bf1d /tests/pos/pets.scala
parent20f6e9d9efb6ece9a8844cfe011ac1cc663c378e (diff)
downloaddotty-397dfd6d564b032e5f1d52dda015ffb4238a595f.tar.gz
dotty-397dfd6d564b032e5f1d52dda015ffb4238a595f.tar.bz2
dotty-397dfd6d564b032e5f1d52dda015ffb4238a595f.zip
New pos tests
Some of them were moved from disabled after verifiying that they compile now.
Diffstat (limited to 'tests/pos/pets.scala')
-rw-r--r--tests/pos/pets.scala21
1 files changed, 21 insertions, 0 deletions
diff --git a/tests/pos/pets.scala b/tests/pos/pets.scala
new file mode 100644
index 000000000..e1d5df44e
--- /dev/null
+++ b/tests/pos/pets.scala
@@ -0,0 +1,21 @@
+// Representing the current type
+trait Pet {
+ type This <: Pet
+ def name: String
+ def renamed(newName: String): This
+}
+
+case class Fish(name: String, age: Int) extends Pet {
+ type This = Fish
+ def renamed(newName: String): Fish = copy(name = newName)
+}
+
+case class Kitty(name: String, age: Int) extends Pet {
+ type This = Kitty
+ def renamed(newName: String): Kitty = copy(name = newName)
+}
+
+object Test {
+ def esquire[A <: Pet](a: A): a.This = a.renamed(a.name + ", Esq.")
+ val f: Fish = esquire(new Fish("bob", 22))
+}