Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(90)

Side by Side Diff: tests/compiler/dart2js/kernel/compile_from_dill_test.dart

Issue 2913713004: Add model test of CodegenWorldBuilder to compile_from_dill_test (Closed)
Patch Set: So much patch set for so small a typo. Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2017, 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 // Partial test that the closed world computed from [WorldImpact]s derived from 5 // Partial test that the closed world computed from [WorldImpact]s derived from
6 // kernel is equivalent to the original computed from resolution. 6 // kernel is equivalent to the original computed from resolution.
7 library dart2js.kernel.compile_from_dill_test; 7 library dart2js.kernel.compile_from_dill_test;
8 8
9 import 'dart:async'; 9 import 'dart:async';
10 import 'dart:io'; 10 import 'dart:io';
11 11
12 import 'package:async_helper/async_helper.dart'; 12 import 'package:async_helper/async_helper.dart';
13 import 'package:compiler/compiler_new.dart'; 13 import 'package:compiler/compiler_new.dart';
14 import 'package:compiler/src/commandline_options.dart'; 14 import 'package:compiler/src/commandline_options.dart';
15 import 'package:compiler/src/common.dart'; 15 import 'package:compiler/src/common.dart';
16 import 'package:compiler/src/compiler.dart'; 16 import 'package:compiler/src/compiler.dart';
17 import 'package:compiler/src/elements/resolution_types.dart'; 17 import 'package:compiler/src/elements/resolution_types.dart';
18 import 'package:compiler/src/elements/types.dart'; 18 import 'package:compiler/src/elements/types.dart';
19 import 'package:compiler/src/enqueue.dart';
20 import 'package:compiler/src/kernel/element_map.dart'; 19 import 'package:compiler/src/kernel/element_map.dart';
21 import 'package:compiler/src/kernel/kernel_strategy.dart'; 20 import 'package:compiler/src/kernel/kernel_strategy.dart';
22 import 'package:compiler/src/serialization/equivalence.dart'; 21 import 'package:compiler/src/serialization/equivalence.dart';
23 import 'package:compiler/src/resolution/enum_creator.dart'; 22 import 'package:compiler/src/resolution/enum_creator.dart';
24 import 'package:compiler/src/universe/world_builder.dart'; 23 import 'package:compiler/src/universe/world_builder.dart';
25 import 'package:compiler/src/world.dart'; 24 import 'package:compiler/src/world.dart';
26 import 'package:expect/expect.dart'; 25 import 'package:expect/expect.dart';
27 import '../memory_compiler.dart'; 26 import '../memory_compiler.dart';
28 import '../equivalence/check_functions.dart'; 27 import '../equivalence/check_functions.dart';
29 import '../equivalence/check_helpers.dart'; 28 import '../equivalence/check_helpers.dart';
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 } 86 }
88 if (collector.errors.isNotEmpty && skipErrors) { 87 if (collector.errors.isNotEmpty && skipErrors) {
89 print('Skipping due to errors.'); 88 print('Skipping due to errors.');
90 return ResultKind.errors; 89 return ResultKind.errors;
91 } 90 }
92 if (collector.warnings.isNotEmpty && skipWarnings) { 91 if (collector.warnings.isNotEmpty && skipWarnings) {
93 print('Skipping due to warnings.'); 92 print('Skipping due to warnings.');
94 return ResultKind.warnings; 93 return ResultKind.warnings;
95 } 94 }
96 Expect.isFalse(compiler1.compilationFailed); 95 Expect.isFalse(compiler1.compilationFailed);
97 ResolutionEnqueuer enqueuer1 = compiler1.enqueuer.resolution;
98 ClosedWorld closedWorld1 = 96 ClosedWorld closedWorld1 =
99 compiler1.resolutionWorldBuilder.closedWorldForTesting; 97 compiler1.resolutionWorldBuilder.closedWorldForTesting;
100 98
101 OutputCollector collector2 = new OutputCollector(); 99 OutputCollector collector2 = new OutputCollector();
102 Compiler compiler2 = await compileWithDill(entryPoint, const {}, 100 Compiler compiler2 = await compileWithDill(entryPoint, const {},
103 [Flags.disableTypeInference, Flags.enableAssertMessage], 101 [Flags.disableTypeInference, Flags.enableAssertMessage],
104 printSteps: true, compilerOutput: collector2); 102 printSteps: true, compilerOutput: collector2);
105 103
106 KernelFrontEndStrategy frontEndStrategy = compiler2.frontEndStrategy; 104 KernelFrontEndStrategy frontEndStrategy = compiler2.frontEndStrategy;
107 KernelToElementMap elementMap = frontEndStrategy.elementMap; 105 KernelToElementMap elementMap = frontEndStrategy.elementMap;
108 106
109 Expect.isFalse(compiler2.compilationFailed); 107 Expect.isFalse(compiler2.compilationFailed);
110 108
111 KernelEquivalence equivalence = new KernelEquivalence(elementMap); 109 KernelEquivalence equivalence = new KernelEquivalence(elementMap);
112 110
113 ResolutionEnqueuer enqueuer2 = compiler2.enqueuer.resolution;
114 ClosedWorld closedWorld2 = 111 ClosedWorld closedWorld2 =
115 compiler2.resolutionWorldBuilder.closedWorldForTesting; 112 compiler2.resolutionWorldBuilder.closedWorldForTesting;
116 113
117 checkBackendUsage(closedWorld1.backendUsage, closedWorld2.backendUsage, 114 checkBackendUsage(closedWorld1.backendUsage, closedWorld2.backendUsage,
118 equivalence.defaultStrategy); 115 equivalence.defaultStrategy);
119 116
120 checkResolutionEnqueuers(closedWorld1.backendUsage, closedWorld2.backendUsage, 117 checkResolutionEnqueuers(closedWorld1.backendUsage, closedWorld2.backendUsage,
121 enqueuer1, enqueuer2, elementEquivalence: equivalence.entityEquivalence, 118 compiler1.enqueuer.resolution, compiler2.enqueuer.resolution,
119 elementEquivalence: equivalence.entityEquivalence,
122 typeEquivalence: (ResolutionDartType a, DartType b) { 120 typeEquivalence: (ResolutionDartType a, DartType b) {
123 return equivalence.typeEquivalence(unalias(a), b); 121 return equivalence.typeEquivalence(unalias(a), b);
124 }, elementFilter: elementFilter, verbose: arguments.verbose); 122 }, elementFilter: elementFilter, verbose: arguments.verbose);
125 123
126 checkClosedWorlds(closedWorld1, closedWorld2, 124 checkClosedWorlds(closedWorld1, closedWorld2,
127 strategy: equivalence.defaultStrategy, 125 strategy: equivalence.defaultStrategy,
128 verbose: arguments.verbose, 126 verbose: arguments.verbose,
129 // TODO(johnniwinther,efortuna): Require closure class equivalence when 127 // TODO(johnniwinther,efortuna): Require closure class equivalence when
130 // these are supported. 128 // these are supported.
131 allowMissingClosureClasses: true); 129 allowMissingClosureClasses: true);
132 130
133 // TODO(johnniwinther): Perform equivalence tests on the model: codegen world 131 // TODO(johnniwinther): Perform equivalence tests on the model: codegen world
134 // impacts, codegen world builder, etc. 132 // impacts, program model, etc.
133
134 checkCodegenEnqueuers(compiler1.enqueuer.codegenEnqueuerForTesting,
135 compiler2.enqueuer.codegenEnqueuerForTesting,
136 elementEquivalence: equivalence.entityEquivalence,
137 typeEquivalence: (ResolutionDartType a, DartType b) {
138 return equivalence.typeEquivalence(unalias(a), b);
139 }, elementFilter: elementFilter, verbose: arguments.verbose);
135 140
136 collector1.outputMap 141 collector1.outputMap
137 .forEach((OutputType outputType, Map<String, BufferedOutputSink> map1) { 142 .forEach((OutputType outputType, Map<String, BufferedOutputSink> map1) {
138 if (outputType == OutputType.sourceMap) { 143 if (outputType == OutputType.sourceMap) {
139 // TODO(johnniwinther): Support source map from .dill. 144 // TODO(johnniwinther): Support source map from .dill.
140 return; 145 return;
141 } 146 }
142 Map<String, BufferedOutputSink> map2 = collector2.outputMap[outputType]; 147 Map<String, BufferedOutputSink> map2 = collector2.outputMap[outputType];
143 checkSets(map1.keys, map2.keys, 'output', equality); 148 checkSets(map1.keys, map2.keys, 'output', equality);
144 map1.forEach((String name, BufferedOutputSink output1) { 149 map1.forEach((String name, BufferedOutputSink output1) {
145 BufferedOutputSink output2 = map2[name]; 150 BufferedOutputSink output2 = map2[name];
146 Expect.stringEquals(output1.text, output2.text); 151 Expect.stringEquals(output1.text, output2.text);
147 }); 152 });
148 }); 153 });
149 return ResultKind.success; 154 return ResultKind.success;
150 } 155 }
OLDNEW
« no previous file with comments | « tests/compiler/dart2js/kernel/closed_world_test.dart ('k') | tests/compiler/dart2js/kernel/compiler_helper.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698