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

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

Issue 2495013002: Add kernel/closed_world_test (Closed)
Patch Set: Created 4 years, 1 month 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
(Empty)
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
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.
4
5 library dart2js.kernel.closed_world_test;
6
7 import 'package:async_helper/async_helper.dart';
8 import 'package:compiler/src/commandline_options.dart';
9 import 'package:compiler/src/common.dart';
10 import 'package:compiler/src/common/names.dart';
11 import 'package:compiler/src/common/resolution.dart';
12 import 'package:compiler/src/compiler.dart';
13 import 'package:compiler/src/constants/expressions.dart';
14 import 'package:compiler/src/dart_types.dart';
15 import 'package:compiler/src/elements/elements.dart';
16 import 'package:compiler/src/enqueue.dart';
17 import 'package:compiler/src/js_backend/backend.dart';
18 import 'package:compiler/src/js_backend/type_variable_handler.dart';
19 import 'package:compiler/src/resolution/registry.dart';
20 import 'package:compiler/src/resolution/tree_elements.dart';
21 import 'package:compiler/src/ssa/kernel_impact.dart';
22 import 'package:compiler/src/serialization/equivalence.dart';
23 import 'package:compiler/src/universe/call_structure.dart';
24 import 'package:compiler/src/universe/feature.dart';
25 import 'package:compiler/src/universe/world_impact.dart';
26 import 'package:compiler/src/world.dart';
27 import 'package:expect/expect.dart';
28 import 'impact_test.dart';
29 import '../memory_compiler.dart';
30 import '../serialization/helper.dart';
31 import '../serialization/model_test_helper.dart';
32
33 const SOURCE = const {
34 'main.dart': '''
35 main() {
36 print('Hello World!');
37 }
38 '''
39 };
40
41 main(List<String> args) {
Harry Terkelsen 2016/11/11 18:41:59 Can you write a comment explaining what exactly th
Johnni Winther 2016/11/14 10:05:26 That is exactly what I'm doing :) Added a library
42 Arguments arguments = new Arguments.from(args);
43 Uri entryPoint;
44 Map<String, String> memorySourceFiles;
45 if (arguments.uri != null) {
46 entryPoint = arguments.uri;
47 memorySourceFiles = const <String, String>{};
48 } else {
49 entryPoint = Uri.parse('memory:main.dart');
50 memorySourceFiles = SOURCE;
51 }
52
53 asyncTest(() async {
54 enableDebugMode();
55 Compiler compiler = compilerFor(
56 entryPoint: entryPoint,
57 memorySourceFiles: memorySourceFiles,
58 options: [
59 Flags.analyzeOnly,
60 Flags.useKernel,
61 Flags.enableAssertMessage
62 ]);
63 compiler.resolution.retainCachesForTesting = true;
64 await compiler.run(entryPoint);
65 compiler.openWorld.closeWorld(compiler.reporter);
66
67 JavaScriptBackend backend = compiler.backend;
68 ResolutionEnqueuer enqueuer = new ResolutionEnqueuer(
69 compiler.enqueuer,
70 compiler.options,
71 compiler.resolution,
72 compiler.enqueuerFilter,
73 const TreeShakingEnqueuerStrategy(),
74 compiler.globalDependencies,
75 backend,
76 compiler.commonElements,
77 compiler.cacheStrategy);
78 // TODO(johnniwinther): Store backend info separately. This replacement is
79 // made to reset a field in [TypeVariableHandler] the prevents it from
Harry Terkelsen 2016/11/11 18:41:59 the prevents -> that prevents
Johnni Winther 2016/11/14 10:05:26 Done.
80 // enqueuing twice.
81 backend.typeVariableHandler = new TypeVariableHandler(compiler);
82
83 backend.enqueueHelpers(enqueuer);
84 enqueuer.addToWorkList(compiler.mainFunction);
85 enqueuer.forEach((work) {
86 AstElement element = work.element;
87 ResolutionImpact resolutionImpact = build(compiler, element.resolvedAst);
88 WorldImpact worldImpact = compiler.backend.impactTransformer
89 .transformResolutionImpact(enqueuer, resolutionImpact);
90 enqueuer.registerProcessedElement(element);
91 enqueuer.applyImpact(compiler.impactStrategy, worldImpact,
92 impactSource: element);
93 });
94 ClosedWorld closedWorld =
95 enqueuer.universe.openWorld.closeWorld(compiler.reporter);
96
97 checkResolutionEnqueuers(compiler.enqueuer.resolution, enqueuer,
98 typeEquivalence: (DartType a, DartType b) {
99 return areTypesEquivalent(unalias(a), unalias(b));
100 }, elementFilter: (Element element) {
101 if (element is ConstructorElement && element.isRedirectingFactory) {
102 // Redirecting factory constructors are skipped in kernel.
103 return false;
104 }
105 return true;
106 }, verbose: arguments.verbose);
107 checkClosedWorlds(compiler.closedWorld, closedWorld,
108 verbose: arguments.verbose);
109 });
110 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/enqueue.dart ('k') | tests/compiler/dart2js/serialization/model_test_helper.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698