| 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'; |
| 11 import 'package:compiler/src/closure.dart'; | 11 import 'package:compiler/src/closure.dart'; |
| 12 import 'package:compiler/src/commandline_options.dart'; | 12 import 'package:compiler/src/commandline_options.dart'; |
| 13 import 'package:compiler/src/common.dart'; | 13 import 'package:compiler/src/common.dart'; |
| 14 import 'package:compiler/src/constants/values.dart'; | 14 import 'package:compiler/src/constants/values.dart'; |
| 15 import 'package:compiler/src/compiler.dart'; | 15 import 'package:compiler/src/compiler.dart'; |
| 16 import 'package:compiler/src/elements/resolution_types.dart'; | 16 import 'package:compiler/src/elements/resolution_types.dart'; |
| 17 import 'package:compiler/src/elements/types.dart'; |
| 17 import 'package:compiler/src/deferred_load.dart'; | 18 import 'package:compiler/src/deferred_load.dart'; |
| 18 import 'package:compiler/src/elements/elements.dart'; | 19 import 'package:compiler/src/elements/elements.dart'; |
| 19 import 'package:compiler/src/elements/entities.dart'; | 20 import 'package:compiler/src/elements/entities.dart'; |
| 20 import 'package:compiler/src/enqueue.dart'; | 21 import 'package:compiler/src/enqueue.dart'; |
| 21 import 'package:compiler/src/filenames.dart'; | 22 import 'package:compiler/src/filenames.dart'; |
| 22 import 'package:compiler/src/js_backend/js_backend.dart'; | 23 import 'package:compiler/src/js_backend/js_backend.dart'; |
| 23 import 'package:compiler/src/js_backend/backend_usage.dart'; | 24 import 'package:compiler/src/js_backend/backend_usage.dart'; |
| 24 import 'package:compiler/src/serialization/equivalence.dart'; | 25 import 'package:compiler/src/serialization/equivalence.dart'; |
| 25 import 'package:compiler/src/tree/nodes.dart'; | 26 import 'package:compiler/src/tree/nodes.dart'; |
| 26 import 'package:compiler/src/universe/class_set.dart'; | 27 import 'package:compiler/src/universe/class_set.dart'; |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 109 verbose: verbose); | 110 verbose: verbose); |
| 110 checkBackendInfo(compilerNormal, compilerDeserialized, verbose: verbose); | 111 checkBackendInfo(compilerNormal, compilerDeserialized, verbose: verbose); |
| 111 }); | 112 }); |
| 112 } | 113 } |
| 113 | 114 |
| 114 void checkResolutionEnqueuers( | 115 void checkResolutionEnqueuers( |
| 115 BackendUsage backendUsage1, | 116 BackendUsage backendUsage1, |
| 116 BackendUsage backendUsage2, | 117 BackendUsage backendUsage2, |
| 117 ResolutionEnqueuer enqueuer1, | 118 ResolutionEnqueuer enqueuer1, |
| 118 ResolutionEnqueuer enqueuer2, | 119 ResolutionEnqueuer enqueuer2, |
| 119 {bool typeEquivalence(ResolutionDartType a, ResolutionDartType b): | 120 {bool elementEquivalence(Entity a, Entity b): areElementsEquivalent, |
| 120 areTypesEquivalent, | 121 bool typeEquivalence(DartType a, DartType b): areTypesEquivalent, |
| 121 bool elementFilter(Element element), | 122 bool elementFilter(Element element), |
| 122 bool verbose: false}) { | 123 bool verbose: false}) { |
| 123 checkSets(enqueuer1.processedEntities, enqueuer2.processedEntities, | 124 checkSets(enqueuer1.processedEntities, enqueuer2.processedEntities, |
| 124 "Processed element mismatch", areElementsEquivalent, elementFilter: (e) { | 125 "Processed element mismatch", elementEquivalence, elementFilter: (e) { |
| 125 return elementFilter != null ? elementFilter(e) : true; | 126 return elementFilter != null ? elementFilter(e) : true; |
| 126 }, verbose: verbose); | 127 }, verbose: verbose); |
| 127 | 128 |
| 128 ElementResolutionWorldBuilder worldBuilder1 = enqueuer1.worldBuilder; | 129 ResolutionWorldBuilderBase worldBuilder1 = enqueuer1.worldBuilder; |
| 129 ElementResolutionWorldBuilder worldBuilder2 = enqueuer2.worldBuilder; | 130 ResolutionWorldBuilderBase worldBuilder2 = enqueuer2.worldBuilder; |
| 130 | 131 |
| 131 checkMaps( | 132 checkMaps( |
| 132 worldBuilder1.getInstantiationMap(), | 133 worldBuilder1.getInstantiationMap(), |
| 133 worldBuilder2.getInstantiationMap(), | 134 worldBuilder2.getInstantiationMap(), |
| 134 "Instantiated classes mismatch", | 135 "Instantiated classes mismatch", |
| 135 areElementsEquivalent, | 136 elementEquivalence, |
| 136 (a, b) => areInstantiationInfosEquivalent(a, b, typeEquivalence), | 137 (a, b) => areInstantiationInfosEquivalent(a, b, typeEquivalence), |
| 137 verbose: verbose); | 138 verbose: verbose); |
| 138 | 139 |
| 139 checkSets( | 140 checkSets( |
| 140 enqueuer1.worldBuilder.directlyInstantiatedClasses, | 141 enqueuer1.worldBuilder.directlyInstantiatedClasses, |
| 141 enqueuer2.worldBuilder.directlyInstantiatedClasses, | 142 enqueuer2.worldBuilder.directlyInstantiatedClasses, |
| 142 "Directly instantiated classes mismatch", | 143 "Directly instantiated classes mismatch", |
| 143 areElementsEquivalent, | 144 elementEquivalence, |
| 144 verbose: verbose); | 145 verbose: verbose); |
| 145 | 146 |
| 146 checkSets( | 147 checkSets( |
| 147 enqueuer1.worldBuilder.instantiatedTypes, | 148 enqueuer1.worldBuilder.instantiatedTypes, |
| 148 enqueuer2.worldBuilder.instantiatedTypes, | 149 enqueuer2.worldBuilder.instantiatedTypes, |
| 149 "Instantiated types mismatch", | 150 "Instantiated types mismatch", |
| 150 typeEquivalence, | 151 typeEquivalence, |
| 151 verbose: verbose); | 152 verbose: verbose); |
| 152 | 153 |
| 153 checkSets(enqueuer1.worldBuilder.isChecks, enqueuer2.worldBuilder.isChecks, | 154 checkSets(enqueuer1.worldBuilder.isChecks, enqueuer2.worldBuilder.isChecks, |
| (...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 455 } | 456 } |
| 456 | 457 |
| 457 bool areInstancesEquivalent(Instance instance1, Instance instance2, | 458 bool areInstancesEquivalent(Instance instance1, Instance instance2, |
| 458 bool typeEquivalence(ResolutionDartType a, ResolutionDartType b)) { | 459 bool typeEquivalence(ResolutionDartType a, ResolutionDartType b)) { |
| 459 ResolutionInterfaceType type1 = instance1.type; | 460 ResolutionInterfaceType type1 = instance1.type; |
| 460 ResolutionInterfaceType type2 = instance2.type; | 461 ResolutionInterfaceType type2 = instance2.type; |
| 461 return typeEquivalence(type1, type2) && | 462 return typeEquivalence(type1, type2) && |
| 462 instance1.kind == instance2.kind && | 463 instance1.kind == instance2.kind && |
| 463 instance1.isRedirection == instance2.isRedirection; | 464 instance1.isRedirection == instance2.isRedirection; |
| 464 } | 465 } |
| OLD | NEW |