aboutsummaryrefslogtreecommitdiff
path: root/tests/neg
diff options
context:
space:
mode:
authorodersky <odersky@gmail.com>2015-10-22 13:23:40 +0200
committerodersky <odersky@gmail.com>2015-10-22 13:23:40 +0200
commit6b7c51c5c4f02b7713f5f44c4de4a287cdd329c6 (patch)
tree1acdcd668e7f27cdf7d4118cf7708ffa528df046 /tests/neg
parent9ad85c31640d8cf3b97db51f5520c1ca63e3e31c (diff)
parent30e5f322a0fb9c4c43cbeb3231423ac95571a3a7 (diff)
downloaddotty-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.scala2
-rw-r--r--tests/neg/singletons.scala2
-rw-r--r--tests/neg/typers.scala2
-rw-r--r--tests/neg/validate-parsing.scala13
-rw-r--r--tests/neg/validate-refchecks.scala13
-rw-r--r--tests/neg/validate.scala48
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'