aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2016-01-29 21:48:55 +0100
committerMartin Odersky <odersky@gmail.com>2016-02-19 14:02:17 +0100
commit8441de7a907996361a78d744d3364cee3d558f84 (patch)
treea553bc1c18466324d0f2898af5c9c4d48a4c5fe4 /tests
parent1d585f1172d563051c0710008568b3b53728281f (diff)
downloaddotty-8441de7a907996361a78d744d3364cee3d558f84.tar.gz
dotty-8441de7a907996361a78d744d3364cee3d558f84.tar.bz2
dotty-8441de7a907996361a78d744d3364cee3d558f84.zip
Allow Named Arguments in TypeArgs
Lets one also pass named arguments to methods.
Diffstat (limited to 'tests')
-rw-r--r--tests/neg/named-params.scala12
-rw-r--r--tests/pos/named-params.scala16
2 files changed, 27 insertions, 1 deletions
diff --git a/tests/neg/named-params.scala b/tests/neg/named-params.scala
index c1f055e10..9ef4ed066 100644
--- a/tests/neg/named-params.scala
+++ b/tests/neg/named-params.scala
@@ -19,4 +19,16 @@ object Test {
val c3 = new C[Elem = String, Value = Int]("B")
val c4 = new C[Elem = String]("C")
val x2: c2.Elem = c2.elem
+
+ val c5 = new C[Elem1 = String, Value0 = Int]("B") // error // error
+
+ def d2[E, V](x: E) = new C[Elem = E, Value = V](x)
+
+ val dup = d2[E = Int, V = String, E = Boolean](2) // error
+ val z1 = d2[Elem = Int, Value = String](1) // error // error
+ val z2 = d2[Value = String, Elem = Int](1) // error // error
+ val z3 = d2[Elem = Int](1) // error
+ val z4 = d2[Value = Int]("AAA") // error
+ val z5 = d2[Elem = Int][Value = String](1) //error // error
+
}
diff --git a/tests/pos/named-params.scala b/tests/pos/named-params.scala
index 9668ec34c..bcd64ea4b 100644
--- a/tests/pos/named-params.scala
+++ b/tests/pos/named-params.scala
@@ -4,7 +4,7 @@ class C[type Elem, type Value](val elem: Elem) {
def toVal: Elem = ???
}
-abstract class D[type Elem, V](elem: Elem) extends C[Elem, V](elem)
+class D[type Elem, V](elem: Elem) extends C[Elem, V](elem)
object Test {
val c = new C[String, String]("A") {
@@ -17,6 +17,18 @@ object Test {
val c3 = new C[Elem = String, Value = Int]("B")
val c4 = new C[Elem = String]("C")
val x2: c2.Elem = c2.elem
+
+ def d1[E, V](x: E) = new D[E, V](x)
+ def d2[E, V](x: E) = new C[Elem = E, Value = V](x)
+
+ val y1 = d1[Int, String](1)
+ val y2 = d1[E = Int](2)
+ val y3 = d1[V = String](3)
+ val z1 = d2[E = Int, V = String](1)
+ val z2 = d2[V = String, E = Int](1)
+ val z3 = d2[E = Int](1)
+ val z4 = d2[V = Int]("AAA")
+ val z5 = d2[E = Int][V = String](1)
}
// Adapated from i94-nada
@@ -30,3 +42,5 @@ trait Test1 {
def flatMap[X,Y,M <: Monad](m: M[Elem = X], f: X => M[Elem = Y]): M[Elem = Y] = f(m.unit)
println(flatMap(Left(1), {x: Int => Left(x)}))
}
+
+