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

Side by Side Diff: pkg/kernel/test/reify/suite.dart

Issue 2904203003: Don't recreate CoreTypes in transformers. Pass it in. (Closed)
Patch Set: Created 3 years, 7 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.md file. 3 // BSD-style license that can be found in the LICENSE.md file.
4 4
5 library test.kernel.reify.suite; 5 library test.kernel.reify.suite;
6 6
7 import 'dart:async' show Future; 7 import 'dart:async' show Future;
8 8
9 import 'dart:io' show Directory, File, Platform; 9 import 'dart:io' show Directory, File, Platform;
10 10
11 import 'package:analyzer/src/generated/sdk.dart' show DartSdk; 11 import 'package:analyzer/src/generated/sdk.dart' show DartSdk;
12 12
13 import 'package:analyzer/src/kernel/loader.dart' 13 import 'package:analyzer/src/kernel/loader.dart'
14 show DartLoader, DartOptions, createDartSdk; 14 show DartLoader, DartOptions, createDartSdk;
15 15
16 import 'package:kernel/core_types.dart' show CoreTypes;
17
16 import 'package:kernel/target/targets.dart' show Target, TargetFlags, getTarget; 18 import 'package:kernel/target/targets.dart' show Target, TargetFlags, getTarget;
17 19
18 import 'package:kernel/target/vmcc.dart' show VmClosureConvertedTarget; 20 import 'package:kernel/target/vmcc.dart' show VmClosureConvertedTarget;
19 21
20 import 'kernel_chain.dart' 22 import 'kernel_chain.dart'
21 show MatchExpectation, Print, ReadDill, SanityCheck, WriteDill; 23 show MatchExpectation, Print, ReadDill, SanityCheck, WriteDill;
22 24
23 import 'package:testing/testing.dart' 25 import 'package:testing/testing.dart'
24 show 26 show
25 Chain, 27 Chain,
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 147
146 @override 148 @override
147 String get name => "not reified target"; 149 String get name => "not reified target";
148 150
149 // Tree shaking needs to be disabled, because Generic Types Reification 151 // Tree shaking needs to be disabled, because Generic Types Reification
150 // transformation relies on certain runtime libraries to be present in 152 // transformation relies on certain runtime libraries to be present in
151 // the program that is being transformed. If the tree shaker is enabled, 153 // the program that is being transformed. If the tree shaker is enabled,
152 // it just deletes everything from those libraries, because they aren't 154 // it just deletes everything from those libraries, because they aren't
153 // used in the program being transform prior to the transformation. 155 // used in the program being transform prior to the transformation.
154 @override 156 @override
155 void performTreeShaking(Program program) {} 157 void performTreeShaking(CoreTypes coreTypes, Program program) {}
156 158
157 // Erasure needs to be disabled, because it removes the necessary information 159 // Erasure needs to be disabled, because it removes the necessary information
158 // about type arguments for generic methods. 160 // about type arguments for generic methods.
159 @override 161 @override
160 void performErasure(Program program) {} 162 void performErasure(Program program) {}
161 163
162 // Adds the necessary runtime libraries. 164 // Adds the necessary runtime libraries.
163 @override 165 @override
164 List<String> get extraRequiredLibraries { 166 List<String> get extraRequiredLibraries {
165 Target reifyTarget = getTarget("vmreify", this.flags); 167 Target reifyTarget = getTarget("vmreify", this.flags);
(...skipping 18 matching lines...) Expand all
184 strongMode: true, 186 strongMode: true,
185 kernelRuntime: Platform.script.resolve("../../runtime/"))); 187 kernelRuntime: Platform.script.resolve("../../runtime/")));
186 188
187 String path = description.file.path; 189 String path = description.file.path;
188 Uri uri = Uri.base.resolve(path); 190 Uri uri = Uri.base.resolve(path);
189 loader.loadProgram(uri, target: target); 191 loader.loadProgram(uri, target: target);
190 var program = loader.program; 192 var program = loader.program;
191 for (var error in loader.errors) { 193 for (var error in loader.errors) {
192 return fail(program, "$error"); 194 return fail(program, "$error");
193 } 195 }
196 var coreTypes = new CoreTypes(program);
194 target 197 target
195 ..performModularTransformations(program) 198 ..performModularTransformations(coreTypes, program)
196 ..performGlobalTransformations(program); 199 ..performGlobalTransformations(coreTypes, program);
197 return pass(program); 200 return pass(program);
198 } catch (e, s) { 201 } catch (e, s) {
199 return crash(e, s); 202 return crash(e, s);
200 } 203 }
201 } 204 }
202 } 205 }
203 206
204 class GenericTypesReification extends Step<Program, Program, TestContext> { 207 class GenericTypesReification extends Step<Program, Program, TestContext> {
205 const GenericTypesReification(); 208 const GenericTypesReification();
206 209
207 String get name => "generic types reification"; 210 String get name => "generic types reification";
208 211
209 Future<Result<Program>> run(Program program, TestContext testContext) async { 212 Future<Result<Program>> run(Program program, TestContext testContext) async {
210 try { 213 try {
211 program = generic_types_reification.transformProgram(program); 214 CoreTypes coreTypes = new CoreTypes(program);
215 program = generic_types_reification.transformProgram(coreTypes, program);
212 return pass(program); 216 return pass(program);
213 } catch (e, s) { 217 } catch (e, s) {
214 return crash(e, s); 218 return crash(e, s);
215 } 219 }
216 } 220 }
217 } 221 }
218 222
219 class Run extends Step<Uri, int, TestContext> { 223 class Run extends Step<Uri, int, TestContext> {
220 const Run(); 224 const Run();
221 225
222 String get name => "run"; 226 String get name => "run";
223 227
224 Future<Result<int>> run(Uri uri, TestContext context) async { 228 Future<Result<int>> run(Uri uri, TestContext context) async {
225 File generated = new File.fromUri(uri); 229 File generated = new File.fromUri(uri);
226 StdioProcess process; 230 StdioProcess process;
227 try { 231 try {
228 process = 232 process =
229 await StdioProcess.run(context.vm.toFilePath(), [generated.path]); 233 await StdioProcess.run(context.vm.toFilePath(), [generated.path]);
230 print(process.output); 234 print(process.output);
231 } finally { 235 } finally {
232 generated.parent.delete(recursive: true); 236 generated.parent.delete(recursive: true);
233 } 237 }
234 return process.toResult(); 238 return process.toResult();
235 } 239 }
236 } 240 }
237 241
238 main(List<String> arguments) => runMe(arguments, createContext, "testing.json"); 242 main(List<String> arguments) => runMe(arguments, createContext, "testing.json");
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698