| // 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. |
| |
| // @dart = 2.9 |
| |
| library test.mirrors_nsm_mismatch; |
| |
| import 'dart:mirrors'; |
| import 'mirrors_nsm_test.dart'; |
| |
| topLevelMethod({missing}) {} |
| |
| class C { |
| C.constructor({missing}); |
| factory C.redirecting({missing}) = C.constructor; |
| static staticMethod({missing}) {} |
| instanceMethod({missing}) {} |
| } |
| |
| main() { |
| var mirrors = currentMirrorSystem(); |
| var libMirror = mirrors.findLibrary(#test.mirrors_nsm_mismatch); |
| expectMatchingErrors(() => libMirror.invoke(#topLevelMethod, [], {#extra: 1}), |
| () => topLevelMethod(extra: 1)); |
| expectMatchingErrors(() => libMirror.invoke(#topLevelMethod, ['positional']), |
| () => topLevelMethod('positional')); |
| |
| var classMirror = reflectClass(C); |
| expectMatchingErrors( |
| () => classMirror.newInstance(#constructor, [], {#extra: 1}), |
| () => new C.constructor(extra: 1)); |
| expectMatchingErrors( |
| () => classMirror.newInstance(#redirecting, [], {#extra: 1}), |
| () => new C.redirecting(extra: 1)); |
| expectMatchingErrors(() => classMirror.invoke(#staticMethod, [], {#extra: 1}), |
| () => C.staticMethod(extra: 1)); |
| expectMatchingErrors( |
| () => classMirror.newInstance(#constructor, ['positional']), |
| () => new C.constructor('positional')); |
| expectMatchingErrors( |
| () => classMirror.newInstance(#redirecting, ['positional']), |
| () => new C.redirecting('positional')); |
| expectMatchingErrors(() => classMirror.invoke(#staticMethod, ['positional']), |
| () => C.staticMethod('positional')); |
| |
| var instanceMirror = reflect(new C.constructor()); |
| expectMatchingErrors( |
| () => instanceMirror.invoke(#instanceMethod, [], {#extra: 1}), |
| () => instanceMirror.reflectee.instanceMethod(extra: 1)); |
| expectMatchingErrors( |
| () => instanceMirror.invoke(#instanceMethod, ['positional']), |
| () => instanceMirror.reflectee.instanceMethod('positional')); |
| } |