summaryrefslogtreecommitdiff
path: root/test/files/pos/spec-params-old.scala
diff options
context:
space:
mode:
authorSom Snytt <som.snytt@gmail.com>2012-04-26 15:35:57 -0700
committerSom Snytt <som.snytt@gmail.com>2012-04-26 15:35:57 -0700
commit2a9cce8a6859a34c259d0b399687df3a242de16b (patch)
treeca15e0b069265ff7ec43d147e613bb044f38c91a /test/files/pos/spec-params-old.scala
parent47bfd744177121de08fed489a5b0b1b59a1ae06a (diff)
parentf7e1a4940386491b0691147b12b1b321c4cce2c5 (diff)
downloadscala-2a9cce8a6859a34c259d0b399687df3a242de16b.tar.gz
scala-2a9cce8a6859a34c259d0b399687df3a242de16b.tar.bz2
scala-2a9cce8a6859a34c259d0b399687df3a242de16b.zip
SI-5543: Merge with trunk
Reverts name unenmanglement that was objectionable in the previous patch commit 47bfd744177121de08fed489a5b0b1b59a1ae06a.
Diffstat (limited to 'test/files/pos/spec-params-old.scala')
-rw-r--r--test/files/pos/spec-params-old.scala32
1 files changed, 32 insertions, 0 deletions
diff --git a/test/files/pos/spec-params-old.scala b/test/files/pos/spec-params-old.scala
new file mode 100644
index 0000000000..f522512846
--- /dev/null
+++ b/test/files/pos/spec-params-old.scala
@@ -0,0 +1,32 @@
+class Foo[@specialized A: ClassManifest] {
+
+ // 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
+ }
+}