Index: tests/compiler/dart2js/serialization_resolved_ast_test.dart |
diff --git a/tests/compiler/dart2js/serialization_impact_test.dart b/tests/compiler/dart2js/serialization_resolved_ast_test.dart |
similarity index 50% |
copy from tests/compiler/dart2js/serialization_impact_test.dart |
copy to tests/compiler/dart2js/serialization_resolved_ast_test.dart |
index 1999237b8b34bd8622e14f3bbbf84c11011b9e09..26baa734aca05ec8762e3b654940edd6f103f4d6 100644 |
--- a/tests/compiler/dart2js/serialization_impact_test.dart |
+++ b/tests/compiler/dart2js/serialization_resolved_ast_test.dart |
@@ -2,29 +2,35 @@ |
// for details. All rights reserved. Use of this source code is governed by a |
// BSD-style license that can be found in the LICENSE file. |
-library dart2js.serialization_impact_test; |
+library dart2js.serialization_resolved_ast_test; |
import 'dart:async'; |
import 'package:async_helper/async_helper.dart'; |
+import 'package:expect/expect.dart'; |
import 'package:compiler/src/commandline_options.dart'; |
-import 'package:compiler/src/common/resolution.dart'; |
+import 'package:compiler/src/common/backend_api.dart'; |
+import 'package:compiler/src/common/names.dart'; |
import 'package:compiler/src/compiler.dart'; |
import 'package:compiler/src/elements/elements.dart'; |
import 'package:compiler/src/filenames.dart'; |
import 'package:compiler/src/serialization/equivalence.dart'; |
import 'memory_compiler.dart'; |
import 'serialization_helper.dart'; |
+import 'serialization_test_data.dart'; |
import 'serialization_test_helper.dart'; |
+ |
main(List<String> arguments) { |
asyncTest(() async { |
- String serializedData = await serializeDartCore(); |
+ String serializedData = await serializeDartCore(serializeResolvedAst: true); |
if (arguments.isNotEmpty) { |
Uri entryPoint = Uri.base.resolve(nativeToUriPath(arguments.last)); |
await check(serializedData, entryPoint); |
} else { |
Uri entryPoint = Uri.parse('memory:main.dart'); |
- await check(serializedData, entryPoint, {'main.dart': 'main() {}'}); |
+ for (Test test in TESTS) { |
+ await check(serializedData, entryPoint, test.sourceFiles); |
+ } |
} |
}); |
} |
@@ -44,7 +50,42 @@ Future check( |
memorySourceFiles: sourceFiles, |
options: [Flags.analyzeOnly]); |
compilerDeserialized.resolution.retainCachesForTesting = true; |
- deserialize(compilerDeserialized, serializedData); |
+ deserialize( |
+ compilerDeserialized, serializedData, deserializeResolvedAst: true); |
await compilerDeserialized.run(entryPoint); |
+ checkAllResolvedAsts(compilerNormal, compilerDeserialized, verbose: true); |
+} |
+ |
+void checkAllResolvedAsts( |
+ Compiler compiler1, |
+ Compiler compiler2, |
+ {bool verbose: false}) { |
+ checkLoadedLibraryMembers( |
+ compiler1, |
+ compiler2, |
+ (Element member1) { |
+ return compiler1.resolution.hasResolvedAst(member1); |
+ }, |
+ checkResolvedAsts, |
+ verbose: true); |
+} |
+ |
+ |
+/// Check equivalence of [impact1] and [impact2]. |
+void checkResolvedAsts(Compiler compiler1, Element member1, |
+ Compiler compiler2, Element member2, |
+ {bool verbose: false}) { |
+ ResolvedAst resolvedAst1 = compiler1.resolution.getResolvedAst(member1); |
+ ResolvedAst resolvedAst2 = |
+ compiler2.serialization.deserializer.getResolvedAst(member2); |
+ |
+ if (resolvedAst1 == null || resolvedAst2 == null) return; |
+ |
+ if (verbose) { |
+ print('Checking resolved asts for $member1 vs $member2'); |
+ } |
+ |
+ testResolvedAstEquivalence( |
+ resolvedAst1, resolvedAst2, const CheckStrategy()); |
} |