diff options
author | Iulian Dragos <jaguarul@gmail.com> | 2009-06-18 17:19:55 +0000 |
---|---|---|
committer | Iulian Dragos <jaguarul@gmail.com> | 2009-06-18 17:19:55 +0000 |
commit | 3ee6b3653f8c25d7d6b19b9f5d4af7fa082146a8 (patch) | |
tree | e97b8c0dd8d61e82f825f528f98842f777621f7a /test/files/pos/spec-params.scala | |
parent | be8e3c69114da5bc3020d5363b338b1c83aa22ef (diff) | |
download | scala-3ee6b3653f8c25d7d6b19b9f5d4af7fa082146a8.tar.gz scala-3ee6b3653f8c25d7d6b19b9f5d4af7fa082146a8.tar.bz2 scala-3ee6b3653f8c25d7d6b19b9f5d4af7fa082146a8.zip |
Specialization landed in trunk.
Diffstat (limited to 'test/files/pos/spec-params.scala')
-rw-r--r-- | test/files/pos/spec-params.scala | 32 |
1 files changed, 32 insertions, 0 deletions
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 + } +} |