From 397dfd6d564b032e5f1d52dda015ffb4238a595f Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Wed, 27 May 2015 10:29:44 +0200 Subject: New pos tests Some of them were moved from disabled after verifiying that they compile now. --- tests/pos/pets.scala | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 tests/pos/pets.scala (limited to 'tests/pos/pets.scala') 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)) +} -- cgit v1.2.3