| 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; // Shadowing 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 baz() { |
| 46 var instanceInC = null; // Shadowing with a null value. |
| 47 return reflect(() => instanceInC); |
| 48 } |
| 49 } |
| 50 |
| 51 main() { |
| 52 C c = new C(); |
| 53 ClosureMirror cm = reflect(c.foo); |
| 54 |
| 55 var result; |
| 56 |
| 57 result = cm.findInContext(#globalVariable); |
| 58 expect("Instance(value = globalVariable)", result); |
| 59 |
| 60 result = cm.findInContext(#globalFoo); |
| 61 Expect.isTrue(result is ClosureMirror); |
| 62 expect("Instance(value = 17)", result.apply(const [])); |
| 63 |
| 64 result = cm.findInContext(#S.staticInS); |
| 65 expect("Instance(value = staticInS)", result); |
| 66 |
| 67 result = cm.findInContext(#staticInS); |
| 68 Expect.isFalse(result is InstanceMirror); |
| 69 Expect.equals(null, result); |
| 70 |
| 71 result = cm.findInContext(#staticFooInS); |
| 72 Expect.isTrue(result is ClosureMirror); |
| 73 expect("Instance(value = staticFooInS)", result.apply(const [])); |
| 74 |
| 75 result = cm.findInContext(#C.staticFooInS); |
| 76 Expect.isTrue(result is ClosureMirror); |
| 77 expect("Instance(value = staticFooInS)", result.apply(const [])); |
| 78 |
| 79 result = cm.findInContext(#C.staticInC); |
| 80 expect("Instance(value = staticInC)", result); |
| 81 |
| 82 result = cm.findInContext(#staticInC); |
| 83 expect("Instance(value = staticInC)", result); |
| 84 |
| 85 result = cm.findInContext(#C.staticFooInC); |
| 86 Expect.isTrue(result is ClosureMirror); |
| 87 expect("Instance(value = staticFooInC)", result.apply(const [])); |
| 88 |
| 89 result = cm.findInContext(#staticFooInC); |
| 90 Expect.isTrue(result is ClosureMirror); |
| 91 expect("Instance(value = staticFooInC)", result.apply(const [])); |
| 92 |
| 93 result = cm.findInContext(#instanceInC); |
| 94 expect("Instance(value = instanceInC)", result); |
| 95 |
| 96 result = cm.findInContext(#instanceInS); |
| 97 expect("Instance(value = instanceInS)", result); |
| 98 |
| 99 result = cm.findInContext(#globalVariableInImport1); |
| 100 expect("Instance(value = globalVariableInImport1)", result); |
| 101 |
| 102 result = cm.findInContext(#StaticClass.staticField); |
| 103 expect("Instance(value = staticField)", result); |
| 104 |
| 105 result = cm.findInContext(#StaticClass.staticFunctionInStaticClass); |
| 106 Expect.isTrue(result is ClosureMirror); |
| 107 expect("Instance(value = staticFunctionInStaticClass)", |
| 108 result.apply(const [])); |
| 109 |
| 110 result = cm.findInContext(#imp1.StaticClass.staticFunctionInStaticClass); |
| 111 Expect.isTrue(result is ClosureMirror); |
| 112 expect("Instance(value = staticFunctionInStaticClass)", |
| 113 result.apply(const [])); |
| 114 |
| 115 result = cm.findInContext(#imp1.globalVariableInImport1); |
| 116 expect("Instance(value = globalVariableInImport1)", result); |
| 117 |
| 118 result = cm.findInContext(#imp2.globalVariableInImport); |
| 119 Expect.isFalse(result is InstanceMirror); |
| 120 Expect.equals(null, result); |
| 121 |
| 122 result = cm.findInContext(#imp1.StaticClass.staticField); |
| 123 expect("Instance(value = staticField)", result); |
| 124 |
| 125 result = cm.findInContext(#imp1_hidden.StaticClass.staticField); |
| 126 Expect.isFalse(result is InstanceMirror); |
| 127 Expect.equals(null, result); |
| 128 |
| 129 result = cm.findInContext(#firstGlobalVariableInImport2); |
| 130 expect("Instance(value = firstGlobalVariableInImport2)", result); |
| 131 |
| 132 result = cm.findInContext(#secondGlobalVariableInImport2); |
| 133 Expect.isFalse(result is InstanceMirror); |
| 134 Expect.equals(null, result); |
| 135 |
| 136 result = cm.findInContext(#imp2.secondGlobalVariableInImport2); |
| 137 expect("Instance(value = secondGlobalVariableInImport2)", result); |
| 138 |
| 139 result = c.bar().findInContext(#x); |
| 140 expect("Instance(value = 7)", result); |
| 141 |
| 142 result = c.bar().findInContext(#instanceInC); |
| 143 expect("Instance(value = 11)", result); |
| 144 |
| 145 result = c.bar().findInContext(#y); |
| 146 Expect.isFalse(result is InstanceMirror); |
| 147 Expect.equals(null, result); |
| 148 |
| 149 result = c.baz().findInContext(#instanceInC); |
| 150 expect("Instance(value = <null>)", result); |
| 151 } |
| OLD | NEW |