| 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());
|
| }
|
|
|