OLD | NEW |
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 file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 import 'dart:async'; | 5 import 'dart:async'; |
6 | 6 |
7 import 'package:front_end/compiler_options.dart'; | 7 import 'package:front_end/compiler_options.dart'; |
8 import 'package:front_end/incremental_kernel_generator.dart'; | 8 import 'package:front_end/incremental_kernel_generator.dart'; |
9 import 'package:front_end/memory_file_system.dart'; | 9 import 'package:front_end/memory_file_system.dart'; |
10 import 'package:front_end/src/incremental/byte_store.dart'; | 10 import 'package:front_end/src/incremental/byte_store.dart'; |
(...skipping 16 matching lines...) Expand all Loading... |
27 /// Virtual filesystem for testing. | 27 /// Virtual filesystem for testing. |
28 final fileSystem = new MemoryFileSystem(Uri.parse('file:///')); | 28 final fileSystem = new MemoryFileSystem(Uri.parse('file:///')); |
29 | 29 |
30 /// The used file watcher. | 30 /// The used file watcher. |
31 WatchUsedFilesFn watchFn = (uri, used) {}; | 31 WatchUsedFilesFn watchFn = (uri, used) {}; |
32 | 32 |
33 /// The object under test. | 33 /// The object under test. |
34 IncrementalKernelGeneratorImpl incrementalKernelGenerator; | 34 IncrementalKernelGeneratorImpl incrementalKernelGenerator; |
35 | 35 |
36 /// Compute the initial [Program] for the given [entryPoint]. | 36 /// Compute the initial [Program] for the given [entryPoint]. |
37 Future<Program> getInitialState(Uri entryPoint) async { | 37 Future<Program> getInitialState(Uri entryPoint, |
| 38 {bool setPackages: true}) async { |
38 Map<String, Uri> dartLibraries = createSdkFiles(fileSystem); | 39 Map<String, Uri> dartLibraries = createSdkFiles(fileSystem); |
39 // TODO(scheglov) Builder the SDK kernel and set it into the options. | 40 // TODO(scheglov) Builder the SDK kernel and set it into the options. |
40 | 41 |
41 // TODO(scheglov) Make `.packages` file optional. | 42 // TODO(scheglov) Make `.packages` file optional. |
42 | 43 |
43 var compilerOptions = new CompilerOptions() | 44 var compilerOptions = new CompilerOptions() |
44 ..fileSystem = fileSystem | 45 ..fileSystem = fileSystem |
45 ..byteStore = new MemoryByteStore() | 46 ..byteStore = new MemoryByteStore() |
46 // ..logger = new PerformanceLog(stdout) | 47 // ..logger = new PerformanceLog(stdout) |
47 ..strongMode = true | 48 ..strongMode = true |
48 ..chaseDependencies = true | 49 ..chaseDependencies = true |
49 ..dartLibraries = dartLibraries | 50 ..dartLibraries = dartLibraries; |
50 ..packagesFileUri = Uri.parse('file:///test/.packages'); | 51 |
| 52 if (setPackages) { |
| 53 compilerOptions.packagesFileUri = Uri.parse('file:///test/.packages'); |
| 54 } |
51 incrementalKernelGenerator = await IncrementalKernelGenerator | 55 incrementalKernelGenerator = await IncrementalKernelGenerator |
52 .newInstance(compilerOptions, entryPoint, watch: watchFn); | 56 .newInstance(compilerOptions, entryPoint, watch: watchFn); |
53 return (await incrementalKernelGenerator.computeDelta()).newProgram; | 57 return (await incrementalKernelGenerator.computeDelta()).newProgram; |
54 } | 58 } |
55 | 59 |
56 test_compile_chain() async { | 60 test_compile_chain() async { |
57 writeFile('/test/.packages', 'test:lib/'); | 61 writeFile('/test/.packages', 'test:lib/'); |
58 String aPath = '/test/lib/a.dart'; | 62 String aPath = '/test/lib/a.dart'; |
59 String bPath = '/test/lib/b.dart'; | 63 String bPath = '/test/lib/b.dart'; |
60 String cPath = '/test/lib/c.dart'; | 64 String cPath = '/test/lib/c.dart'; |
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
223 import self as self; | 227 import self as self; |
224 import "dart:core" as core; | 228 import "dart:core" as core; |
225 | 229 |
226 static method main() → dynamic { | 230 static method main() → dynamic { |
227 core::double v = 2.3; | 231 core::double v = 2.3; |
228 } | 232 } |
229 '''); | 233 '''); |
230 } | 234 } |
231 } | 235 } |
232 | 236 |
| 237 test_inferPackagesFile() async { |
| 238 writeFile('/test/.packages', 'test:lib/'); |
| 239 String aPath = '/test/lib/a.dart'; |
| 240 String bPath = '/test/lib/b.dart'; |
| 241 writeFile(aPath, 'var a = 1;'); |
| 242 Uri bUri = writeFile(bPath, r''' |
| 243 import "package:test/a.dart"; |
| 244 var b = a; |
| 245 '''); |
| 246 |
| 247 // Ensures that the `.packages` file can be discovered automatically |
| 248 // from the entry point file. |
| 249 Program program = await getInitialState(bUri, setPackages: false); |
| 250 Library library = _getLibrary(program, bUri); |
| 251 expect(_getLibraryText(library), r''' |
| 252 library; |
| 253 import self as self; |
| 254 import "dart:core" as core; |
| 255 import "package:test/a.dart" as a; |
| 256 |
| 257 static field core::int b = a::a; |
| 258 '''); |
| 259 } |
| 260 |
233 test_watch() async { | 261 test_watch() async { |
234 writeFile('/test/.packages', 'test:lib/'); | 262 writeFile('/test/.packages', 'test:lib/'); |
235 String aPath = '/test/lib/a.dart'; | 263 String aPath = '/test/lib/a.dart'; |
236 String bPath = '/test/lib/b.dart'; | 264 String bPath = '/test/lib/b.dart'; |
237 String cPath = '/test/lib/c.dart'; | 265 String cPath = '/test/lib/c.dart'; |
238 Uri aUri = writeFile(aPath, ''); | 266 Uri aUri = writeFile(aPath, ''); |
239 Uri bUri = writeFile(bPath, ''); | 267 Uri bUri = writeFile(bPath, ''); |
240 Uri cUri = writeFile(cPath, r''' | 268 Uri cUri = writeFile(cPath, r''' |
241 import 'a.dart'; | 269 import 'a.dart'; |
242 '''); | 270 '''); |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
352 throw fail('No library found with URI "$uri"'); | 380 throw fail('No library found with URI "$uri"'); |
353 } | 381 } |
354 | 382 |
355 String _getLibraryText(Library library) { | 383 String _getLibraryText(Library library) { |
356 StringBuffer buffer = new StringBuffer(); | 384 StringBuffer buffer = new StringBuffer(); |
357 new Printer(buffer, syntheticNames: new NameSystem()) | 385 new Printer(buffer, syntheticNames: new NameSystem()) |
358 .writeLibraryFile(library); | 386 .writeLibraryFile(library); |
359 return buffer.toString(); | 387 return buffer.toString(); |
360 } | 388 } |
361 } | 389 } |
OLD | NEW |