Chromium Code Reviews| 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 library test.mixin_test; | 5 library test.mixin_test; |
| 6 | 6 |
| 7 import 'dart:mirrors'; | 7 import 'dart:mirrors'; |
| 8 | 8 |
| 9 import 'package:expect/expect.dart'; | 9 import 'package:expect/expect.dart'; |
| 10 | 10 |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 54 Expect.equals(a, b); | 54 Expect.equals(a, b); |
| 55 expect(stringify(a), b); | 55 expect(stringify(a), b); |
| 56 expect(stringify(b), a); | 56 expect(stringify(b), a); |
| 57 } | 57 } |
| 58 | 58 |
| 59 testMixin() { | 59 testMixin() { |
| 60 checkClass(Mixin, [ | 60 checkClass(Mixin, [ |
| 61 'Class(s(Mixin) in s(test.mixin_test), top-level)', | 61 'Class(s(Mixin) in s(test.mixin_test), top-level)', |
| 62 'Class(s(Object) in s(dart.core), top-level)', | 62 'Class(s(Object) in s(dart.core), top-level)', |
| 63 ]); | 63 ]); |
| 64 | |
|
ahe
2013/09/03 22:42:27
Ryan's whitespace changes made it hard for me to m
| |
| 64 expect( | 65 expect( |
| 65 '{i: Variable(s(i) in s(Mixin)),' | 66 '{i: Variable(s(i) in s(Mixin)),' |
| 66 ' m: Method(s(m) in s(Mixin))}', | 67 ' m: Method(s(m) in s(Mixin))}', |
| 67 reflectClass(Mixin).members); | 68 reflectClass(Mixin).members); |
| 68 expect( | 69 |
| 69 '{Mixin: Method(s(Mixin) in s(Mixin), constructor)}', | 70 expect('{Mixin: Method(s(Mixin) in s(Mixin), constructor)}', |
| 70 reflectClass(Mixin).constructors); | 71 reflectClass(Mixin).constructors); |
| 71 } | 72 } |
| 72 | 73 |
| 73 testMixin2() { | 74 testMixin2() { |
| 74 checkClass(Mixin2, [ | 75 checkClass(Mixin2, [ |
| 75 'Class(s(Mixin2) in s(test.mixin_test), top-level)', | 76 'Class(s(Mixin2) in s(test.mixin_test), top-level)', |
| 76 'Class(s(Object) in s(dart.core), top-level)', | 77 'Class(s(Object) in s(dart.core), top-level)', |
| 77 ]); | 78 ]); |
| 79 | |
| 78 expect( | 80 expect( |
| 79 '{i2: Variable(s(i2) in s(Mixin2)),' | 81 '{i2: Variable(s(i2) in s(Mixin2)),' |
| 80 ' m2: Method(s(m2) in s(Mixin2))}', | 82 ' m2: Method(s(m2) in s(Mixin2))}', |
| 81 reflectClass(Mixin2).members); | 83 reflectClass(Mixin2).members); |
| 82 expect( | 84 |
| 83 '{Mixin2: Method(s(Mixin2) in s(Mixin2), constructor)}', | 85 expect('{Mixin2: Method(s(Mixin2) in s(Mixin2), constructor)}', |
| 84 reflectClass(Mixin2).constructors); | 86 reflectClass(Mixin2).constructors); |
| 85 } | 87 } |
| 86 | 88 |
| 87 testMixinApplication() { | 89 testMixinApplication() { |
| 88 checkClass(MixinApplication, [ | 90 checkClass(MixinApplication, [ |
| 89 'Class(s(MixinApplication) in s(test.mixin_test), top-level)', | 91 'Class(s(MixinApplication) in s(test.mixin_test), top-level)', |
| 90 'Class(s(C) in s(test.model), top-level)', | 92 'Class(s(C) in s(test.model), top-level)', |
| 91 'Class(s(B) in s(test.model), top-level)', | 93 'Class(s(B) in s(test.model), top-level)', |
| 92 'Class(s(A) in s(test.model), top-level)', | 94 'Class(s(A) in s(test.model), top-level)', |
| 93 'Class(s(Object) in s(dart.core), top-level)', | 95 'Class(s(Object) in s(dart.core), top-level)', |
| 94 ]); | 96 ]); |
| 95 | 97 |
| 98 String owner = 'Mixin'; | |
| 99 owner = 'MixinApplication'; /// 01: ok | |
|
ngeoffray
2013/09/04 06:59:21
Does that mean the base file is a negative test?
ahe
2013/09/04 10:17:07
Not exactly. It means that you have two positive t
ngeoffray
2013/09/04 10:23:50
OK, could you please add a top-level comment on th
ahe
2013/09/04 13:31:40
Done.
| |
| 96 expect( | 100 expect( |
| 97 '{i: Variable(s(i) in s(Mixin)),' | 101 '{i: Variable(s(i) in s($owner)),' |
| 98 ' m: Method(s(m) in s(Mixin))}', | 102 ' m: Method(s(m) in s($owner))}', |
| 99 reflectClass(MixinApplication).members); | 103 reflectClass(MixinApplication).members); |
| 100 expect( | 104 |
| 101 '{MixinApplication: Method(s(MixinApplication) in s(MixinApplication),' | 105 expect('{MixinApplication: Method(s(MixinApplication) in s(MixinApplication),' |
| 102 ' constructor)}', | 106 ' constructor)}', |
| 103 reflectClass(MixinApplication).constructors); | 107 reflectClass(MixinApplication).constructors); |
| 104 | 108 |
| 105 expectSame(reflectClass(C), reflectClass(MixinApplication).superclass); | 109 expectSame(reflectClass(C), reflectClass(MixinApplication).superclass); |
| 106 } | 110 } |
| 107 | 111 |
| 108 testMixinApplicationA() { | 112 testMixinApplicationA() { |
| 113 // TODO(ahe): I don't think an anonymous mixin has an owner. | |
| 114 String owner = ' in s(test.mixin_test)'; | |
| 115 owner = ''; /// 01: ok | |
| 109 checkClass(MixinApplicationA, [ | 116 checkClass(MixinApplicationA, [ |
| 110 'Class(s(MixinApplicationA) in s(test.mixin_test), top-level)', | 117 'Class(s(MixinApplicationA) in s(test.mixin_test), top-level)', |
| 111 'Class(s(test.model.C with test.mixin_test.Mixin) in s(test.mixin_test),' | 118 'Class(s(test.model.C with test.mixin_test.Mixin)$owner, top-level)', |
| 112 ' top-level)', | |
| 113 'Class(s(C) in s(test.model), top-level)', | 119 'Class(s(C) in s(test.model), top-level)', |
| 114 'Class(s(B) in s(test.model), top-level)', | 120 'Class(s(B) in s(test.model), top-level)', |
| 115 'Class(s(A) in s(test.model), top-level)', | 121 'Class(s(A) in s(test.model), top-level)', |
| 116 'Class(s(Object) in s(dart.core), top-level)', | 122 'Class(s(Object) in s(dart.core), top-level)', |
| 117 ]); | 123 ]); |
| 118 | 124 |
| 125 owner = 'Mixin2'; | |
| 126 owner = 'MixinApplicationA'; /// 01: ok | |
| 119 expect( | 127 expect( |
| 120 '{i2: Variable(s(i2) in s(Mixin2)),' | 128 '{i2: Variable(s(i2) in s($owner)),' |
| 121 ' m2: Method(s(m2) in s(Mixin2))}', | 129 ' m2: Method(s(m2) in s($owner))}', |
| 122 reflectClass(MixinApplicationA).members); | 130 reflectClass(MixinApplicationA).members); |
| 131 | |
| 123 expect( | 132 expect( |
| 124 '{MixinApplicationA: Method(s(MixinApplicationA) in s(MixinApplicationA),' | 133 '{MixinApplicationA: Method(s(MixinApplicationA) in s(MixinApplicationA),' |
| 125 ' constructor)}', | 134 ' constructor)}', |
| 126 reflectClass(MixinApplicationA).constructors); | 135 reflectClass(MixinApplicationA).constructors); |
| 127 | 136 |
| 128 expect( | 137 expect( |
| 129 '{i: Variable(s(i) in s(Mixin)),' | 138 '{i: Variable(s(i) in s(Mixin)),' |
| 130 ' m: Method(s(m) in s(Mixin))}', | 139 ' m: Method(s(m) in s(Mixin))}', |
| 131 reflectClass(MixinApplicationA).superclass.members); | 140 reflectClass(MixinApplicationA).superclass.members); |
| 141 | |
| 142 String name = 'test.model.C with test.mixin_test.Mixin'; | |
| 143 name = 'Mixin'; /// 01: ok | |
| 132 expect( | 144 expect( |
| 133 '{test.model.C with test.mixin_test.Mixin:' | 145 '{$name:' |
| 134 ' Method(s(test.model.C with test.mixin_test.Mixin)' | 146 ' Method(s($name)' |
| 135 ' in s(test.model.C with test.mixin_test.Mixin), constructor)}', | 147 ' in s($name), constructor)}', |
| 136 reflectClass(MixinApplicationA).superclass.constructors); | 148 reflectClass(MixinApplicationA).superclass.constructors); |
| 137 | 149 |
| 138 expectSame( | 150 expectSame( |
| 139 reflectClass(C), | 151 reflectClass(C), |
| 140 reflectClass(MixinApplicationA).superclass.superclass); | 152 reflectClass(MixinApplicationA).superclass.superclass); |
| 141 } | 153 } |
| 142 | 154 |
| 143 testUnusedMixinApplication() { | 155 testUnusedMixinApplication() { |
| 144 checkClass(UnusedMixinApplication, [ | 156 checkClass(UnusedMixinApplication, [ |
| 145 'Class(s(UnusedMixinApplication) in s(test.mixin_test), top-level)', | 157 'Class(s(UnusedMixinApplication) in s(test.mixin_test), top-level)', |
| 146 'Class(s(C) in s(test.model), top-level)', | 158 'Class(s(C) in s(test.model), top-level)', |
| 147 'Class(s(B) in s(test.model), top-level)', | 159 'Class(s(B) in s(test.model), top-level)', |
| 148 'Class(s(A) in s(test.model), top-level)', | 160 'Class(s(A) in s(test.model), top-level)', |
| 149 'Class(s(Object) in s(dart.core), top-level)', | 161 'Class(s(Object) in s(dart.core), top-level)', |
| 150 ]); | 162 ]); |
| 151 | 163 |
| 164 String owner = 'Mixin'; | |
| 165 owner = 'UnusedMixinApplication'; /// 01: ok | |
| 152 expect( | 166 expect( |
| 153 '{i: Variable(s(i) in s(Mixin)),' | 167 '{i: Variable(s(i) in s($owner)),' |
| 154 ' m: Method(s(m) in s(Mixin))}', | 168 ' m: Method(s(m) in s($owner))}', |
| 155 reflectClass(UnusedMixinApplication).members); | 169 reflectClass(UnusedMixinApplication).members); |
| 170 | |
| 156 expect( | 171 expect( |
| 157 '{UnusedMixinApplication: Method(s(UnusedMixinApplication)' | 172 '{UnusedMixinApplication: Method(s(UnusedMixinApplication)' |
| 158 ' in s(UnusedMixinApplication), constructor)}', | 173 ' in s(UnusedMixinApplication), constructor)}', |
| 159 reflectClass(UnusedMixinApplication).constructors); | 174 reflectClass(UnusedMixinApplication).constructors); |
| 160 | 175 |
| 161 expectSame(reflectClass(C), reflectClass(UnusedMixinApplication).superclass); | 176 expectSame(reflectClass(C), reflectClass(UnusedMixinApplication).superclass); |
| 162 } | 177 } |
| 163 | 178 |
| 164 testSubclass() { | 179 testSubclass() { |
| 180 String owner = ' in s(test.mixin_test)'; | |
| 181 owner = ''; /// 01: ok | |
| 165 checkClass(Subclass, [ | 182 checkClass(Subclass, [ |
| 166 'Class(s(Subclass) in s(test.mixin_test), top-level)', | 183 'Class(s(Subclass) in s(test.mixin_test), top-level)', |
| 167 'Class(s(test.model.C with test.mixin_test.Mixin) in s(test.mixin_test),' | 184 'Class(s(test.model.C with test.mixin_test.Mixin)$owner, top-level)', |
| 168 ' top-level)', | |
| 169 'Class(s(C) in s(test.model), top-level)', | 185 'Class(s(C) in s(test.model), top-level)', |
| 170 'Class(s(B) in s(test.model), top-level)', | 186 'Class(s(B) in s(test.model), top-level)', |
| 171 'Class(s(A) in s(test.model), top-level)', | 187 'Class(s(A) in s(test.model), top-level)', |
| 172 'Class(s(Object) in s(dart.core), top-level)', | 188 'Class(s(Object) in s(dart.core), top-level)', |
| 173 ]); | 189 ]); |
| 174 | 190 |
| 175 expect( | 191 expect( |
| 176 '{f: Method(s(f) in s(Subclass))}', | 192 '{f: Method(s(f) in s(Subclass))}', |
| 177 reflectClass(Subclass).members); | 193 reflectClass(Subclass).members); |
| 194 | |
| 178 expect( | 195 expect( |
| 179 '{Subclass: Method(s(Subclass) in s(Subclass), constructor)}', | 196 '{Subclass: Method(s(Subclass) in s(Subclass), constructor)}', |
| 180 reflectClass(Subclass).constructors); | 197 reflectClass(Subclass).constructors); |
| 181 | 198 |
| 182 expect( | 199 expect( |
| 183 '{i: Variable(s(i) in s(Mixin)),' | 200 '{i: Variable(s(i) in s(Mixin)),' |
| 184 ' m: Method(s(m) in s(Mixin))}', | 201 ' m: Method(s(m) in s(Mixin))}', |
| 185 reflectClass(Subclass).superclass.members); | 202 reflectClass(Subclass).superclass.members); |
| 203 | |
| 204 String name = 'test.model.C with test.mixin_test.Mixin'; | |
| 205 name = 'Mixin'; /// 01: ok | |
| 186 expect( | 206 expect( |
| 187 '{test.model.C with test.mixin_test.Mixin:' | 207 '{$name:' |
| 188 ' Method(s(test.model.C with test.mixin_test.Mixin)' | 208 ' Method(s($name)' |
| 189 ' in s(test.model.C with test.mixin_test.Mixin), constructor)}', | 209 ' in s($name), constructor)}', |
| 190 reflectClass(Subclass).superclass.constructors); | 210 reflectClass(Subclass).superclass.constructors); |
| 191 | 211 |
| 192 expectSame( | 212 expectSame( |
| 193 reflectClass(C), | 213 reflectClass(C), |
| 194 reflectClass(Subclass).superclass.superclass); | 214 reflectClass(Subclass).superclass.superclass); |
| 195 } | 215 } |
| 196 | 216 |
| 197 testSubclass2() { | 217 testSubclass2() { |
| 198 checkClass(Subclass2, [ | 218 checkClass(Subclass2, [ |
| 199 'Class(s(Subclass2) in s(test.mixin_test), top-level)', | 219 'Class(s(Subclass2) in s(test.mixin_test), top-level)', |
| 200 'Class(s(MixinApplication) in s(test.mixin_test), top-level)', | 220 'Class(s(MixinApplication) in s(test.mixin_test), top-level)', |
| 201 'Class(s(C) in s(test.model), top-level)', | 221 'Class(s(C) in s(test.model), top-level)', |
| 202 'Class(s(B) in s(test.model), top-level)', | 222 'Class(s(B) in s(test.model), top-level)', |
| 203 'Class(s(A) in s(test.model), top-level)', | 223 'Class(s(A) in s(test.model), top-level)', |
| 204 'Class(s(Object) in s(dart.core), top-level)', | 224 'Class(s(Object) in s(dart.core), top-level)', |
| 205 ]); | 225 ]); |
| 206 | 226 |
| 207 expect( | 227 expect( |
| 208 '{g: Method(s(g) in s(Subclass2))}', | 228 '{g: Method(s(g) in s(Subclass2))}', |
| 209 reflectClass(Subclass2).members); | 229 reflectClass(Subclass2).members); |
| 230 | |
| 210 expect( | 231 expect( |
| 211 '{Subclass2: Method(s(Subclass2) in s(Subclass2), constructor)}', | 232 '{Subclass2: Method(s(Subclass2) in s(Subclass2), constructor)}', |
| 212 reflectClass(Subclass2).constructors); | 233 reflectClass(Subclass2).constructors); |
| 213 | 234 |
| 214 expectSame( | 235 expectSame( |
| 215 reflectClass(MixinApplication), | 236 reflectClass(MixinApplication), |
| 216 reflectClass(Subclass2).superclass); | 237 reflectClass(Subclass2).superclass); |
| 217 } | 238 } |
| 218 | 239 |
| 219 testSubclassA() { | 240 testSubclassA() { |
| 241 // TODO(ahe): I don't think an anonymous mixin has an owner. | |
| 242 String owner = ' in s(test.mixin_test)'; | |
| 243 owner = ''; /// 01: ok | |
| 220 checkClass(SubclassA, [ | 244 checkClass(SubclassA, [ |
| 221 'Class(s(SubclassA) in s(test.mixin_test), top-level)', | 245 'Class(s(SubclassA) in s(test.mixin_test), top-level)', |
| 222 'Class(s(test.model.C with test.mixin_test.Mixin, test.mixin_test.Mixin2)' | 246 'Class(s(test.model.C with test.mixin_test.Mixin, test.mixin_test.Mixin2)' |
| 223 ' in s(test.mixin_test), top-level)', | 247 '$owner, top-level)', |
| 224 'Class(s(test.model.C with test.mixin_test.Mixin) in s(test.mixin_test),' | 248 'Class(s(test.model.C with test.mixin_test.Mixin)$owner, top-level)', |
| 225 ' top-level)', | |
| 226 'Class(s(C) in s(test.model), top-level)', | 249 'Class(s(C) in s(test.model), top-level)', |
| 227 'Class(s(B) in s(test.model), top-level)', | 250 'Class(s(B) in s(test.model), top-level)', |
| 228 'Class(s(A) in s(test.model), top-level)', | 251 'Class(s(A) in s(test.model), top-level)', |
| 229 'Class(s(Object) in s(dart.core), top-level)', | 252 'Class(s(Object) in s(dart.core), top-level)', |
| 230 ]); | 253 ]); |
| 231 | 254 |
| 232 expect( | 255 expect( |
| 233 '{fa: Method(s(fa) in s(SubclassA))}', | 256 '{fa: Method(s(fa) in s(SubclassA))}', |
| 234 reflectClass(SubclassA).members); | 257 reflectClass(SubclassA).members); |
| 258 | |
| 235 expect( | 259 expect( |
| 236 '{SubclassA: Method(s(SubclassA) in s(SubclassA), constructor)}', | 260 '{SubclassA: Method(s(SubclassA) in s(SubclassA), constructor)}', |
| 237 reflectClass(SubclassA).constructors); | 261 reflectClass(SubclassA).constructors); |
| 238 | 262 |
| 239 expect( | 263 expect( |
| 240 '{i2: Variable(s(i2) in s(Mixin2)),' | 264 '{i2: Variable(s(i2) in s(Mixin2)),' |
| 241 ' m2: Method(s(m2) in s(Mixin2))}', | 265 ' m2: Method(s(m2) in s(Mixin2))}', |
| 242 reflectClass(SubclassA).superclass.members); | 266 reflectClass(SubclassA).superclass.members); |
| 267 | |
| 268 String name = | |
| 269 'test.model.C with test.mixin_test.Mixin, test.mixin_test.Mixin2'; | |
| 270 name = 'Mixin2'; /// 01: ok | |
| 243 expect( | 271 expect( |
| 244 '{test.model.C with test.mixin_test.Mixin, test.mixin_test.Mixin2:' | 272 '{$name: Method(s($name) in s($name), constructor)}', |
| 245 ' Method(s(test.model.C with test.mixin_test.Mixin,' | |
| 246 ' test.mixin_test.Mixin2) in s(test.model.C with test.mixin_test.Mixin,' | |
| 247 ' test.mixin_test.Mixin2), constructor)}', | |
| 248 reflectClass(SubclassA).superclass.constructors); | 273 reflectClass(SubclassA).superclass.constructors); |
| 249 | 274 |
| 250 expect( | 275 expect( |
| 251 '{i: Variable(s(i) in s(Mixin)),' | 276 '{i: Variable(s(i) in s(Mixin)),' |
| 252 ' m: Method(s(m) in s(Mixin))}', | 277 ' m: Method(s(m) in s(Mixin))}', |
| 253 reflectClass(SubclassA).superclass.superclass.members); | 278 reflectClass(SubclassA).superclass.superclass.members); |
| 279 | |
| 280 name = 'test.model.C with test.mixin_test.Mixin'; | |
| 281 name = 'Mixin'; /// 01: ok | |
| 254 expect( | 282 expect( |
| 255 '{test.model.C with test.mixin_test.Mixin:' | 283 '{$name:' |
| 256 ' Method(s(test.model.C with test.mixin_test.Mixin)' | 284 ' Method(s($name)' |
| 257 ' in s(test.model.C with test.mixin_test.Mixin), constructor)}', | 285 ' in s($name), constructor)}', |
| 258 reflectClass(SubclassA).superclass.superclass.constructors); | 286 reflectClass(SubclassA).superclass.superclass.constructors); |
| 259 | 287 |
| 260 expectSame( | 288 expectSame( |
| 261 reflectClass(C), | 289 reflectClass(C), |
| 262 reflectClass(SubclassA).superclass.superclass.superclass); | 290 reflectClass(SubclassA).superclass.superclass.superclass); |
| 263 } | 291 } |
| 264 | 292 |
| 265 testSubclass2A() { | 293 testSubclass2A() { |
| 294 // TODO(ahe): I don't think an anonymous mixin has an owner. | |
| 295 String owner = ' in s(test.mixin_test)'; | |
| 296 owner = ''; /// 01: ok | |
| 266 checkClass(Subclass2A, [ | 297 checkClass(Subclass2A, [ |
| 267 'Class(s(Subclass2A) in s(test.mixin_test), top-level)', | 298 'Class(s(Subclass2A) in s(test.mixin_test), top-level)', |
| 268 'Class(s(MixinApplicationA) in s(test.mixin_test), top-level)', | 299 'Class(s(MixinApplicationA) in s(test.mixin_test), top-level)', |
| 269 'Class(s(test.model.C with test.mixin_test.Mixin) in s(test.mixin_test),' | 300 'Class(s(test.model.C with test.mixin_test.Mixin)$owner,' |
| 270 ' top-level)', | 301 ' top-level)', |
| 271 'Class(s(C) in s(test.model), top-level)', | 302 'Class(s(C) in s(test.model), top-level)', |
| 272 'Class(s(B) in s(test.model), top-level)', | 303 'Class(s(B) in s(test.model), top-level)', |
| 273 'Class(s(A) in s(test.model), top-level)', | 304 'Class(s(A) in s(test.model), top-level)', |
| 274 'Class(s(Object) in s(dart.core), top-level)', | 305 'Class(s(Object) in s(dart.core), top-level)', |
| 275 ]); | 306 ]); |
| 276 | 307 |
| 277 expect( | 308 expect( |
| 278 '{ga: Method(s(ga) in s(Subclass2A))}', | 309 '{ga: Method(s(ga) in s(Subclass2A))}', |
| 279 reflectClass(Subclass2A).members); | 310 reflectClass(Subclass2A).members); |
| 311 | |
| 280 expect( | 312 expect( |
| 281 '{Subclass2A: Method(s(Subclass2A) in s(Subclass2A), constructor)}', | 313 '{Subclass2A: Method(s(Subclass2A) in s(Subclass2A), constructor)}', |
| 282 reflectClass(Subclass2A).constructors); | 314 reflectClass(Subclass2A).constructors); |
| 283 | 315 |
| 284 expectSame(reflectClass(MixinApplicationA), | 316 expectSame(reflectClass(MixinApplicationA), |
| 285 reflectClass(Subclass2A).superclass); | 317 reflectClass(Subclass2A).superclass); |
| 286 } | 318 } |
| 287 | 319 |
| 288 main() { | 320 main() { |
| 289 testMixin(); | 321 testMixin(); |
| 290 testMixin2(); | 322 testMixin2(); |
| 291 testMixinApplication(); | 323 testMixinApplication(); |
| 292 testMixinApplicationA(); | 324 testMixinApplicationA(); |
| 293 testUnusedMixinApplication(); | 325 testUnusedMixinApplication(); |
| 294 testSubclass(); | 326 testSubclass(); |
| 295 testSubclass2(); | 327 testSubclass2(); |
| 296 testSubclassA(); | 328 testSubclassA(); |
| 297 testSubclass2A(); | 329 testSubclass2A(); |
| 298 } | 330 } |
| OLD | NEW |