| OLD | NEW |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 dart2js.serialization_model_test; | 5 library dart2js.serialization_model_test; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 import 'dart:io'; | 8 import 'dart:io'; |
| 9 import 'package:async_helper/async_helper.dart'; | 9 import 'package:async_helper/async_helper.dart'; |
| 10 import 'package:expect/expect.dart'; | 10 import 'package:expect/expect.dart'; |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 91 await compilerDeserialized.run(entryPoint); | 91 await compilerDeserialized.run(entryPoint); |
| 92 compilerDeserialized.closeResolution(); | 92 compilerDeserialized.closeResolution(); |
| 93 return compilerDeserialized; | 93 return compilerDeserialized; |
| 94 }); | 94 }); |
| 95 | 95 |
| 96 return measure(title, 'check models', () async { | 96 return measure(title, 'check models', () async { |
| 97 checkAllImpacts(compilerNormal, compilerDeserialized, verbose: verbose); | 97 checkAllImpacts(compilerNormal, compilerDeserialized, verbose: verbose); |
| 98 checkResolutionEnqueuers(compilerNormal.enqueuer.resolution, | 98 checkResolutionEnqueuers(compilerNormal.enqueuer.resolution, |
| 99 compilerDeserialized.enqueuer.resolution, | 99 compilerDeserialized.enqueuer.resolution, |
| 100 verbose: verbose); | 100 verbose: verbose); |
| 101 checkClosedWorlds(compilerNormal.resolverWorld.closedWorldForTesting, | 101 checkClosedWorlds( |
| 102 compilerDeserialized.resolverWorld.closedWorldForTesting, | 102 compilerNormal.resolutionWorldBuilder.closedWorldForTesting, |
| 103 compilerDeserialized.resolutionWorldBuilder.closedWorldForTesting, |
| 103 verbose: verbose); | 104 verbose: verbose); |
| 104 checkBackendInfo(compilerNormal, compilerDeserialized, verbose: verbose); | 105 checkBackendInfo(compilerNormal, compilerDeserialized, verbose: verbose); |
| 105 }); | 106 }); |
| 106 } | 107 } |
| 107 | 108 |
| 108 void checkResolutionEnqueuers( | 109 void checkResolutionEnqueuers( |
| 109 ResolutionEnqueuer enqueuer1, ResolutionEnqueuer enqueuer2, | 110 ResolutionEnqueuer enqueuer1, ResolutionEnqueuer enqueuer2, |
| 110 {bool typeEquivalence(ResolutionDartType a, ResolutionDartType b): | 111 {bool typeEquivalence(ResolutionDartType a, ResolutionDartType b): |
| 111 areTypesEquivalent, | 112 areTypesEquivalent, |
| 112 bool elementFilter(Element element), | 113 bool elementFilter(Element element), |
| 113 bool verbose: false}) { | 114 bool verbose: false}) { |
| 114 checkSets(enqueuer1.processedEntities, enqueuer2.processedEntities, | 115 checkSets(enqueuer1.processedEntities, enqueuer2.processedEntities, |
| 115 "Processed element mismatch", areElementsEquivalent, | 116 "Processed element mismatch", areElementsEquivalent, |
| 116 elementFilter: elementFilter, verbose: verbose); | 117 elementFilter: elementFilter, verbose: verbose); |
| 117 | 118 |
| 118 ResolutionWorldBuilderImpl worldBuilder1 = enqueuer1.universe; | 119 ResolutionWorldBuilderImpl worldBuilder1 = enqueuer1.worldBuilder; |
| 119 ResolutionWorldBuilderImpl worldBuilder2 = enqueuer2.universe; | 120 ResolutionWorldBuilderImpl worldBuilder2 = enqueuer2.worldBuilder; |
| 120 | 121 |
| 121 checkMaps( | 122 checkMaps( |
| 122 worldBuilder1.getInstantiationMap(), | 123 worldBuilder1.getInstantiationMap(), |
| 123 worldBuilder2.getInstantiationMap(), | 124 worldBuilder2.getInstantiationMap(), |
| 124 "Instantiated classes mismatch", | 125 "Instantiated classes mismatch", |
| 125 areElementsEquivalent, | 126 areElementsEquivalent, |
| 126 (a, b) => areInstantiationInfosEquivalent(a, b, typeEquivalence), | 127 (a, b) => areInstantiationInfosEquivalent(a, b, typeEquivalence), |
| 127 verbose: verbose); | 128 verbose: verbose); |
| 128 | 129 |
| 129 checkSets( | 130 checkSets( |
| 130 enqueuer1.universe.directlyInstantiatedClasses, | 131 enqueuer1.worldBuilder.directlyInstantiatedClasses, |
| 131 enqueuer2.universe.directlyInstantiatedClasses, | 132 enqueuer2.worldBuilder.directlyInstantiatedClasses, |
| 132 "Directly instantiated classes mismatch", | 133 "Directly instantiated classes mismatch", |
| 133 areElementsEquivalent, | 134 areElementsEquivalent, |
| 134 verbose: verbose); | 135 verbose: verbose); |
| 135 | 136 |
| 136 checkSets( | 137 checkSets( |
| 137 enqueuer1.universe.instantiatedTypes, | 138 enqueuer1.worldBuilder.instantiatedTypes, |
| 138 enqueuer2.universe.instantiatedTypes, | 139 enqueuer2.worldBuilder.instantiatedTypes, |
| 139 "Instantiated types mismatch", | 140 "Instantiated types mismatch", |
| 140 typeEquivalence, | 141 typeEquivalence, |
| 141 verbose: verbose); | 142 verbose: verbose); |
| 142 | 143 |
| 143 checkSets(enqueuer1.universe.isChecks, enqueuer2.universe.isChecks, | 144 checkSets(enqueuer1.worldBuilder.isChecks, enqueuer2.worldBuilder.isChecks, |
| 144 "Is-check mismatch", typeEquivalence, | 145 "Is-check mismatch", typeEquivalence, |
| 145 verbose: verbose); | 146 verbose: verbose); |
| 146 | 147 |
| 147 JavaScriptBackend backend1 = enqueuer1.backend; | 148 JavaScriptBackend backend1 = enqueuer1.backend; |
| 148 JavaScriptBackend backend2 = enqueuer2.backend; | 149 JavaScriptBackend backend2 = enqueuer2.backend; |
| 149 Expect.equals(backend1.hasInvokeOnSupport, backend2.hasInvokeOnSupport, | 150 Expect.equals(backend1.hasInvokeOnSupport, backend2.hasInvokeOnSupport, |
| 150 "JavaScriptBackend.hasInvokeOnSupport mismatch"); | 151 "JavaScriptBackend.hasInvokeOnSupport mismatch"); |
| 151 Expect.equals( | 152 Expect.equals( |
| 152 backend1.hasFunctionApplySupport, | 153 backend1.hasFunctionApplySupport, |
| 153 backend2.hasFunctionApplySupport, | 154 backend2.hasFunctionApplySupport, |
| (...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 439 a, b, (a, b) => areInstancesEquivalent(a, b, typeEquivalence))); | 440 a, b, (a, b) => areInstancesEquivalent(a, b, typeEquivalence))); |
| 440 return true; | 441 return true; |
| 441 } | 442 } |
| 442 | 443 |
| 443 bool areInstancesEquivalent(Instance instance1, Instance instance2, | 444 bool areInstancesEquivalent(Instance instance1, Instance instance2, |
| 444 bool typeEquivalence(ResolutionDartType a, ResolutionDartType b)) { | 445 bool typeEquivalence(ResolutionDartType a, ResolutionDartType b)) { |
| 445 return typeEquivalence(instance1.type, instance2.type) && | 446 return typeEquivalence(instance1.type, instance2.type) && |
| 446 instance1.kind == instance2.kind && | 447 instance1.kind == instance2.kind && |
| 447 instance1.isRedirection == instance2.isRedirection; | 448 instance1.isRedirection == instance2.isRedirection; |
| 448 } | 449 } |
| OLD | NEW |