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 |