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 // TODO(ahe): Copied from closure_conversion branch of kernel, remove this file | 5 // TODO(ahe): Copied from closure_conversion branch of kernel, remove this file |
6 // when closure_conversion is merged with master. | 6 // when closure_conversion is merged with master. |
7 | 7 |
8 library fasta.testing.kernel_chain; | 8 library fasta.testing.kernel_chain; |
9 | 9 |
10 import 'dart:async' show Future; | 10 import 'dart:async' show Future; |
11 | 11 |
12 import 'dart:io' show Directory, File, IOSink; | 12 import 'dart:io' show Directory, File, IOSink; |
13 | 13 |
14 import 'dart:typed_data' show Uint8List; | 14 import 'dart:typed_data' show Uint8List; |
15 | 15 |
16 import 'package:kernel/kernel.dart' show loadProgramFromBinary; | 16 import 'package:kernel/kernel.dart' show loadProgramFromBinary; |
17 | 17 |
18 import 'package:kernel/target/targets.dart' show Target; | |
19 | |
18 import 'package:kernel/text/ast_to_text.dart' show Printer; | 20 import 'package:kernel/text/ast_to_text.dart' show Printer; |
19 | 21 |
20 import 'package:testing/testing.dart' show Result, StdioProcess, Step; | 22 import 'package:testing/testing.dart' show Result, StdioProcess, Step; |
21 | 23 |
22 import 'package:kernel/ast.dart' show Library, Program; | 24 import 'package:kernel/ast.dart' show Library, Program; |
23 | 25 |
24 import '../kernel/verifier.dart' show verifyProgram; | 26 import '../kernel/verifier.dart' show verifyProgram; |
25 | 27 |
26 import 'package:kernel/binary/ast_to_binary.dart' show BinaryPrinter; | 28 import 'package:kernel/binary/ast_to_binary.dart' show BinaryPrinter; |
27 | 29 |
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
185 String get name => "fasta compilation"; | 187 String get name => "fasta compilation"; |
186 | 188 |
187 Future<Result<Program>> run( | 189 Future<Result<Program>> run( |
188 TestDescription description, CompileContext context) async { | 190 TestDescription description, CompileContext context) async { |
189 Result<Program> result; | 191 Result<Program> result; |
190 reportError(CompilationError error) { | 192 reportError(CompilationError error) { |
191 result ??= fail(null, error.message); | 193 result ??= fail(null, error.message); |
192 } | 194 } |
193 | 195 |
194 Uri sdk = await computePatchedSdk(); | 196 Uri sdk = await computePatchedSdk(); |
195 Program p = await kernelForProgram( | 197 var options = new CompilerOptions() |
196 description.uri, | 198 ..sdkRoot = sdk |
197 new CompilerOptions() | 199 ..compileSdk = true |
198 ..sdkRoot = sdk | 200 ..packagesFileUri = Uri.base.resolve('.packages') |
199 ..packagesFileUri = Uri.base.resolve('.packages') | 201 ..strongMode = context.strongMode |
200 ..strongMode = context.strongMode | 202 ..onError = reportError; |
201 ..linkedDependencies = [sdk.resolve('platform.dill')] | 203 if (context.target != null) { |
202 ..onError = reportError); | 204 options.target = context.target; |
205 // Do not link platform.dill, but recompile the platform libraries. This | |
Siggi Cherem (dart-lang)
2017/07/13 22:22:29
BTW - I want to change that about how we include s
| |
206 // ensures that if target defines extra libraries that those get included | |
207 // too. | |
208 } else { | |
209 options.linkedDependencies = [sdk.resolve('platform.dill')]; | |
210 } | |
211 Program p = await kernelForProgram(description.uri, options); | |
203 return result ??= pass(p); | 212 return result ??= pass(p); |
204 } | 213 } |
205 } | 214 } |
206 | 215 |
207 abstract class CompileContext implements ChainContext { | 216 abstract class CompileContext implements ChainContext { |
208 bool get strongMode; | 217 bool get strongMode; |
218 Target get target; | |
209 } | 219 } |
210 | 220 |
211 class BytesCollector implements Sink<List<int>> { | 221 class BytesCollector implements Sink<List<int>> { |
212 final List<List<int>> lists = <List<int>>[]; | 222 final List<List<int>> lists = <List<int>>[]; |
213 | 223 |
214 int length = 0; | 224 int length = 0; |
215 | 225 |
216 void add(List<int> data) { | 226 void add(List<int> data) { |
217 lists.add(data); | 227 lists.add(data); |
218 length += data.length; | 228 length += data.length; |
(...skipping 22 matching lines...) Expand all Loading... | |
241 | 251 |
242 Future openWrite(Uri uri, f(IOSink sink)) async { | 252 Future openWrite(Uri uri, f(IOSink sink)) async { |
243 IOSink sink = new File.fromUri(uri).openWrite(); | 253 IOSink sink = new File.fromUri(uri).openWrite(); |
244 try { | 254 try { |
245 await f(sink); | 255 await f(sink); |
246 } finally { | 256 } finally { |
247 await sink.close(); | 257 await sink.close(); |
248 } | 258 } |
249 print("Wrote $uri"); | 259 print("Wrote $uri"); |
250 } | 260 } |
OLD | NEW |