| OLD | NEW |
| (Empty) | |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. |
| 4 |
| 5 import "dart:mirrors"; |
| 6 |
| 7 import "stringify.dart"; |
| 8 |
| 9 import "package:expect/expect.dart"; |
| 10 |
| 11 import "closure_mirror_import1.dart"; |
| 12 import "closure_mirror_import1.dart" as imp1; |
| 13 import "closure_mirror_import1.dart" as imp1_hidden |
| 14 hide globalVariableInImport, StaticClass; |
| 15 import "closure_mirror_import2.dart" as imp2; |
| 16 |
| 17 var globalVariable = "globalVariable"; |
| 18 |
| 19 globalFoo() => 17; |
| 20 |
| 21 class S { |
| 22 static staticFooInS() => "staticFooInS"; |
| 23 static var staticInS = "staticInS"; |
| 24 var instanceInS = "instanceInS"; |
| 25 } |
| 26 |
| 27 class C extends S { |
| 28 static staticFooInC() => "staticFooInC"; |
| 29 static var staticInC = "staticInC"; |
| 30 var instanceInC = "instanceInC"; |
| 31 |
| 32 foo() => null; |
| 33 |
| 34 bar() { |
| 35 var x = 7; |
| 36 var instanceInC = 11; // Hiding the instance field. |
| 37 var y = 3; // Not in context. |
| 38 baz() { |
| 39 if (x) {} |
| 40 if (instanceInC) {} |
| 41 }; |
| 42 return reflect(baz); |
| 43 } |
| 44 } |
| 45 |
| 46 main() { |
| 47 C c = new C(); |
| 48 ClosureMirror cm = reflect(c.foo); |
| 49 |
| 50 var result; |
| 51 |
| 52 result = cm.findInContext(const Symbol("globalVariable")); |
| 53 expect("Instance(value = globalVariable)", result); |
| 54 |
| 55 result = cm.findInContext(const Symbol("globalFoo")); |
| 56 Expect.isTrue(result is ClosureMirror); |
| 57 expect("Instance(value = 17)", result.apply(const [])); |
| 58 |
| 59 result = cm.findInContext(const Symbol("S.staticInS")); |
| 60 expect("Instance(value = staticInS)", result); |
| 61 |
| 62 result = cm.findInContext(const Symbol("staticInS")); |
| 63 Expect.isFalse(result is InstanceMirror); |
| 64 Expect.equals(null, result); |
| 65 |
| 66 result = cm.findInContext(const Symbol("staticFooInS")); |
| 67 Expect.isTrue(result is ClosureMirror); |
| 68 expect("Instance(value = staticFooInS)", result.apply(const [])); |
| 69 |
| 70 result = cm.findInContext(const Symbol("C.staticFooInS")); |
| 71 Expect.isTrue(result is ClosureMirror); |
| 72 expect("Instance(value = staticFooInS)", result.apply(const [])); |
| 73 |
| 74 result = cm.findInContext(const Symbol("C.staticInC")); |
| 75 expect("Instance(value = staticInC)", result); |
| 76 |
| 77 result = cm.findInContext(const Symbol("staticInC")); |
| 78 expect("Instance(value = staticInC)", result); |
| 79 |
| 80 result = cm.findInContext(const Symbol("C.staticFooInC")); |
| 81 Expect.isTrue(result is ClosureMirror); |
| 82 expect("Instance(value = staticFooInC)", result.apply(const [])); |
| 83 |
| 84 result = cm.findInContext(const Symbol("staticFooInC")); |
| 85 Expect.isTrue(result is ClosureMirror); |
| 86 expect("Instance(value = staticFooInC)", result.apply(const [])); |
| 87 |
| 88 result = cm.findInContext(const Symbol("instanceInC")); |
| 89 expect("Instance(value = instanceInC)", result); |
| 90 |
| 91 result = cm.findInContext(const Symbol("instanceInS")); |
| 92 expect("Instance(value = instanceInS)", result); |
| 93 |
| 94 result = cm.findInContext(const Symbol("globalVariableInImport1")); |
| 95 expect("Instance(value = globalVariableInImport1)", result); |
| 96 |
| 97 result = cm.findInContext(const Symbol("StaticClass.staticField")); |
| 98 expect("Instance(value = staticField)", result); |
| 99 |
| 100 result = cm.findInContext( |
| 101 const Symbol("StaticClass.staticFunctionInStaticClass")); |
| 102 Expect.isTrue(result is ClosureMirror); |
| 103 expect("Instance(value = staticFunctionInStaticClass)", |
| 104 result.apply(const [])); |
| 105 |
| 106 result = cm.findInContext( |
| 107 const Symbol("imp1.StaticClass.staticFunctionInStaticClass")); |
| 108 Expect.isTrue(result is ClosureMirror); |
| 109 expect("Instance(value = staticFunctionInStaticClass)", |
| 110 result.apply(const [])); |
| 111 |
| 112 result = cm.findInContext(const Symbol("imp1.globalVariableInImport1")); |
| 113 expect("Instance(value = globalVariableInImport1)", result); |
| 114 |
| 115 result = cm.findInContext(const Symbol("imp2.globalVariableInImport")); |
| 116 Expect.isFalse(result is InstanceMirror); |
| 117 Expect.equals(null, result); |
| 118 |
| 119 result = cm.findInContext(const Symbol("imp1.StaticClass.staticField")); |
| 120 expect("Instance(value = staticField)", result); |
| 121 |
| 122 result = cm.findInContext( |
| 123 const Symbol("imp1_hidden.StaticClass.staticField")); |
| 124 Expect.isFalse(result is InstanceMirror); |
| 125 Expect.equals(null, result); |
| 126 |
| 127 result = cm.findInContext(const Symbol("firstGlobalVariableInImport2")); |
| 128 expect("Instance(value = firstGlobalVariableInImport2)", result); |
| 129 |
| 130 result = cm.findInContext(const Symbol("secondGlobalVariableInImport2")); |
| 131 Expect.isFalse(result is InstanceMirror); |
| 132 Expect.equals(null, result); |
| 133 |
| 134 result = cm.findInContext(const Symbol("imp2.secondGlobalVariableInImport2")); |
| 135 expect("Instance(value = secondGlobalVariableInImport2)", result); |
| 136 |
| 137 result = c.bar().findInContext(const Symbol("x")); |
| 138 expect("Instance(value = 7)", result); |
| 139 |
| 140 result = c.bar().findInContext(const Symbol("instanceInC")); |
| 141 expect("Instance(value = 11)", result); |
| 142 |
| 143 result = c.bar().findInContext(const Symbol("y")); |
| 144 Expect.isFalse(result is InstanceMirror); |
| 145 Expect.equals(null, result); |
| 146 } |
| OLD | NEW |