diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/files/neg/names-defaults-neg.check | 49 | ||||
-rw-r--r-- | test/files/neg/names-defaults-neg.scala | 5 | ||||
-rw-r--r-- | test/files/run/names-defaults.check | 4 | ||||
-rw-r--r-- | test/files/run/names-defaults.scala | 9 |
4 files changed, 44 insertions, 23 deletions
diff --git a/test/files/neg/names-defaults-neg.check b/test/files/neg/names-defaults-neg.check index f1db7676dd..5a12d51764 100644 --- a/test/files/neg/names-defaults-neg.check +++ b/test/files/neg/names-defaults-neg.check @@ -1,4 +1,4 @@ -names-defaults-neg.scala:63: error: not enough arguments for method apply: (a: Int,b: String)(c: Int*)Fact in object Fact. +names-defaults-neg.scala:65: error: not enough arguments for method apply: (a: Int,b: String)(c: Int*)Fact in object Fact. Unspecified value parameter b. val fac = Fact(1)(2, 3) ^ @@ -20,85 +20,94 @@ name of the method and the name of a variable currently in scope. names-defaults-neg.scala:16: error: not found: value c test1(c = 0, b = "joke") ^ -names-defaults-neg.scala:20: error: parameter specified twice: a +names-defaults-neg.scala:17: error: not found: value m + test7((m = 1)) // named arguments must be top-level assignments + ^ +names-defaults-neg.scala:18: error: not found: value m + test7({m = 1}) + ^ +names-defaults-neg.scala:19: error: not found: value m + test7 { m = 1 } // no named arguments in argument block + ^ +names-defaults-neg.scala:22: error: parameter specified twice: a test1(1, a = 2) ^ -names-defaults-neg.scala:21: error: parameter specified twice: b +names-defaults-neg.scala:23: error: parameter specified twice: b test1(b = 1, b = "2") ^ -names-defaults-neg.scala:24: error: { +names-defaults-neg.scala:26: error: { val x$1: Int(3) = 3; val x$2: Int(1) = 1; Test.this.test3(1, 3) } of type Int does not take parameters test3(b = 3, a = 1)(3) ^ -names-defaults-neg.scala:33: error: ambiguous reference to overloaded definition, +names-defaults-neg.scala:35: error: ambiguous reference to overloaded definition, both method f in object t1 of type (b: String,a: Int)java.lang.String and method f in object t1 of type (a: Int,b: String)java.lang.String match argument types (b: java.lang.String,a: Int) t1.f(b = "dkljf", a = 1) ^ -names-defaults-neg.scala:40: error: ambiguous reference to overloaded definition, +names-defaults-neg.scala:42: error: ambiguous reference to overloaded definition, both method f in object t3 of type (a2: Int)(b: Int)java.lang.String and method f in object t3 of type (a1: Int)java.lang.String match argument types (Int) t3.f(1) ^ -names-defaults-neg.scala:41: error: ambiguous reference to overloaded definition, +names-defaults-neg.scala:43: error: ambiguous reference to overloaded definition, both method f in object t3 of type (a2: Int)(b: Int)java.lang.String and method f in object t3 of type (a1: Int)java.lang.String match argument types (Int) t3.f(1)(2) ^ -names-defaults-neg.scala:47: error: ambiguous reference to overloaded definition, +names-defaults-neg.scala:49: error: ambiguous reference to overloaded definition, both method g in object t7 of type (a: B)java.lang.String and method g in object t7 of type (a: C,b: Int*)java.lang.String match argument types (C) t7.g(new C()) // ambigous reference ^ -names-defaults-neg.scala:51: error: parameter specified twice: b +names-defaults-neg.scala:53: error: parameter specified twice: b test5(a = 1, b = "dkjl", b = "dkj") ^ -names-defaults-neg.scala:52: error: parameter specified twice: b +names-defaults-neg.scala:54: error: parameter specified twice: b test5(1, "2", b = 3) ^ -names-defaults-neg.scala:53: error: when using named arguments, the vararg parameter has to be specified exactly once +names-defaults-neg.scala:55: error: when using named arguments, the vararg parameter has to be specified exactly once test5(b = "dlkj") ^ -names-defaults-neg.scala:59: error: ambiguous reference to overloaded definition, +names-defaults-neg.scala:61: error: ambiguous reference to overloaded definition, both method f in object t8 of type (b: String,a: Int)java.lang.String and method f in object t8 of type (a: Int,b: java.lang.Object)java.lang.String match argument types (a: Int,b: java.lang.String) and expected result type Any println(t8.f(a = 0, b = "1")) // ambigous reference ^ -names-defaults-neg.scala:67: error: wrong number of arguments for <none>: (x: Int,y: String)A1 +names-defaults-neg.scala:69: error: wrong number of arguments for <none>: (x: Int,y: String)A1 A1() match { case A1(_) => () } ^ -names-defaults-neg.scala:74: error: inferred kinds of the type arguments (List[Int]) do not conform to the expected kinds of the type parameters (type T). +names-defaults-neg.scala:76: error: inferred kinds of the type arguments (List[Int]) do not conform to the expected kinds of the type parameters (type T). List[Int]'s type parameters do not match type T's expected parameters: class List has one type parameter, but type T has one test4() ^ error: type mismatch; found : List[Int] required: List[List[List[List[X forSome { type X }]]]] -names-defaults-neg.scala:77: error: type mismatch; +names-defaults-neg.scala:79: error: type mismatch; found : List[Int] required: List[List[?]] def test6[T](x: List[List[T]] = List(1,2)) = x ^ -names-defaults-neg.scala:80: error: type mismatch; +names-defaults-neg.scala:82: error: type mismatch; found : Int required: String new A2[String]() ^ -names-defaults-neg.scala:90: error: multiple overloaded alternatives of method foo define default arguments +names-defaults-neg.scala:93: error: multiple overloaded alternatives of method foo define default arguments def foo(a: Int = 0) = a ^ -names-defaults-neg.scala:100: error: multiple overloaded alternatives of method foo define default arguments +names-defaults-neg.scala:103: error: multiple overloaded alternatives of method foo define default arguments override def foo(a: Int = 1092) = a ^ -names-defaults-neg.scala:103: error: multiple overloaded alternatives of method bar define default arguments +names-defaults-neg.scala:106: error: multiple overloaded alternatives of method bar define default arguments def bar(i: Int = 129083) = i ^ -25 errors found +28 errors found diff --git a/test/files/neg/names-defaults-neg.scala b/test/files/neg/names-defaults-neg.scala index 2e9f755174..523d8977ff 100644 --- a/test/files/neg/names-defaults-neg.scala +++ b/test/files/neg/names-defaults-neg.scala @@ -14,7 +14,9 @@ object Test extends Application { test2(x = 1) test2(y = 1) test1(c = 0, b = "joke") - + test7((m = 1)) // named arguments must be top-level assignments + test7({m = 1}) + test7 { m = 1 } // no named arguments in argument block // argument specified twice test1(1, a = 2) @@ -83,6 +85,7 @@ object Test extends Application { def test1(a: Int, b: String) = a +": "+ b def test2(x: Unit) = println("test2") def test3(a: Int, b: Int) = a + b + def test7(m: Int) = m } // only one overloaded alternative is allowed to have defaults diff --git a/test/files/run/names-defaults.check b/test/files/run/names-defaults.check index e8c088fe7a..5c2290acf9 100644 --- a/test/files/run/names-defaults.check +++ b/test/files/run/names-defaults.check @@ -92,6 +92,10 @@ test5 2 test5 3 +test5 +4 +test5 +5 slkdfj1 1 lskfdjlk diff --git a/test/files/run/names-defaults.scala b/test/files/run/names-defaults.scala index 3efefc9e71..0e5a268e62 100644 --- a/test/files/run/names-defaults.scala +++ b/test/files/run/names-defaults.scala @@ -171,8 +171,12 @@ object Test extends Application { var argName = 1 test5(argName = (argName = 2)) println(argName) // should be 2 - test5({argName = 3; ()}) + test5({argName = 3}) println(argName) // should be 3 + test5((argName = 4)) + println(argName) // should be 4 + test5 { argName = 5 } + println(argName) // should be 5 // dependent types and copy method @@ -304,7 +308,8 @@ class A2 { -// using names / defaults in self constructor call +// using names / defaults in self constructor call. +// overloading resolution: calling A3("string") picks the second, method with default is always less specific. class A3(x: String, y: Int = 10) { def this(a: Object) { this(y = 10, x = a.toString()) |