Index: tests/language/abstract_beats_arguments_test.dart |
diff --git a/tests/language/abstract_beats_arguments_test.dart b/tests/language/abstract_beats_arguments_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..d90a1960414b02ce7129e2e9eb276ca83c4068d7 |
--- /dev/null |
+++ b/tests/language/abstract_beats_arguments_test.dart |
@@ -0,0 +1,28 @@ |
+// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
+// for details. All rights reserved. Use of this source code is governed by a |
+// BSD-style license that can be found in the LICENSE file. |
+ |
+import "package:expect/expect.dart"; |
+ |
+// When an instantiation of an abstract class has the wrong arguments, an |
+// AbstractClassInstantiationError is thrown, not a NoSuchMethodError. |
+ |
+abstract class A { |
+ A() {} |
+} |
+ |
+class B { |
+ B() {} |
+} |
+ |
+bool isAbstractClassInstantiationError(e) => |
+ e is AbstractClassInstantiationError; |
+ |
+bool isNoSuchMethodError(e) => e is NoSuchMethodError; |
+ |
+void main() { |
+ Expect.throws(() => new A(), isAbstractClassInstantiationError); |
+ |
+ Expect.throws(() => new B(1), isNoSuchMethodError); |
+ Expect.throws(() => new A(1), isAbstractClassInstantiationError); |
+} |