From 046376e48bd3c4a294cef239a6cc77a61b62bc6e Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Mon, 13 Apr 2015 15:47:54 +0200 Subject: Added phase to check `New` nodes for instantiability. - Abstract classes cannot be instantiated (exceptions: parent news and Java annotations) - Instantiateed class must conform to its self type. --- tests/neg/instantiateAbstract.scala | 38 +++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 tests/neg/instantiateAbstract.scala (limited to 'tests/neg/instantiateAbstract.scala') 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 +} -- cgit v1.2.3