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

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

Issue 2975433002: Assert that we don't mix K and J elements (Closed)
Patch Set: Updated cf. comments Created 3 years, 5 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 // Helper to test compilation equivalence between source and .dill based 5 // Helper to test compilation equivalence between source and .dill based
6 // compilation. 6 // compilation.
7 library dart2js.kernel.compile_from_dill_test_helper; 7 library dart2js.kernel.compile_from_dill_test_helper;
8 8
9 import 'dart:async'; 9 import 'dart:async';
10 import 'dart:io'; 10 import 'dart:io';
11 11
12 import 'package:compiler/compiler_new.dart'; 12 import 'package:compiler/compiler_new.dart';
13 import 'package:compiler/src/commandline_options.dart'; 13 import 'package:compiler/src/commandline_options.dart';
14 import 'package:compiler/src/common.dart'; 14 import 'package:compiler/src/common.dart';
15 import 'package:compiler/src/compiler.dart'; 15 import 'package:compiler/src/compiler.dart';
16 import 'package:compiler/src/elements/elements.dart'; 16 import 'package:compiler/src/elements/elements.dart';
17 import 'package:compiler/src/elements/types.dart'; 17 import 'package:compiler/src/elements/types.dart';
18 import 'package:compiler/src/kernel/element_map.dart'; 18 import 'package:compiler/src/kernel/element_map.dart';
19 import 'package:compiler/src/kernel/kernel_backend_strategy.dart';
19 import 'package:compiler/src/kernel/kernel_strategy.dart'; 20 import 'package:compiler/src/kernel/kernel_strategy.dart';
20 import 'package:compiler/src/serialization/equivalence.dart'; 21 import 'package:compiler/src/serialization/equivalence.dart';
21 import 'package:compiler/src/resolution/enum_creator.dart'; 22 import 'package:compiler/src/resolution/enum_creator.dart';
22 import 'package:compiler/src/universe/world_builder.dart'; 23 import 'package:compiler/src/universe/world_builder.dart';
23 import 'package:compiler/src/world.dart'; 24 import 'package:compiler/src/world.dart';
24 import 'package:expect/expect.dart'; 25 import 'package:expect/expect.dart';
25 import '../memory_compiler.dart'; 26 import '../memory_compiler.dart';
26 import '../equivalence/check_functions.dart'; 27 import '../equivalence/check_functions.dart';
27 import '../equivalence/check_helpers.dart'; 28 import '../equivalence/check_helpers.dart';
28 import '../serialization/helper.dart'; 29 import '../serialization/helper.dart';
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 OutputCollector collector2 = new OutputCollector(); 230 OutputCollector collector2 = new OutputCollector();
230 Compiler compiler2 = await compileWithDill( 231 Compiler compiler2 = await compileWithDill(
231 entryPoint, const {}, <String>[]..addAll(commonOptions)..addAll(options), 232 entryPoint, const {}, <String>[]..addAll(commonOptions)..addAll(options),
232 printSteps: true, compilerOutput: collector2); 233 printSteps: true, compilerOutput: collector2);
233 234
234 KernelFrontEndStrategy frontendStrategy = compiler2.frontendStrategy; 235 KernelFrontEndStrategy frontendStrategy = compiler2.frontendStrategy;
235 KernelToElementMap elementMap = frontendStrategy.elementMap; 236 KernelToElementMap elementMap = frontendStrategy.elementMap;
236 237
237 Expect.isFalse(compiler2.compilationFailed); 238 Expect.isFalse(compiler2.compilationFailed);
238 239
239 KernelEquivalence equivalence = new KernelEquivalence(elementMap); 240 KernelEquivalence equivalence1 = new KernelEquivalence(elementMap);
240 241
241 ClosedWorld closedWorld2 = 242 ClosedWorld closedWorld2 =
242 compiler2.resolutionWorldBuilder.closedWorldForTesting; 243 compiler2.resolutionWorldBuilder.closedWorldForTesting;
243 244
244 checkBackendUsage(closedWorld1.backendUsage, closedWorld2.backendUsage, 245 checkBackendUsage(closedWorld1.backendUsage, closedWorld2.backendUsage,
245 equivalence.defaultStrategy); 246 equivalence1.defaultStrategy);
246 247
247 print('--- checking resolution enqueuers ----------------------------------'); 248 print('--- checking resolution enqueuers ----------------------------------');
248 checkResolutionEnqueuers(closedWorld1.backendUsage, closedWorld2.backendUsage, 249 checkResolutionEnqueuers(closedWorld1.backendUsage, closedWorld2.backendUsage,
249 compiler1.enqueuer.resolution, compiler2.enqueuer.resolution, 250 compiler1.enqueuer.resolution, compiler2.enqueuer.resolution,
250 elementEquivalence: (a, b) => equivalence.entityEquivalence(a, b), 251 elementEquivalence: (a, b) => equivalence1.entityEquivalence(a, b),
251 typeEquivalence: (DartType a, DartType b) { 252 typeEquivalence: (DartType a, DartType b) {
252 return equivalence.typeEquivalence(unalias(a), b); 253 return equivalence1.typeEquivalence(unalias(a), b);
253 }, 254 },
254 elementFilter: elementFilter, 255 elementFilter: elementFilter,
255 verbose: verbose); 256 verbose: verbose);
256 257
257 print('--- checking closed worlds -----------------------------------------'); 258 print('--- checking closed worlds -----------------------------------------');
258 checkClosedWorlds(closedWorld1, closedWorld2, 259 checkClosedWorlds(closedWorld1, closedWorld2,
259 strategy: equivalence.defaultStrategy, 260 strategy: equivalence1.defaultStrategy,
260 verbose: verbose, 261 verbose: verbose,
261 // TODO(johnniwinther,efortuna): Require closure class equivalence when 262 // TODO(johnniwinther,efortuna): Require closure class equivalence when
262 // these are supported. 263 // these are supported.
263 allowMissingClosureClasses: true); 264 allowMissingClosureClasses: true);
264 265
265 // TODO(johnniwinther): Perform equivalence tests on the model: codegen world 266 // TODO(johnniwinther): Perform equivalence tests on the model: codegen world
266 // impacts, program model, etc. 267 // impacts, program model, etc.
267 268
268 print('--- checking codegen enqueuers--------------------------------------'); 269 print('--- checking codegen enqueuers--------------------------------------');
270
271 KernelBackendStrategy backendStrategy = compiler2.backendStrategy;
272 KernelEquivalence equivalence2 =
273 new KernelEquivalence(backendStrategy.elementMap);
274
269 checkCodegenEnqueuers(compiler1.enqueuer.codegenEnqueuerForTesting, 275 checkCodegenEnqueuers(compiler1.enqueuer.codegenEnqueuerForTesting,
270 compiler2.enqueuer.codegenEnqueuerForTesting, 276 compiler2.enqueuer.codegenEnqueuerForTesting,
271 elementEquivalence: (a, b) => equivalence.entityEquivalence(a, b), 277 elementEquivalence: (a, b) => equivalence2.entityEquivalence(a, b),
272 typeEquivalence: (DartType a, DartType b) { 278 typeEquivalence: (DartType a, DartType b) {
273 return equivalence.typeEquivalence(unalias(a), b); 279 return equivalence2.typeEquivalence(unalias(a), b);
274 }, 280 },
275 elementFilter: elementFilter, 281 elementFilter: elementFilter,
276 verbose: verbose); 282 verbose: verbose);
277 283
278 checkEmitters(compiler1.backend.emitter, compiler2.backend.emitter, 284 checkEmitters(compiler1.backend.emitter, compiler2.backend.emitter,
279 elementEquivalence: (a, b) => equivalence.entityEquivalence(a, b), 285 elementEquivalence: (a, b) => equivalence2.entityEquivalence(a, b),
280 typeEquivalence: (DartType a, DartType b) { 286 typeEquivalence: (DartType a, DartType b) {
281 return equivalence.typeEquivalence(unalias(a), b); 287 return equivalence2.typeEquivalence(unalias(a), b);
282 }, 288 },
283 verbose: verbose); 289 verbose: verbose);
284 290
285 if (expectAstEquivalence) { 291 if (expectAstEquivalence) {
286 checkGeneratedCode(compiler1.backend, compiler2.backend, 292 checkGeneratedCode(compiler1.backend, compiler2.backend,
287 elementEquivalence: (a, b) => equivalence.entityEquivalence(a, b)); 293 elementEquivalence: (a, b) => equivalence2.entityEquivalence(a, b));
288 } 294 }
289 295
290 if (expectIdenticalOutput) { 296 if (expectIdenticalOutput) {
291 print('--- checking output------- ---------------------------------------'); 297 print('--- checking output------- ---------------------------------------');
292 collector1.outputMap 298 collector1.outputMap
293 .forEach((OutputType outputType, Map<String, BufferedOutputSink> map1) { 299 .forEach((OutputType outputType, Map<String, BufferedOutputSink> map1) {
294 if (outputType == OutputType.sourceMap) { 300 if (outputType == OutputType.sourceMap) {
295 // TODO(johnniwinther): Support source map from .dill. 301 // TODO(johnniwinther): Support source map from .dill.
296 return; 302 return;
297 } 303 }
298 Map<String, BufferedOutputSink> map2 = collector2.outputMap[outputType]; 304 Map<String, BufferedOutputSink> map2 = collector2.outputMap[outputType];
299 checkSets(map1.keys, map2.keys, 'output', equality); 305 checkSets(map1.keys, map2.keys, 'output', equality);
300 map1.forEach((String name, BufferedOutputSink output1) { 306 map1.forEach((String name, BufferedOutputSink output1) {
301 BufferedOutputSink output2 = map2[name]; 307 BufferedOutputSink output2 = map2[name];
302 Expect.stringEquals(output1.text, output2.text); 308 Expect.stringEquals(output1.text, output2.text);
303 }); 309 });
304 }); 310 });
305 } 311 }
306 return ResultKind.success; 312 return ResultKind.success;
307 } 313 }
OLDNEW
« no previous file with comments | « tests/compiler/dart2js/kernel/closed_world_test.dart ('k') | tests/compiler/dart2js/serialization/native_data_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698