OLD | NEW |
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 |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
43 | 43 |
44 import 'package:analyzer/src/fasta/analyzer_target.dart' show AnalyzerTarget; | 44 import 'package:analyzer/src/fasta/analyzer_target.dart' show AnalyzerTarget; |
45 | 45 |
46 import 'package:front_end/src/fasta/kernel/kernel_target.dart' | 46 import 'package:front_end/src/fasta/kernel/kernel_target.dart' |
47 show KernelTarget; | 47 show KernelTarget; |
48 | 48 |
49 import 'package:front_end/src/fasta/dill/dill_target.dart' show DillTarget; | 49 import 'package:front_end/src/fasta/dill/dill_target.dart' show DillTarget; |
50 | 50 |
51 import 'package:kernel/kernel.dart' show loadProgramFromBytes; | 51 import 'package:kernel/kernel.dart' show loadProgramFromBytes; |
52 | 52 |
| 53 import 'package:kernel/target/targets.dart' show TargetFlags; |
| 54 |
53 export 'package:testing/testing.dart' show Chain, runMe; | 55 export 'package:testing/testing.dart' show Chain, runMe; |
54 | 56 |
55 const String STRONG_MODE = " strong mode "; | 57 const String STRONG_MODE = " strong mode "; |
56 | 58 |
57 const String ENABLE_FULL_COMPILE = " full compile "; | 59 const String ENABLE_FULL_COMPILE = " full compile "; |
58 | 60 |
59 const String AST_KIND_INDEX = " AST kind index "; | 61 const String AST_KIND_INDEX = " AST kind index "; |
60 | 62 |
61 const String EXPECTATIONS = ''' | 63 const String EXPECTATIONS = ''' |
62 [ | 64 [ |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
209 | 211 |
210 bool get isCompiler => fullCompile; | 212 bool get isCompiler => fullCompile; |
211 | 213 |
212 Future<Result<Program>> run( | 214 Future<Result<Program>> run( |
213 TestDescription description, FastaContext context) async { | 215 TestDescription description, FastaContext context) async { |
214 // Disable colors to ensure that expectation files are the same across | 216 // Disable colors to ensure that expectation files are the same across |
215 // platforms and independent of stdin/stderr. | 217 // platforms and independent of stdin/stderr. |
216 CompilerContext.current.disableColors(); | 218 CompilerContext.current.disableColors(); |
217 Program platformOutline = await context.loadPlatformOutline(); | 219 Program platformOutline = await context.loadPlatformOutline(); |
218 Ticker ticker = new Ticker(); | 220 Ticker ticker = new Ticker(); |
219 DillTarget dillTarget = new DillTarget(ticker, context.uriTranslator, "vm"); | 221 DillTarget dillTarget = new DillTarget( |
| 222 ticker, context.uriTranslator, "vm_fasta", |
| 223 flags: new TargetFlags(strongMode: strongMode)); |
220 platformOutline.unbindCanonicalNames(); | 224 platformOutline.unbindCanonicalNames(); |
221 dillTarget.loader.appendLibraries(platformOutline); | 225 dillTarget.loader.appendLibraries(platformOutline); |
222 // We create a new URI translator to avoid reading plaform libraries from | 226 // We create a new URI translator to avoid reading plaform libraries from |
223 // file system. | 227 // file system. |
224 TranslateUri uriTranslator = new TranslateUri( | 228 TranslateUri uriTranslator = new TranslateUri( |
225 context.uriTranslator.packages, | 229 context.uriTranslator.packages, |
226 const <String, Uri>{}, | 230 const <String, Uri>{}, |
227 const <String, List<Uri>>{}); | 231 const <String, List<Uri>>{}); |
228 KernelTarget sourceTarget = astKind == AstKind.Analyzer | 232 KernelTarget sourceTarget = astKind == AstKind.Analyzer |
229 ? new AnalyzerTarget(dillTarget, uriTranslator, strongMode) | 233 ? new AnalyzerTarget(dillTarget, uriTranslator, strongMode) |
230 : new KernelTarget( | 234 : new KernelTarget( |
231 PhysicalFileSystem.instance, dillTarget, uriTranslator, strongMode); | 235 PhysicalFileSystem.instance, dillTarget, uriTranslator); |
232 | 236 |
233 Program p; | 237 Program p; |
234 try { | 238 try { |
235 sourceTarget.read(description.uri); | 239 sourceTarget.read(description.uri); |
236 await dillTarget.buildOutlines(); | 240 await dillTarget.buildOutlines(); |
237 ValidatingInstrumentation instrumentation; | 241 ValidatingInstrumentation instrumentation; |
238 if (strongMode) { | 242 if (strongMode) { |
239 instrumentation = new ValidatingInstrumentation(); | 243 instrumentation = new ValidatingInstrumentation(); |
240 await instrumentation.loadExpectations(description.uri); | 244 await instrumentation.loadExpectations(description.uri); |
241 sourceTarget.loader.instrumentation = instrumentation; | 245 sourceTarget.loader.instrumentation = instrumentation; |
242 } | 246 } |
243 p = await sourceTarget.buildOutlines(); | 247 p = await sourceTarget.buildOutlines(); |
244 if (fullCompile) { | 248 if (fullCompile) { |
245 p = await sourceTarget.buildProgram(trimDependencies: true); | 249 p = await sourceTarget.buildProgram(trimDependencies: true); |
246 instrumentation?.finish(); | 250 instrumentation?.finish(); |
247 if (instrumentation != null && instrumentation.hasProblems) { | 251 if (instrumentation != null && instrumentation.hasProblems) { |
248 if (updateComments) { | 252 if (updateComments) { |
249 await instrumentation.fixSource(description.uri, false); | 253 await instrumentation.fixSource(description.uri, false); |
250 } else { | 254 } else { |
251 return fail(null, instrumentation.problemsAsString); | 255 return fail(null, instrumentation.problemsAsString); |
252 } | 256 } |
253 } | 257 } |
254 } | 258 } |
255 } on InputError catch (e, s) { | 259 } on InputError catch (e, s) { |
256 return fail(null, e.error, s); | 260 return fail(null, e.error, s); |
257 } | 261 } |
258 return pass(p); | 262 return pass(p); |
259 } | 263 } |
260 } | 264 } |
OLD | NEW |