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

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

Issue 2828583003: remove dependencies to analyzer from lib/src/fasta (Closed)
Patch Set: rebase Created 3 years, 8 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/tool/_fasta/compile_platform_dartk.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) 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.closures.suite; 5 library test.kernel.closures.suite;
6 6
7 import 'dart:async' show Future; 7 import 'dart:async' show Future;
8 8
9 import 'package:analyzer/src/generated/sdk.dart' show DartSdk; 9 import 'package:testing/testing.dart'
10 show Chain, ChainContext, Result, Step, TestDescription, runMe;
10 11
11 import 'package:analyzer/src/kernel/loader.dart' show DartLoader; 12 import 'package:kernel/ast.dart' show Program;
12
13 import 'package:testing/testing.dart'
14 show Chain, Result, Step, TestDescription, runMe;
15
16 import 'package:kernel/ast.dart' show Program, Library;
17 13
18 import 'package:kernel/transformations/closure_conversion.dart' 14 import 'package:kernel/transformations/closure_conversion.dart'
19 as closure_conversion; 15 as closure_conversion;
20 16
21 import 'package:kernel/target/targets.dart' show Target, TargetFlags, getTarget;
22
23 import 'package:front_end/src/fasta/testing/kernel_chain.dart' 17 import 'package:front_end/src/fasta/testing/kernel_chain.dart'
24 show TestContext, Print, MatchExpectation, WriteDill, ReadDill, Verify; 18 show Print, MatchExpectation, WriteDill, ReadDill, Verify;
25 19
26 import 'package:front_end/src/fasta/ticker.dart' show Ticker; 20 import 'package:front_end/src/fasta/ticker.dart' show Ticker;
27 21
28 import 'package:front_end/src/fasta/dill/dill_target.dart' show DillTarget; 22 import 'package:front_end/src/fasta/dill/dill_target.dart' show DillTarget;
29 23
30 import 'package:front_end/src/fasta/kernel/kernel_target.dart' 24 import 'package:front_end/src/fasta/kernel/kernel_target.dart'
31 show KernelTarget; 25 show KernelTarget;
32 26
33 import 'package:front_end/src/fasta/translate_uri.dart' show TranslateUri; 27 import 'package:front_end/src/fasta/translate_uri.dart' show TranslateUri;
34 28
35 import 'package:front_end/src/fasta/errors.dart' show InputError; 29 import 'package:front_end/src/fasta/errors.dart' show InputError;
36 30
37 class ClosureConversionContext extends TestContext { 31 import 'package:front_end/src/fasta/testing/patched_sdk_location.dart';
32
33 import 'package:kernel/kernel.dart' show loadProgramFromBinary;
34
35 const String STRONG_MODE = " strong mode ";
36
37 class ClosureConversionContext extends ChainContext {
38 final bool strongMode;
39
38 final TranslateUri uriTranslator; 40 final TranslateUri uriTranslator;
39 41
40 final List<Step> steps; 42 final List<Step> steps;
41 43
42 Future<Program> platform; 44 ClosureConversionContext(
43 45 this.strongMode, bool updateExpectations, this.uriTranslator)
44 ClosureConversionContext(Uri sdk, Uri vm, Uri packages, bool strongMode,
45 DartSdk dartSdk, bool updateExpectations, this.uriTranslator)
46 : steps = <Step>[ 46 : steps = <Step>[
47 const FastaCompile(), 47 const FastaCompile(),
48 const Print(), 48 const Print(),
49 const Verify(true), 49 const Verify(true),
50 const ClosureConversion(), 50 const ClosureConversion(),
51 const Print(), 51 const Print(),
52 const Verify(true), 52 const Verify(true),
53 new MatchExpectation(".expect", 53 new MatchExpectation(".expect",
54 updateExpectations: updateExpectations), 54 updateExpectations: updateExpectations),
55 const WriteDill(), 55 const WriteDill(),
56 const ReadDill(), 56 const ReadDill(),
57 // TODO(29143): uncomment this when Vectors are added to VM. 57 // TODO(29143): add `Run` step when Vectors are added to VM.
58 //const Run(), 58 ];
59 ],
60 super(sdk, vm, packages, strongMode, dartSdk);
61 59
62 Future<Program> createPlatform() { 60 Future<Program> loadPlatform() async {
63 return new Future<Program>(() async { 61 Uri sdk = await computePatchedSdk();
64 DartLoader loader = await createLoader(); 62 return loadProgramFromBinary(sdk.resolve('platform.dill').toFilePath());
65 Target target =
66 getTarget("vm", new TargetFlags(strongMode: options.strongMode));
67 loader.loadProgram(Uri.base.resolve("pkg/fasta/test/platform.dart"),
68 target: target);
69 var program = loader.program;
70 if (loader.errors.isNotEmpty) {
71 throw loader.errors.join("\n");
72 }
73 Library mainLibrary = program.mainMethod.enclosingLibrary;
74 program.uriToSource.remove(mainLibrary.fileUri);
75 program = new Program(
76 program.libraries.where((Library l) => l != mainLibrary).toList(),
77 program.uriToSource);
78 target.performModularTransformations(program);
79 target.performGlobalTransformations(program);
80 return program;
81 });
82 } 63 }
83 64
84 static Future<ClosureConversionContext> create( 65 static Future<ClosureConversionContext> create(
85 Chain suite, Map<String, String> environment) async { 66 Chain suite, Map<String, String> environment) async {
86 return TestContext.create(suite, environment, (Chain suite, 67 Uri packages = Uri.base.resolve(".packages");
87 Map<String, String> environment, 68 bool strongMode = environment.containsKey(STRONG_MODE);
88 Uri sdk, 69 bool updateExpectations = environment["updateExpectations"] == "true";
89 Uri vm, 70 TranslateUri uriTranslator = await TranslateUri.parse(packages);
90 Uri packages, 71 return new ClosureConversionContext(
91 bool strongMode, 72 strongMode, updateExpectations, uriTranslator);
92 DartSdk dartSdk,
93 bool updateExpectations) async {
94 TranslateUri uriTranslator = await TranslateUri.parse(packages);
95 return new ClosureConversionContext(sdk, vm, packages, strongMode,
96 dartSdk, updateExpectations, uriTranslator);
97 });
98 } 73 }
99 } 74 }
100 75
101 Future<ClosureConversionContext> createContext( 76 Future<ClosureConversionContext> createContext(
102 Chain suite, Map<String, String> environment) async { 77 Chain suite, Map<String, String> environment) async {
103 environment["updateExpectations"] = 78 environment["updateExpectations"] =
104 const String.fromEnvironment("updateExpectations"); 79 const String.fromEnvironment("updateExpectations");
105 return ClosureConversionContext.create(suite, environment); 80 return ClosureConversionContext.create(suite, environment);
106 } 81 }
107 82
108 class FastaCompile 83 class FastaCompile
109 extends Step<TestDescription, Program, ClosureConversionContext> { 84 extends Step<TestDescription, Program, ClosureConversionContext> {
110 const FastaCompile(); 85 const FastaCompile();
111 86
112 String get name => "fasta compilation"; 87 String get name => "fasta compilation";
113 88
114 Future<Result<Program>> run( 89 Future<Result<Program>> run(
115 TestDescription description, ClosureConversionContext context) async { 90 TestDescription description, ClosureConversionContext context) async {
116 Program platform = await context.createPlatform(); 91 Program platform = await context.loadPlatform();
117 Ticker ticker = new Ticker(); 92 Ticker ticker = new Ticker();
118 DillTarget dillTarget = new DillTarget(ticker, context.uriTranslator); 93 DillTarget dillTarget = new DillTarget(ticker, context.uriTranslator);
119 dillTarget.loader 94 dillTarget.loader
120 ..input = Uri.parse("org.dartlang:platform") // Make up a name. 95 ..input = Uri.parse("org.dartlang:platform") // Make up a name.
121 ..setProgram(platform); 96 ..setProgram(platform);
122 KernelTarget sourceTarget = 97 KernelTarget sourceTarget =
123 new KernelTarget(dillTarget, context.uriTranslator, false); 98 new KernelTarget(dillTarget, context.uriTranslator, context.strongMode);
124 99
125 Program p; 100 Program p;
126 try { 101 try {
127 sourceTarget.read(description.uri); 102 sourceTarget.read(description.uri);
128 await dillTarget.writeOutline(null); 103 await dillTarget.writeOutline(null);
129 await sourceTarget.writeOutline(null); 104 await sourceTarget.writeOutline(null);
130 p = await sourceTarget.writeProgram(null); 105 p = await sourceTarget.writeProgram(null);
131 } on InputError catch (e, s) { 106 } on InputError catch (e, s) {
132 return fail(null, e.error, s); 107 return fail(null, e.error, s);
133 } 108 }
(...skipping 12 matching lines...) Expand all
146 try { 121 try {
147 program = closure_conversion.transformProgram(program); 122 program = closure_conversion.transformProgram(program);
148 return pass(program); 123 return pass(program);
149 } catch (e, s) { 124 } catch (e, s) {
150 return crash(e, s); 125 return crash(e, s);
151 } 126 }
152 } 127 }
153 } 128 }
154 129
155 main(List<String> arguments) => runMe(arguments, createContext, "testing.json"); 130 main(List<String> arguments) => runMe(arguments, createContext, "testing.json");
OLDNEW
« no previous file with comments | « pkg/front_end/tool/_fasta/compile_platform_dartk.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698