diff options
author | odersky <odersky@gmail.com> | 2015-10-22 13:23:40 +0200 |
---|---|---|
committer | odersky <odersky@gmail.com> | 2015-10-22 13:23:40 +0200 |
commit | 6b7c51c5c4f02b7713f5f44c4de4a287cdd329c6 (patch) | |
tree | 1acdcd668e7f27cdf7d4118cf7708ffa528df046 /tests/neg | |
parent | 9ad85c31640d8cf3b97db51f5520c1ca63e3e31c (diff) | |
parent | 30e5f322a0fb9c4c43cbeb3231423ac95571a3a7 (diff) | |
download | dotty-6b7c51c5c4f02b7713f5f44c4de4a287cdd329c6.tar.gz dotty-6b7c51c5c4f02b7713f5f44c4de4a287cdd329c6.tar.bz2 dotty-6b7c51c5c4f02b7713f5f44c4de4a287cdd329c6.zip |
Merge pull request #834 from dotty-staging/fix-#825
Fix #825
Diffstat (limited to 'tests/neg')
-rw-r--r-- | tests/neg/i50-volatile.scala | 2 | ||||
-rw-r--r-- | tests/neg/singletons.scala | 2 | ||||
-rw-r--r-- | tests/neg/typers.scala | 2 | ||||
-rw-r--r-- | tests/neg/validate-parsing.scala | 13 | ||||
-rw-r--r-- | tests/neg/validate-refchecks.scala | 13 | ||||
-rw-r--r-- | tests/neg/validate.scala | 48 |
6 files changed, 77 insertions, 3 deletions
diff --git a/tests/neg/i50-volatile.scala b/tests/neg/i50-volatile.scala index ae31a764c..9098b47d6 100644 --- a/tests/neg/i50-volatile.scala +++ b/tests/neg/i50-volatile.scala @@ -1,4 +1,4 @@ -object Test { +class Test { class Base { class Inner } diff --git a/tests/neg/singletons.scala b/tests/neg/singletons.scala index 5dff13096..2155bfe31 100644 --- a/tests/neg/singletons.scala +++ b/tests/neg/singletons.scala @@ -5,7 +5,7 @@ object Test { val n: null = null // error: Null is not a legal singleton type - val sym: 'sym = 'sym // error: Symbol is a legal singleton type + val sym: 'sym = 'sym // error: Symbol is not a legal singleton type val foo: s"abc" = "abc" // error: not a legal singleton type } diff --git a/tests/neg/typers.scala b/tests/neg/typers.scala index 8bd39a557..537c4cdb0 100644 --- a/tests/neg/typers.scala +++ b/tests/neg/typers.scala @@ -30,7 +30,7 @@ object typers { } type L[X] = scala.collection.immutable.List[X] - type M[X, Y] <: scala.collection.immutable.Map[X, Y] + type M[X, Y] <: scala.collection.immutable.Map[X, Y] // error: only classes can have declared but undefined members object hk { def f(x: L) // error: missing type parameter diff --git a/tests/neg/validate-parsing.scala b/tests/neg/validate-parsing.scala new file mode 100644 index 000000000..d0eee526a --- /dev/null +++ b/tests/neg/validate-parsing.scala @@ -0,0 +1,13 @@ +object A { + sealed def y: Int = 1 // error: modifier(s) `sealed' not allowed for method + sealed var x = 1 // error: modifier(s) `sealed' not allowed for variable + lazy trait T // error: modifier(s) `lazy' not allowed for trait +} + +class C () { + implicit this() = this() // error: ';' expected but 'implicit' found. + override this() = this() // error: ';' expected but 'override' found. +} +class D override() // error: ';' expected but 'override' found. + +case class ByName(x: => Int) // error: `val' parameters may not be call-by-name diff --git a/tests/neg/validate-refchecks.scala b/tests/neg/validate-refchecks.scala new file mode 100644 index 000000000..10e61407d --- /dev/null +++ b/tests/neg/validate-refchecks.scala @@ -0,0 +1,13 @@ + +trait A { + class C {} +} + +trait B extends A { + class C {} // error: cannot override +} + +trait C extends A { + type C = Int // error: cannot override +} + diff --git a/tests/neg/validate.scala b/tests/neg/validate.scala new file mode 100644 index 000000000..38da83fd7 --- /dev/null +++ b/tests/neg/validate.scala @@ -0,0 +1,48 @@ +trait X { + type Y + abstract val v: Y // error: abstract term + abstract def y: Y // error: abstract term +} + +implicit object Z { // error: implict at toplevel + implicit case class C() // error: implicit classes may not be case classes + implicit type T = Int // error: implicit modifier cannot be used for types or traits + implicit trait U // error: implicit modifier cannot be used for types or traits + val x: X = new X { + type Y = Int + val v: Int = 1 + } + var y: Int // error: only classes can have declared but undefined members + val z: Int = { + val u: Int // error: only classes can have declared but undefined members + 1 + } +} + +trait T { + type X + def foo: Unit = { + var x: Int // error: only classes can have declared but undefined members + () + } + private def bar: Int // error: abstract member may not have private modifier + final def baz: Int // error: abstract member may not have final modifier +} + +final sealed class A { // error: illegal combination of modifiers: final and sealed + private protected def f: Int = 1 // error: illegal combination of modifiers: private and protected +} + + +class E extends T { + abstract override def foo: Unit // error: abstract override only allowed for members of traits +} + +trait U extends T { + abstract override type X // error: `abstract override' incompatible with type definition + @native def f(): Unit = 1 // error: `@native' members may not have implementation +} + +trait TT extends AnyVal // error: trait TT annot extend AnyVal + +final trait UU // error: trait UU may not be `final' |