aboutsummaryrefslogtreecommitdiff
path: root/tests/neg
diff options
context:
space:
mode:
authorDmitry Petrashko <dark@d-d.me>2015-04-20 11:45:44 +0200
committerDmitry Petrashko <dark@d-d.me>2015-04-20 11:45:44 +0200
commite3449e9fdbb3801eb07680e4938bc4c3c77ec3a8 (patch)
treef9bde90b44ea3e1e96ed2009ad248284f92a6951 /tests/neg
parent187480b55bcf3b37936802daa3a31ffb89bfdcc6 (diff)
parent35717b7d3029a87a4ec7c9b45d18644b33b560e8 (diff)
downloaddotty-e3449e9fdbb3801eb07680e4938bc4c3c77ec3a8.tar.gz
dotty-e3449e9fdbb3801eb07680e4938bc4c3c77ec3a8.tar.bz2
dotty-e3449e9fdbb3801eb07680e4938bc4c3c77ec3a8.zip
Merge pull request #474 from dotty-staging/alt/instantiation-checks
Alt/instantiation checks (2)
Diffstat (limited to 'tests/neg')
-rw-r--r--tests/neg/instantiateAbstract.scala38
-rw-r--r--tests/neg/selfInheritance.scala28
2 files changed, 66 insertions, 0 deletions
diff --git a/tests/neg/instantiateAbstract.scala b/tests/neg/instantiateAbstract.scala
new file mode 100644
index 000000000..1e119a8b5
--- /dev/null
+++ b/tests/neg/instantiateAbstract.scala
@@ -0,0 +1,38 @@
+abstract class AA
+
+trait TT
+
+class A { self: B =>
+
+}
+
+@scala.annotation.Annotation class C // error
+
+class B extends A() {
+}
+
+object Test {
+
+ @scala.annotation.Annotation type T = String // error
+ @scala.annotation.Annotation val x = 1 // error
+ @scala.annotation.Annotation def f = 1 //error
+
+ (1: @scala.annotation.Annotation) // error
+
+
+ new AA // error
+
+ new TT // error
+
+ new A // error
+
+// the following are OK in Typer but would be caught later in RefChecks
+
+ new A() {}
+
+ new AA() {}
+
+ object O extends A
+
+ object OO extends AA
+}
diff --git a/tests/neg/selfInheritance.scala b/tests/neg/selfInheritance.scala
new file mode 100644
index 000000000..5f61c5bbb
--- /dev/null
+++ b/tests/neg/selfInheritance.scala
@@ -0,0 +1,28 @@
+trait T { self: B => }
+
+abstract class A { self: B =>
+
+}
+
+class B extends A with T {
+}
+
+class C { self: B =>
+
+}
+
+class D extends A // error
+
+class E extends T // error
+
+object Test {
+
+ new B() {}
+
+ new A() {} // error
+
+ object O extends A // error
+
+ object M extends C // error
+
+}