| // Copyright (c) 2017, 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 lib; | |
| @MirrorsUsed(targets: "lib") | |
| import "dart:mirrors"; | |
| import "package:expect/expect.dart"; | |
| class A { | |
| call(int x) => 123 + x; | |
| bar(int y) => 321 + y; | |
| } | |
| foo(int y) => 456 + y; | |
| main() { | |
| // Static function. | |
| ClosureMirror f1 = reflect(foo); | |
| Expect.equals(1456, f1.apply([1000]).reflectee); | |
| // Local declaration. | |
| chomp(int z) => z + 42; | |
| ClosureMirror f2 = reflect(chomp); | |
| Expect.equals(1042, f2.apply([1000]).reflectee); | |
| // Local expression. | |
| ClosureMirror f3 = reflect((u) => u + 987); | |
| Expect.equals(1987, f3.apply([1000]).reflectee); | |
| // Instance property extraction. | |
| ClosureMirror f4 = reflect(new A().bar); | |
| Expect.equals(1321, f4.apply([1000]).reflectee); | |
| // Instance implementing Function via call method. | |
| ClosureMirror f5 = reflect(new A()); | |
| Expect.equals(1123, f5.apply([1000]).reflectee); | |
| } |