Index: test/codegen/lib/mirrors/invoke_throws_test.dart |
diff --git a/test/codegen/lib/mirrors/invoke_throws_test.dart b/test/codegen/lib/mirrors/invoke_throws_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..40fa99cfc2b8caa586cc089cad1cb33ef2e497e9 |
--- /dev/null |
+++ b/test/codegen/lib/mirrors/invoke_throws_test.dart |
@@ -0,0 +1,70 @@ |
+// Copyright (c) 2013, 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. |
+ |
+library test.invoke_throws_test; |
+ |
+import 'dart:mirrors'; |
+ |
+import 'package:expect/expect.dart'; |
+ |
+class MyException { |
+} |
+ |
+class Class { |
+ Class.noException(); |
+ Class.generative() { throw new MyException(); } |
+ Class.redirecting() : this.generative(); |
+ factory Class.faktory() { throw new MyException(); } |
+ factory Class.redirectingFactory() = Class.faktory; |
+ |
+ get getter { throw new MyException(); } |
+ set setter(v) { throw new MyException(); } |
+ method() { throw new MyException(); } |
+ |
+ noSuchMethod(invocation) { throw new MyException(); } |
+ |
+ static get staticGetter { throw new MyException(); } |
+ static set staticSetter(v) { throw new MyException(); } |
+ static staticFunction() { throw new MyException(); } |
+} |
+ |
+get libraryGetter { throw new MyException(); } |
+set librarySetter(v) { throw new MyException(); } |
+libraryFunction() { throw new MyException(); } |
+ |
+main() { |
+ InstanceMirror im = reflect(new Class.noException()); |
+ Expect.throws(() => im.getField(#getter), |
+ (e) => e is MyException); |
+ Expect.throws(() => im.setField(#setter, ['arg']), |
+ (e) => e is MyException); |
+ Expect.throws(() => im.invoke(#method, []), |
+ (e) => e is MyException); |
+ Expect.throws(() => im.invoke(#triggerNoSuchMethod, []), |
+ (e) => e is MyException); |
+ |
+ ClassMirror cm = reflectClass(Class); |
+ Expect.throws(() => cm.getField(#staticGetter), |
+ (e) => e is MyException); |
+ Expect.throws(() => cm.setField(#staticSetter, ['arg']), |
+ (e) => e is MyException); |
+ Expect.throws(() => cm.invoke(#staticFunction, []), |
+ (e) => e is MyException); |
+ Expect.throws(() => cm.newInstance(#generative, []), |
+ (e) => e is MyException); |
+ Expect.throws(() => cm.newInstance(#redirecting, []), |
+ (e) => e is MyException); |
+ Expect.throws(() => cm.newInstance(#faktory, []), |
+ (e) => e is MyException); |
+ Expect.throws(() => cm.newInstance(#redirectingFactory, []), |
+ (e) => e is MyException); |
+ |
+ LibraryMirror lm = reflectClass(Class).owner; |
+ Expect.throws(() => lm.getField(#libraryGetter), |
+ (e) => e is MyException); |
+ Expect.throws(() => lm.setField(#librarySetter, ['arg']), |
+ (e) => e is MyException); |
+ Expect.throws(() => lm.invoke(#libraryFunction, []), |
+ (e) => e is MyException); |
+} |