aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorodersky <odersky@gmail.com>2016-08-21 19:22:22 +0300
committerGitHub <noreply@github.com>2016-08-21 19:22:22 +0300
commitbcfa3be8cfe2be5d79d0147e6c8fde2c38717623 (patch)
treeed265fbaaef7c0f9ef62c09ee86960d08be8f32d /tests
parentac423a31548cfd0901559513e020331facf66a89 (diff)
parent2302886d79b3de8846d9295871a3cea6dd94d65e (diff)
downloaddotty-bcfa3be8cfe2be5d79d0147e6c8fde2c38717623.tar.gz
dotty-bcfa3be8cfe2be5d79d0147e6c8fde2c38717623.tar.bz2
dotty-bcfa3be8cfe2be5d79d0147e6c8fde2c38717623.zip
Merge pull request #1456 from dotty-staging/fix-#1444
Fix #1444: Pass implicits to parameterless traits if needed
Diffstat (limited to 'tests')
-rw-r--r--tests/neg/i1263.scala33
-rw-r--r--tests/neg/traitParamsMixin.scala2
-rw-r--r--tests/neg/traitParamsTyper.scala2
-rw-r--r--tests/pos/i1444.scala14
-rw-r--r--tests/run/i1263.scala3
5 files changed, 49 insertions, 5 deletions
diff --git a/tests/neg/i1263.scala b/tests/neg/i1263.scala
new file mode 100644
index 000000000..e6d8c37b5
--- /dev/null
+++ b/tests/neg/i1263.scala
@@ -0,0 +1,33 @@
+object Test {
+ trait Foo(val s: String)
+
+ val foo1 = new Foo("bar") {}
+ val foo2 = new Foo { override val s = "bar" } // error: parameterized trait lacks argument list
+ def main(args: Array[String]): Unit = {
+ assert(foo1.s == "bar")
+ assert(foo2.s == "bar")
+ }
+}
+object Test1 {
+ trait Foo(private val s0: String) {
+ def s = s0
+ }
+
+ val foo1 = new Foo("bar") {}
+ def main(args: Array[String]): Unit = {
+ assert(foo1.s == "bar")
+ }
+}
+object Test2 {
+ trait Foo(protected val s: String)
+
+ val foo1 = new Foo("bar") {}
+}
+object Test3 {
+ trait Foo(final val s: String)
+
+ val foo1 = new Foo("bar") {}
+ def main(args: Array[String]): Unit = {
+ assert(foo1.s == "bar")
+ }
+}
diff --git a/tests/neg/traitParamsMixin.scala b/tests/neg/traitParamsMixin.scala
index dfb9fbe2f..aa91012d5 100644
--- a/tests/neg/traitParamsMixin.scala
+++ b/tests/neg/traitParamsMixin.scala
@@ -2,8 +2,6 @@ trait T(x: Int) {
def f = x
}
-class C extends T // error
-
trait U extends T
class D extends U { // error
diff --git a/tests/neg/traitParamsTyper.scala b/tests/neg/traitParamsTyper.scala
index e97906b50..caed2727d 100644
--- a/tests/neg/traitParamsTyper.scala
+++ b/tests/neg/traitParamsTyper.scala
@@ -2,6 +2,8 @@ trait T(x: Int) {
def f = x
}
+class C0 extends T // error
+
class C(x: Int) extends T() // error
trait U extends C with T
diff --git a/tests/pos/i1444.scala b/tests/pos/i1444.scala
new file mode 100644
index 000000000..da858d50f
--- /dev/null
+++ b/tests/pos/i1444.scala
@@ -0,0 +1,14 @@
+object Test {
+
+class Cls(implicit x:X)
+class ClsImpl extends Cls //this works
+
+trait Tr1(implicit x:X)
+class TrtImpl extends Tr1 //Compiler: Error: parameterized trait Tr1 lacks argument list
+
+trait Tr2()(implicit x:X)
+class Tr2Impl extends Tr2() //this works
+
+trait X
+implicit object AnX extends X
+}
diff --git a/tests/run/i1263.scala b/tests/run/i1263.scala
index 630e5758e..e97606ef6 100644
--- a/tests/run/i1263.scala
+++ b/tests/run/i1263.scala
@@ -2,10 +2,8 @@ object Test {
trait Foo(val s: String)
val foo1 = new Foo("bar") {}
- val foo2 = new Foo { override val s = "bar" }
def main(args: Array[String]): Unit = {
assert(foo1.s == "bar")
- assert(foo2.s == "bar")
}
}
object Test1 {
@@ -22,7 +20,6 @@ object Test2 {
trait Foo(protected val s: String)
val foo1 = new Foo("bar") {}
- val foo2 = new Foo { override val s = "bar" }
}
object Test3 {
trait Foo(final val s: String)