| OLD | NEW |
| 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2017, 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 // Partial test that the closed world computed from [WorldImpact]s derived from | 5 // Partial test that the closed world computed from [WorldImpact]s derived from |
| 6 // kernel is equivalent to the original computed from resolution. | 6 // kernel is equivalent to the original computed from resolution. |
| 7 library dart2js.kernel.closed_world2_test; | 7 library dart2js.kernel.closed_world2_test; |
| 8 | 8 |
| 9 import 'dart:async'; | 9 import 'dart:async'; |
| 10 | 10 |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 157 Expect.isFalse(compiler2.compilationFailed); | 157 Expect.isFalse(compiler2.compilationFailed); |
| 158 | 158 |
| 159 KernelEquivalence equivalence = new KernelEquivalence(elementMap); | 159 KernelEquivalence equivalence = new KernelEquivalence(elementMap); |
| 160 | 160 |
| 161 ElementEnvironment environment2 = compiler2.elementEnvironment; | 161 ElementEnvironment environment2 = compiler2.elementEnvironment; |
| 162 checkElementEnvironment(environment1, environment2, equivalence); | 162 checkElementEnvironment(environment1, environment2, equivalence); |
| 163 | 163 |
| 164 ResolutionEnqueuer enqueuer2 = compiler2.enqueuer.resolution; | 164 ResolutionEnqueuer enqueuer2 = compiler2.enqueuer.resolution; |
| 165 BackendUsage backendUsage2 = compiler2.backend.backendUsage; | 165 BackendUsage backendUsage2 = compiler2.backend.backendUsage; |
| 166 ClosedWorld closedWorld2 = compiler2.resolutionWorldBuilder.closeWorld(); | 166 ClosedWorld closedWorld2 = compiler2.resolutionWorldBuilder.closeWorld(); |
| 167 |
| 168 checkNativeClasses(compiler1, compiler2, equivalence); |
| 169 |
| 167 checkBackendUsage(backendUsage1, backendUsage2, equivalence); | 170 checkBackendUsage(backendUsage1, backendUsage2, equivalence); |
| 168 | 171 |
| 169 checkResolutionEnqueuers(backendUsage1, backendUsage2, enqueuer1, enqueuer2, | 172 checkResolutionEnqueuers(backendUsage1, backendUsage2, enqueuer1, enqueuer2, |
| 170 elementEquivalence: equivalence.entityEquivalence, | 173 elementEquivalence: equivalence.entityEquivalence, |
| 171 typeEquivalence: (ResolutionDartType a, DartType b) { | 174 typeEquivalence: (ResolutionDartType a, DartType b) { |
| 172 return equivalence.typeEquivalence(unalias(a), b); | 175 return equivalence.typeEquivalence(unalias(a), b); |
| 173 }, elementFilter: elementFilter, verbose: arguments.verbose); | 176 }, elementFilter: elementFilter, verbose: arguments.verbose); |
| 174 | 177 |
| 175 checkClosedWorlds(closedWorld1, closedWorld2, equivalence.entityEquivalence, | 178 checkClosedWorlds(closedWorld1, closedWorld2, equivalence.entityEquivalence, |
| 176 verbose: arguments.verbose); | 179 verbose: arguments.verbose); |
| 177 | 180 |
| 178 return ResultKind.success; | 181 return ResultKind.success; |
| 179 } | 182 } |
| 180 | 183 |
| 184 void checkNativeClasses( |
| 185 Compiler compiler1, Compiler compiler2, KernelEquivalence equivalence) { |
| 186 Iterable<ClassEntity> nativeClasses1 = compiler1 |
| 187 .backend.nativeResolutionEnqueuerForTesting.nativeClassesForTesting; |
| 188 Iterable<ClassEntity> nativeClasses2 = compiler2 |
| 189 .backend.nativeResolutionEnqueuerForTesting.nativeClassesForTesting; |
| 190 |
| 191 checkSetEquivalence(compiler1, compiler2, 'nativeClasses', nativeClasses1, |
| 192 nativeClasses2, equivalence.entityEquivalence); |
| 193 |
| 194 Iterable<ClassEntity> registeredClasses1 = compiler1 |
| 195 .backend.nativeResolutionEnqueuerForTesting.registeredClassesForTesting; |
| 196 Iterable<ClassEntity> registeredClasses2 = compiler2 |
| 197 .backend.nativeResolutionEnqueuerForTesting.registeredClassesForTesting; |
| 198 |
| 199 checkSetEquivalence(compiler1, compiler2, 'registeredClasses', |
| 200 registeredClasses1, registeredClasses2, equivalence.entityEquivalence); |
| 201 } |
| 202 |
| 181 void checkNativeBasicData(NativeBasicDataImpl data1, NativeBasicDataImpl data2, | 203 void checkNativeBasicData(NativeBasicDataImpl data1, NativeBasicDataImpl data2, |
| 182 KernelEquivalence equivalence) { | 204 KernelEquivalence equivalence) { |
| 183 checkMapEquivalence( | 205 checkMapEquivalence( |
| 184 data1, | 206 data1, |
| 185 data2, | 207 data2, |
| 186 'nativeClassTagInfo', | 208 'nativeClassTagInfo', |
| 187 data1.nativeClassTagInfo, | 209 data1.nativeClassTagInfo, |
| 188 data2.nativeClassTagInfo, | 210 data2.nativeClassTagInfo, |
| 189 equivalence.entityEquivalence, | 211 equivalence.entityEquivalence, |
| 190 (a, b) => a == b); | 212 (a, b) => a == b); |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 278 | 300 |
| 279 classes2.add(cls2); | 301 classes2.add(cls2); |
| 280 }); | 302 }); |
| 281 env2.forEachClass(lib2, (ClassEntity cls2) { | 303 env2.forEachClass(lib2, (ClassEntity cls2) { |
| 282 Expect.isTrue(classes2.contains(cls2), "Extra class $cls2 in $lib2"); | 304 Expect.isTrue(classes2.contains(cls2), "Extra class $cls2 in $lib2"); |
| 283 }); | 305 }); |
| 284 }); | 306 }); |
| 285 | 307 |
| 286 // TODO(johnniwinther): Test the remaining properties of [ElementEnvironment]. | 308 // TODO(johnniwinther): Test the remaining properties of [ElementEnvironment]. |
| 287 } | 309 } |
| OLD | NEW |