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

Side by Side Diff: pkg/front_end/test/fasta/testing/suite.dart

Issue 2980033004: Throw if there is no compiler context available (Closed)
Patch Set: cl comments, handle validate and deprecated_InputError 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
« no previous file with comments | « pkg/front_end/test/fasta/shaker_test.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 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 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 fasta.testing.suite; 5 library fasta.testing.suite;
6 6
7 import 'dart:async' show Future; 7 import 'dart:async' show Future;
8 8
9 import 'dart:io' show File; 9 import 'dart:io' show File;
10 10
11 import 'dart:convert' show JSON; 11 import 'dart:convert' show JSON;
12 12
13 import 'package:front_end/physical_file_system.dart' show PhysicalFileSystem; 13 import 'package:front_end/physical_file_system.dart' show PhysicalFileSystem;
14 14
15 import 'package:front_end/src/fasta/compiler_command_line.dart';
16
15 import 'package:front_end/src/fasta/testing/validating_instrumentation.dart' 17 import 'package:front_end/src/fasta/testing/validating_instrumentation.dart'
16 show ValidatingInstrumentation; 18 show ValidatingInstrumentation;
17 19
18 import 'package:front_end/src/fasta/testing/patched_sdk_location.dart' 20 import 'package:front_end/src/fasta/testing/patched_sdk_location.dart'
19 show computeDartVm, computePatchedSdk; 21 show computeDartVm, computePatchedSdk;
20 import 'package:front_end/src/fasta/uri_translator_impl.dart'; 22 import 'package:front_end/src/fasta/uri_translator_impl.dart';
21 23
22 import 'package:kernel/ast.dart' show Library, Program; 24 import 'package:kernel/ast.dart' show Library, Program;
23 25
24 import 'package:testing/testing.dart' 26 import 'package:testing/testing.dart'
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 final bool updateComments; 217 final bool updateComments;
216 218
217 String get name { 219 String get name {
218 return fullCompile ? "${astKind} compile" : "outline"; 220 return fullCompile ? "${astKind} compile" : "outline";
219 } 221 }
220 222
221 bool get isCompiler => fullCompile; 223 bool get isCompiler => fullCompile;
222 224
223 Future<Result<Program>> run( 225 Future<Result<Program>> run(
224 TestDescription description, FastaContext context) async { 226 TestDescription description, FastaContext context) async {
225 // Disable colors to ensure that expectation files are the same across 227 return await CompilerCommandLine.withGlobalOptions("", [""], (_) async {
226 // platforms and independent of stdin/stderr. 228 // Disable colors to ensure that expectation files are the same across
227 CompilerContext.current.disableColors(); 229 // platforms and independent of stdin/stderr.
228 Program platformOutline = await context.loadPlatformOutline(); 230 CompilerContext.current.disableColors();
229 Ticker ticker = new Ticker(); 231 Program platformOutline = await context.loadPlatformOutline();
230 DillTarget dillTarget = new DillTarget(ticker, context.uriTranslator, 232 Ticker ticker = new Ticker();
231 new TestVmFastaTarget(new TargetFlags(strongMode: strongMode))); 233 DillTarget dillTarget = new DillTarget(ticker, context.uriTranslator,
232 platformOutline.unbindCanonicalNames(); 234 new TestVmFastaTarget(new TargetFlags(strongMode: strongMode)));
233 dillTarget.loader.appendLibraries(platformOutline); 235 platformOutline.unbindCanonicalNames();
234 // We create a new URI translator to avoid reading platform libraries from 236 dillTarget.loader.appendLibraries(platformOutline);
235 // file system. 237 // We create a new URI translator to avoid reading platform libraries from
236 UriTranslatorImpl uriTranslator = new UriTranslatorImpl( 238 // file system.
237 const <String, Uri>{}, 239 UriTranslatorImpl uriTranslator = new UriTranslatorImpl(
238 const <String, List<Uri>>{}, 240 const <String, Uri>{},
239 context.uriTranslator.packages); 241 const <String, List<Uri>>{},
240 KernelTarget sourceTarget = astKind == AstKind.Analyzer 242 context.uriTranslator.packages);
241 ? new AnalyzerTarget(dillTarget, uriTranslator, strongMode) 243 KernelTarget sourceTarget = astKind == AstKind.Analyzer
242 : new KernelTarget( 244 ? new AnalyzerTarget(dillTarget, uriTranslator, strongMode)
243 PhysicalFileSystem.instance, false, dillTarget, uriTranslator); 245 : new KernelTarget(
246 PhysicalFileSystem.instance, false, dillTarget, uriTranslator);
244 247
245 Program p; 248 Program p;
246 try { 249 try {
247 sourceTarget.read(description.uri); 250 sourceTarget.read(description.uri);
248 await dillTarget.buildOutlines(); 251 await dillTarget.buildOutlines();
249 ValidatingInstrumentation instrumentation; 252 ValidatingInstrumentation instrumentation;
250 if (strongMode) { 253 if (strongMode) {
251 instrumentation = new ValidatingInstrumentation(); 254 instrumentation = new ValidatingInstrumentation();
252 await instrumentation.loadExpectations(description.uri); 255 await instrumentation.loadExpectations(description.uri);
253 sourceTarget.loader.instrumentation = instrumentation; 256 sourceTarget.loader.instrumentation = instrumentation;
254 } 257 }
255 p = await sourceTarget.buildOutlines(); 258 p = await sourceTarget.buildOutlines();
256 if (fullCompile) { 259 if (fullCompile) {
257 p = await sourceTarget.buildProgram(); 260 p = await sourceTarget.buildProgram();
258 instrumentation?.finish(); 261 instrumentation?.finish();
259 if (instrumentation != null && instrumentation.hasProblems) { 262 if (instrumentation != null && instrumentation.hasProblems) {
260 if (updateComments) { 263 if (updateComments) {
261 await instrumentation.fixSource(description.uri, false); 264 await instrumentation.fixSource(description.uri, false);
262 } else { 265 } else {
263 return fail(null, instrumentation.problemsAsString); 266 return fail(null, instrumentation.problemsAsString);
267 }
264 } 268 }
265 } 269 }
270 } on deprecated_InputError catch (e, s) {
271 return fail(null, e.error, s);
266 } 272 }
267 } on deprecated_InputError catch (e, s) { 273 context.programToTarget.clear();
268 return fail(null, e.error, s); 274 context.programToTarget[p] = sourceTarget;
269 } 275 return pass(p);
270 context.programToTarget.clear(); 276 });
271 context.programToTarget[p] = sourceTarget;
272 return pass(p);
273 } 277 }
274 } 278 }
275 279
276 class Transform extends Step<Program, Program, FastaContext> { 280 class Transform extends Step<Program, Program, FastaContext> {
277 const Transform(); 281 const Transform();
278 282
279 String get name => "transform program"; 283 String get name => "transform program";
280 284
281 Future<Result<Program>> run(Program program, FastaContext context) async { 285 Future<Result<Program>> run(Program program, FastaContext context) async {
282 KernelTarget sourceTarget = context.programToTarget[program]; 286 KernelTarget sourceTarget = context.programToTarget[program];
(...skipping 28 matching lines...) Expand all
311 } 315 }
312 } 316 }
313 317
314 void performGlobalTransformations(CoreTypes coreTypes, Program program, 318 void performGlobalTransformations(CoreTypes coreTypes, Program program,
315 {void logger(String msg)}) { 319 {void logger(String msg)}) {
316 if (enabled) { 320 if (enabled) {
317 super.performGlobalTransformations(coreTypes, program, logger: logger); 321 super.performGlobalTransformations(coreTypes, program, logger: logger);
318 } 322 }
319 } 323 }
320 } 324 }
OLDNEW
« no previous file with comments | « pkg/front_end/test/fasta/shaker_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698