From 3ee6b3653f8c25d7d6b19b9f5d4af7fa082146a8 Mon Sep 17 00:00:00 2001 From: Iulian Dragos Date: Thu, 18 Jun 2009 17:19:55 +0000 Subject: Specialization landed in trunk. --- test/files/pos/spec-params.scala | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 test/files/pos/spec-params.scala (limited to 'test/files/pos/spec-params.scala') diff --git a/test/files/pos/spec-params.scala b/test/files/pos/spec-params.scala new file mode 100644 index 0000000000..231ef8a83e --- /dev/null +++ b/test/files/pos/spec-params.scala @@ -0,0 +1,32 @@ +class Foo[@specialized A] { + + // conflicting in bounds, expect a normalized member calling m + // and bridge + implementation in specialized subclasses + // and overloads here according to specialization on A + def m1[@specialized B <: A](x: B, y: A) = + goal(x) + + // conflicting, unsolvable, expect a warning + def m2[@specialized B <: String](x: B) = x.concat("a") + + // conflicting in bounds, no mention of other spec members + // expect an overload here plus implementation in + // compatible specialized subclasses + def m3[@specialized B >: A](x: B) = () + + // non-conflicting, expect a normalized overload implementation here + def m4[@specialized T, U <: Ordered[T]](x: T, y: U) = () + + // non-conflicting, expect a normalized overload implementation here + def m5[@specialized B](x: B) = x + + // non-conflicting, expect a normalized implementation here + // and specialized implementations for all expansions in specialized subclasses + def m6[@specialized B](x: B, y: A) = + goal(y) + + def goal(x: A) = { + val xs = new Array[A](1) + xs(0) = x + } +} -- cgit v1.2.3