| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 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 | 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. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 // This tests uses the multi-test "ok" feature: | 5 // This tests uses the multi-test "ok" feature: |
| 6 // none: Desired behaviour, passing on the VM. | 6 // none: Desired behaviour, passing on the VM. |
| 7 // 01: Trimmed version for dart2js. | 7 // 01: Trimmed version for dart2js. |
| 8 // | 8 // |
| 9 // TODO(rmacnak,ahe): Remove multi-test when VM and dart2js are on par. | 9 // TODO(rmacnak,ahe): Remove multi-test when VM and dart2js are on par. |
| 10 | 10 |
| (...skipping 29 matching lines...) Expand all Loading... |
| 40 class C <S extends int, T> { | 40 class C <S extends int, T> { |
| 41 // TODO(6490): Currently only supported by the VM. | 41 // TODO(6490): Currently only supported by the VM. |
| 42 foo(int a, S b) => b; | 42 foo(int a, S b) => b; |
| 43 bar(S a, T b, num c) {} | 43 bar(S a, T b, num c) {} |
| 44 } | 44 } |
| 45 | 45 |
| 46 main() { | 46 main() { |
| 47 ClassMirror cm = reflectClass(B); | 47 ClassMirror cm = reflectClass(B); |
| 48 Map<Symbol, MethodMirror> constructors = cm.constructors; | 48 Map<Symbol, MethodMirror> constructors = cm.constructors; |
| 49 | 49 |
| 50 List<Symbol> constructorKeys = [ | 50 List<Symbol> constructorKeys = |
| 51 const Symbol('B'), const Symbol('B.bar'), const Symbol('B.baz'), | 51 [#B, #B.bar, #B.baz, #B.foo, #B.quux, #B.qux, #B.corge]; |
| 52 const Symbol('B.foo'), const Symbol('B.quux'), const Symbol('B.qux'), | |
| 53 const Symbol('B.corge')]; | |
| 54 Expect.setEquals(constructorKeys, constructors.keys); | 52 Expect.setEquals(constructorKeys, constructors.keys); |
| 55 | 53 |
| 56 MethodMirror unnamedConstructor = constructors[const Symbol('B')]; | 54 MethodMirror unnamedConstructor = constructors[#B]; |
| 57 expect('Method(s(B) in s(B), constructor)', unnamedConstructor); | 55 expect('Method(s(B) in s(B), constructor)', unnamedConstructor); |
| 58 expect('[]', unnamedConstructor.parameters); | 56 expect('[]', unnamedConstructor.parameters); |
| 59 expect('Class(s(B) in s(test.parameter_test), top-level)', | 57 expect('Class(s(B) in s(test.parameter_test), top-level)', |
| 60 unnamedConstructor.returnType); | 58 unnamedConstructor.returnType); |
| 61 | 59 |
| 62 MethodMirror fooConstructor = constructors[const Symbol('B.foo')]; | 60 MethodMirror fooConstructor = constructors[#B.foo]; |
| 63 expect('Method(s(B.foo) in s(B), constructor)', fooConstructor); | 61 expect('Method(s(B.foo) in s(B), constructor)', fooConstructor); |
| 64 expect('[Parameter(s(x) in s(B.foo),' | 62 expect('[Parameter(s(x) in s(B.foo),' |
| 65 ' type = Class(s(int) in s(dart.core), top-level))]', | 63 ' type = Class(s(int) in s(dart.core), top-level))]', |
| 66 fooConstructor.parameters); | 64 fooConstructor.parameters); |
| 67 expect('Class(s(B) in s(test.parameter_test), top-level)', | 65 expect('Class(s(B) in s(test.parameter_test), top-level)', |
| 68 fooConstructor.returnType); | 66 fooConstructor.returnType); |
| 69 | 67 |
| 70 MethodMirror barConstructor = constructors[const Symbol('B.bar')]; | 68 MethodMirror barConstructor = constructors[#B.bar]; |
| 71 expect('Method(s(B.bar) in s(B), constructor)', barConstructor); | 69 expect('Method(s(B.bar) in s(B), constructor)', barConstructor); |
| 72 expect('[Parameter(s(z) in s(B.bar),' | 70 expect('[Parameter(s(z) in s(B.bar),' |
| 73 ' type = Class(s(int) in s(dart.core), top-level)), ' | 71 ' type = Class(s(int) in s(dart.core), top-level)), ' |
| 74 'Parameter(s(x) in s(B.bar),' | 72 'Parameter(s(x) in s(B.bar),' |
| 75 ' type = Type(s(dynamic), top-level))]', | 73 ' type = Type(s(dynamic), top-level))]', |
| 76 barConstructor.parameters); | 74 barConstructor.parameters); |
| 77 expect('Class(s(B) in s(test.parameter_test), top-level)', | 75 expect('Class(s(B) in s(test.parameter_test), top-level)', |
| 78 barConstructor.returnType); | 76 barConstructor.returnType); |
| 79 | 77 |
| 80 // dart2js stops testing here. | 78 // dart2js stops testing here. |
| 81 return; /// 01: ok | 79 return; /// 01: ok |
| 82 | 80 |
| 83 MethodMirror bazConstructor = constructors[const Symbol('B.baz')]; | 81 MethodMirror bazConstructor = constructors[#B.baz]; |
| 84 expect('Method(s(B.baz) in s(B), constructor)', bazConstructor); | 82 expect('Method(s(B.baz) in s(B), constructor)', bazConstructor); |
| 85 expect('[Parameter(s(x) in s(B.baz), final,' | 83 expect('[Parameter(s(x) in s(B.baz), final,' |
| 86 ' type = Class(s(int) in s(dart.core), top-level)), ' | 84 ' type = Class(s(int) in s(dart.core), top-level)), ' |
| 87 'Parameter(s(y) in s(B.baz),' | 85 'Parameter(s(y) in s(B.baz),' |
| 88 ' type = Class(s(int) in s(dart.core), top-level)), ' | 86 ' type = Class(s(int) in s(dart.core), top-level)), ' |
| 89 'Parameter(s(z) in s(B.baz), final,' | 87 'Parameter(s(z) in s(B.baz), final,' |
| 90 ' type = Class(s(int) in s(dart.core), top-level))]', | 88 ' type = Class(s(int) in s(dart.core), top-level))]', |
| 91 bazConstructor.parameters); | 89 bazConstructor.parameters); |
| 92 expect('Class(s(B) in s(test.parameter_test), top-level)', | 90 expect('Class(s(B) in s(test.parameter_test), top-level)', |
| 93 bazConstructor.returnType); | 91 bazConstructor.returnType); |
| 94 | 92 |
| 95 MethodMirror quxConstructor = constructors[const Symbol('B.qux')]; | 93 MethodMirror quxConstructor = constructors[#B.qux]; |
| 96 expect('Method(s(B.qux) in s(B), constructor)', quxConstructor); | 94 expect('Method(s(B.qux) in s(B), constructor)', quxConstructor); |
| 97 expect('[Parameter(s(x) in s(B.qux),' | 95 expect('[Parameter(s(x) in s(B.qux),' |
| 98 ' type = Class(s(int) in s(dart.core), top-level)), ' | 96 ' type = Class(s(int) in s(dart.core), top-level)), ' |
| 99 'Parameter(s(y) in s(B.qux), optional,' | 97 'Parameter(s(y) in s(B.qux), optional,' |
| 100 ' value = Instance(value = 4),' | 98 ' value = Instance(value = 4),' |
| 101 ' type = Class(s(int) in s(dart.core), top-level))]', | 99 ' type = Class(s(int) in s(dart.core), top-level))]', |
| 102 quxConstructor.parameters); | 100 quxConstructor.parameters); |
| 103 expect('Class(s(B) in s(test.parameter_test), top-level)', | 101 expect('Class(s(B) in s(test.parameter_test), top-level)', |
| 104 quxConstructor.returnType); | 102 quxConstructor.returnType); |
| 105 | 103 |
| 106 MethodMirror quuxConstructor = constructors[const Symbol('B.quux')]; | 104 MethodMirror quuxConstructor = constructors[#B.quux]; |
| 107 expect('Method(s(B.quux) in s(B), constructor)', quuxConstructor); | 105 expect('Method(s(B.quux) in s(B), constructor)', quuxConstructor); |
| 108 expect('[Parameter(s(x) in s(B.quux),' | 106 expect('[Parameter(s(x) in s(B.quux),' |
| 109 ' type = Class(s(int) in s(dart.core), top-level)), ' | 107 ' type = Class(s(int) in s(dart.core), top-level)), ' |
| 110 'Parameter(s(str) in s(B.quux), optional, named,' | 108 'Parameter(s(str) in s(B.quux), optional, named,' |
| 111 ' value = Instance(value = foo),' | 109 ' value = Instance(value = foo),' |
| 112 ' type = Class(s(String) in s(dart.core), top-level))]', | 110 ' type = Class(s(String) in s(dart.core), top-level))]', |
| 113 quuxConstructor.parameters); | 111 quuxConstructor.parameters); |
| 114 expect('Class(s(B) in s(test.parameter_test), top-level)', | 112 expect('Class(s(B) in s(test.parameter_test), top-level)', |
| 115 quuxConstructor.returnType); | 113 quuxConstructor.returnType); |
| 116 | 114 |
| 117 MethodMirror corgeConstructor = constructors[const Symbol('B.corge')]; | 115 MethodMirror corgeConstructor = constructors[#B.corge]; |
| 118 expect('Method(s(B.corge) in s(B), constructor)', corgeConstructor); | 116 expect('Method(s(B.corge) in s(B), constructor)', corgeConstructor); |
| 119 expect('[Parameter(s(x) in s(B.corge), optional, named,' | 117 expect('[Parameter(s(x) in s(B.corge), optional, named,' |
| 120 ' value = Instance(value = 51),' | 118 ' value = Instance(value = 51),' |
| 121 ' type = Class(s(int) in s(dart.core), top-level)), ' | 119 ' type = Class(s(int) in s(dart.core), top-level)), ' |
| 122 'Parameter(s(str) in s(B.corge), optional, named,' | 120 'Parameter(s(str) in s(B.corge), optional, named,' |
| 123 ' value = Instance(value = bar),' | 121 ' value = Instance(value = bar),' |
| 124 ' type = Class(s(String) in s(dart.core), top-level))]', | 122 ' type = Class(s(String) in s(dart.core), top-level))]', |
| 125 corgeConstructor.parameters); | 123 corgeConstructor.parameters); |
| 126 expect('Class(s(B) in s(test.parameter_test), top-level)', | 124 expect('Class(s(B) in s(test.parameter_test), top-level)', |
| 127 corgeConstructor.returnType); | 125 corgeConstructor.returnType); |
| 128 | 126 |
| 129 MethodMirror xGetter = cm.getters[const Symbol('x')]; | 127 MethodMirror xGetter = cm.getters[#x]; |
| 130 expect('Method(s(x) in s(B), getter)', xGetter); | 128 expect('Method(s(x) in s(B), getter)', xGetter); |
| 131 expect('[]', xGetter.parameters); | 129 expect('[]', xGetter.parameters); |
| 132 | 130 |
| 133 MethodMirror xSetter = cm.setters[const Symbol('x=')]; | 131 MethodMirror xSetter = cm.setters[const Symbol('x=')]; |
| 134 expect('Method(s(x=) in s(B), setter)', xSetter); | 132 expect('Method(s(x=) in s(B), setter)', xSetter); |
| 135 expect('[Parameter(s(value) in s(x=), final,' | 133 expect('[Parameter(s(value) in s(x=), final,' |
| 136 ' type = Type(s(dynamic), top-level))]', | 134 ' type = Type(s(dynamic), top-level))]', |
| 137 xSetter.parameters); | 135 xSetter.parameters); |
| 138 | 136 |
| 139 MethodMirror grault = cm.members[const Symbol("grault")]; | 137 MethodMirror grault = cm.members[#grault]; |
| 140 expect('Method(s(grault) in s(B))', grault); | 138 expect('Method(s(grault) in s(B))', grault); |
| 141 expect('[Parameter(s(x) in s(grault), optional,' | 139 expect('[Parameter(s(x) in s(grault), optional,' |
| 142 ' type = Class(s(int) in s(dart.core), top-level))]', | 140 ' type = Class(s(int) in s(dart.core), top-level))]', |
| 143 grault.parameters); | 141 grault.parameters); |
| 144 expect('Instance(value = <null>)', grault.parameters[0].defaultValue); | 142 expect('Instance(value = <null>)', grault.parameters[0].defaultValue); |
| 145 | 143 |
| 146 MethodMirror garply = cm.members[const Symbol("garply")]; | 144 MethodMirror garply = cm.members[#garply]; |
| 147 expect('Method(s(garply) in s(B))', garply); | 145 expect('Method(s(garply) in s(B))', garply); |
| 148 expect('[Parameter(s(y) in s(garply), optional, named,' | 146 expect('[Parameter(s(y) in s(garply), optional, named,' |
| 149 ' type = Class(s(int) in s(dart.core), top-level))]', | 147 ' type = Class(s(int) in s(dart.core), top-level))]', |
| 150 garply.parameters); | 148 garply.parameters); |
| 151 expect('Instance(value = <null>)', garply.parameters[0].defaultValue); | 149 expect('Instance(value = <null>)', garply.parameters[0].defaultValue); |
| 152 | 150 |
| 153 MethodMirror waldo = cm.members[const Symbol("waldo")]; | 151 MethodMirror waldo = cm.members[#waldo]; |
| 154 expect('Method(s(waldo) in s(B))', waldo); | 152 expect('Method(s(waldo) in s(B))', waldo); |
| 155 expect('[Parameter(s(z) in s(waldo),' | 153 expect('[Parameter(s(z) in s(waldo),' |
| 156 ' type = Class(s(int) in s(dart.core), top-level))]', | 154 ' type = Class(s(int) in s(dart.core), top-level))]', |
| 157 waldo.parameters); | 155 waldo.parameters); |
| 158 expect('<null>', waldo.parameters[0].defaultValue); | 156 expect('<null>', waldo.parameters[0].defaultValue); |
| 159 | 157 |
| 160 cm = reflectClass(C); | 158 cm = reflectClass(C); |
| 161 | 159 |
| 162 MethodMirror fooInC = cm.members[const Symbol("foo")]; | 160 MethodMirror fooInC = cm.members[#foo]; |
| 163 expect('Method(s(foo) in s(C))', fooInC); | 161 expect('Method(s(foo) in s(C))', fooInC); |
| 164 expect('[Parameter(s(a) in s(foo),' | 162 expect('[Parameter(s(a) in s(foo),' |
| 165 ' type = Class(s(int) in s(dart.core), top-level)), ' | 163 ' type = Class(s(int) in s(dart.core), top-level)), ' |
| 166 'Parameter(s(b) in s(foo),' | 164 'Parameter(s(b) in s(foo),' |
| 167 ' type = TypeVariable(s(S) in s(C),' | 165 ' type = TypeVariable(s(S) in s(C),' |
| 168 ' upperBound = Class(s(int) in s(dart.core), top-level)))]', | 166 ' upperBound = Class(s(int) in s(dart.core), top-level)))]', |
| 169 fooInC.parameters); | 167 fooInC.parameters); |
| 170 | 168 |
| 171 MethodMirror barInC = cm.members[const Symbol("bar")]; | 169 MethodMirror barInC = cm.members[#bar]; |
| 172 expect('Method(s(bar) in s(C))', barInC); | 170 expect('Method(s(bar) in s(C))', barInC); |
| 173 expect('[Parameter(s(a) in s(bar),' | 171 expect('[Parameter(s(a) in s(bar),' |
| 174 ' type = TypeVariable(s(S) in s(C),' | 172 ' type = TypeVariable(s(S) in s(C),' |
| 175 ' upperBound = Class(s(int) in s(dart.core), top-level))), ' | 173 ' upperBound = Class(s(int) in s(dart.core), top-level))), ' |
| 176 'Parameter(s(b) in s(bar),' | 174 'Parameter(s(b) in s(bar),' |
| 177 ' type = TypeVariable(s(T) in s(C),' | 175 ' type = TypeVariable(s(T) in s(C),' |
| 178 ' upperBound = Class(s(Object) in s(dart.core), top-level))), ' | 176 ' upperBound = Class(s(Object) in s(dart.core), top-level))), ' |
| 179 'Parameter(s(c) in s(bar),' | 177 'Parameter(s(c) in s(bar),' |
| 180 ' type = Class(s(num) in s(dart.core), top-level))]', | 178 ' type = Class(s(num) in s(dart.core), top-level))]', |
| 181 barInC.parameters); | 179 barInC.parameters); |
| 182 } | 180 } |
| OLD | NEW |