| 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 'package:front_end/memory_file_system.dart'; | 5 import 'package:front_end/memory_file_system.dart'; |
| 6 | 6 |
| 7 /// Create SDK libraries which are used by Fasta to perform kernel generation. | 7 final _ASYNC = r''' |
| 8 /// Return the mapping from the simple names of these library to the URIs | 8 library dart.async; |
| 9 /// in the given [fileSystem]. The root of the SDK is `file:///sdk`. | |
| 10 Map<String, Uri> createSdkFiles(MemoryFileSystem fileSystem) { | |
| 11 Map<String, Uri> dartLibraries = {}; | |
| 12 | 9 |
| 13 void addSdkLibrary(String name, String contents) { | 10 class Future<T> { |
| 14 String path = '$name/$name.dart'; | 11 factory Future(computation()) => null; |
| 15 Uri uri = Uri.parse('file:///sdk/lib/$path'); | 12 factory Future.delayed(Duration duration, [T computation()]) => null; |
| 16 fileSystem.entityForUri(uri).writeAsStringSync(contents); | 13 factory Future.microtask(FutureOr<T> computation()) => null; |
| 17 dartLibraries[name] = uri; | 14 factory Future.value([value]) => null; |
| 18 } | |
| 19 | 15 |
| 20 addSdkLibrary('core', r''' | 16 static Future<List<T>> wait<T>(Iterable<Future<T>> futures) => null; |
| 17 Future<R> then<R>(FutureOr<R> onValue(T value)) => null; |
| 18 |
| 19 Future<T> whenComplete(action()); |
| 20 } |
| 21 |
| 22 |
| 23 class FutureOr<T> {} |
| 24 class Stream<T> {} |
| 25 abstract class StreamIterator<T> {} |
| 26 |
| 27 abstract class Completer<T> { |
| 28 factory Completer() => null; |
| 29 factory Completer.sync() => null; |
| 30 Future<T> get future; |
| 31 void complete([FutureOr<T> value]); |
| 32 void completeError(Object error, [StackTrace stackTrace]); |
| 33 bool get isCompleted; |
| 34 } |
| 35 |
| 36 class _StreamIterator<T> implements StreamIterator<T> {} |
| 37 class _AsyncStarStreamController {} |
| 38 Object _asyncStackTraceHelper(Function async_op) { } |
| 39 Function _asyncThenWrapperHelper(continuation) {} |
| 40 Function _asyncErrorWrapperHelper(continuation) {} |
| 41 Future _awaitHelper( |
| 42 object, Function thenCallback, Function errorCallback, var awaiter) {} |
| 43 '''; |
| 44 |
| 45 final _CORE = r''' |
| 21 library dart.core; | 46 library dart.core; |
| 22 import 'dart:_internal'; | 47 import 'dart:_internal'; |
| 23 import 'dart:async'; | 48 import 'dart:async'; |
| 24 | 49 |
| 25 class Object { | 50 class Object { |
| 26 const Object(); | 51 const Object(); |
| 27 bool operator ==(other) => identical(this, other); | 52 bool operator ==(other) => identical(this, other); |
| 28 String toString() => 'a string'; | 53 String toString() => 'a string'; |
| 29 int get hashCode => 0; | 54 int get hashCode => 0; |
| 30 Type get runtimeType => null; | 55 Type get runtimeType => null; |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 193 Iterable<V> get values; | 218 Iterable<V> get values; |
| 194 } | 219 } |
| 195 | 220 |
| 196 class Duration implements Comparable<Duration> {} | 221 class Duration implements Comparable<Duration> {} |
| 197 | 222 |
| 198 external bool identical(Object a, Object b); | 223 external bool identical(Object a, Object b); |
| 199 | 224 |
| 200 void print(Object o) {} | 225 void print(Object o) {} |
| 201 | 226 |
| 202 abstract class _SyncIterable implements Iterable {} | 227 abstract class _SyncIterable implements Iterable {} |
| 228 '''; |
| 229 |
| 230 /// Create SDK libraries which are used by Fasta to perform kernel generation. |
| 231 /// Return the mapping from the simple names of these library to the URIs |
| 232 /// in the given [fileSystem]. The root of the SDK is `file:///sdk`. |
| 233 Map<String, Uri> createSdkFiles(MemoryFileSystem fileSystem) { |
| 234 Map<String, Uri> dartLibraries = {}; |
| 235 |
| 236 void addSdkLibrary(String name, String contents) { |
| 237 String path = '$name/$name.dart'; |
| 238 Uri uri = Uri.parse('file:///sdk/lib/$path'); |
| 239 fileSystem.entityForUri(uri).writeAsStringSync(contents); |
| 240 dartLibraries[name] = uri; |
| 241 } |
| 242 |
| 243 fileSystem.entityForUri(Uri.parse('file:///sdk/')).createDirectory(); |
| 244 |
| 245 fileSystem |
| 246 .entityForUri(Uri.parse('file:///sdk/lib/libraries.json')) |
| 247 .writeAsStringSync(r''' |
| 248 { |
| 249 "libraries": { |
| 250 "core": "core/core.dart", |
| 251 "async": "async/async.dart", |
| 252 "collection": "collection/collection.dart", |
| 253 "convert": "convert/convert.dart", |
| 254 "developer": "developer/developer.dart", |
| 255 "io": "io/io.dart", |
| 256 "isolate": "isolate/isolate.dart", |
| 257 "math": "math/math.dart", |
| 258 "mirrors": "mirrors/mirrors.dart", |
| 259 "nativewrappers": "nativewrappers/nativewrappers.dart", |
| 260 "profiler": "profiler/profiler.dart", |
| 261 "typed_data": "typed_data/typed_data.dart", |
| 262 "_builtin": "_builtin/_builtin.dart", |
| 263 "_internal": "_internal/_internal.dart" |
| 264 } |
| 265 } |
| 203 '''); | 266 '''); |
| 204 | 267 |
| 205 addSdkLibrary('async', r''' | 268 addSdkLibrary('core', _CORE); |
| 206 library dart.async; | |
| 207 | 269 |
| 208 class Future<T> { | 270 addSdkLibrary('async', _ASYNC); |
| 209 factory Future(computation()) => null; | |
| 210 factory Future.delayed(Duration duration, [T computation()]) => null; | |
| 211 factory Future.microtask(FutureOr<T> computation()) => null; | |
| 212 factory Future.value([value]) => null; | |
| 213 | |
| 214 static Future<List<T>> wait<T>(Iterable<Future<T>> futures) => null; | |
| 215 Future<R> then<R>(FutureOr<R> onValue(T value)) => null; | |
| 216 | |
| 217 Future<T> whenComplete(action()); | |
| 218 } | |
| 219 | |
| 220 | |
| 221 class FutureOr<T> {} | |
| 222 class Stream<T> {} | |
| 223 abstract class StreamIterator<T> {} | |
| 224 | |
| 225 abstract class Completer<T> { | |
| 226 factory Completer() => null; | |
| 227 factory Completer.sync() => null; | |
| 228 Future<T> get future; | |
| 229 void complete([FutureOr<T> value]); | |
| 230 void completeError(Object error, [StackTrace stackTrace]); | |
| 231 bool get isCompleted; | |
| 232 } | |
| 233 | |
| 234 class _StreamIterator<T> implements StreamIterator<T> {} | |
| 235 class _AsyncStarStreamController {} | |
| 236 Object _asyncStackTraceHelper(Function async_op) { } | |
| 237 Function _asyncThenWrapperHelper(continuation) {} | |
| 238 Function _asyncErrorWrapperHelper(continuation) {} | |
| 239 Future _awaitHelper( | |
| 240 object, Function thenCallback, Function errorCallback, var awaiter) {} | |
| 241 '''); | |
| 242 | 271 |
| 243 addSdkLibrary('collection', 'library dart.collection;'); | 272 addSdkLibrary('collection', 'library dart.collection;'); |
| 244 addSdkLibrary('convert', 'library dart.convert;'); | 273 addSdkLibrary('convert', 'library dart.convert;'); |
| 245 addSdkLibrary('developer', 'library dart.developer;'); | 274 addSdkLibrary('developer', 'library dart.developer;'); |
| 246 addSdkLibrary('io', 'library dart.io;'); | 275 addSdkLibrary('io', 'library dart.io;'); |
| 247 addSdkLibrary('isolate', 'library dart.isolate;'); | 276 addSdkLibrary('isolate', 'library dart.isolate;'); |
| 248 addSdkLibrary('math', ''' | 277 addSdkLibrary('math', ''' |
| 249 library dart.math; | 278 library dart.math; |
| 250 external double sin(num radians); | 279 external double sin(num radians); |
| 251 '''); | 280 '''); |
| 252 addSdkLibrary('mirrors', 'library dart.mirrors;'); | 281 addSdkLibrary('mirrors', 'library dart.mirrors;'); |
| 253 addSdkLibrary('nativewrappers', 'library dart.nativewrappers;'); | 282 addSdkLibrary('nativewrappers', 'library dart.nativewrappers;'); |
| 254 addSdkLibrary('profiler', 'library dart.profiler;'); | 283 addSdkLibrary('profiler', 'library dart.profiler;'); |
| 255 addSdkLibrary('typed_data', 'library dart.typed_data;'); | 284 addSdkLibrary('typed_data', 'library dart.typed_data;'); |
| 256 addSdkLibrary('vmservice_io', 'library dart.vmservice_io;'); | |
| 257 addSdkLibrary('_builtin', 'library dart._builtin;'); | 285 addSdkLibrary('_builtin', 'library dart._builtin;'); |
| 258 addSdkLibrary('_internal', ''' | 286 addSdkLibrary('_internal', ''' |
| 259 library dart._internal; | 287 library dart._internal; |
| 260 class Symbol {} | 288 class Symbol {} |
| 261 class ExternalName { | 289 class ExternalName { |
| 262 final String name; | 290 final String name; |
| 263 const ExternalName(this.name); | 291 const ExternalName(this.name); |
| 264 } | 292 } |
| 265 '''); | 293 '''); |
| 266 addSdkLibrary('_vmservice', 'library dart._vmservice;'); | |
| 267 | 294 |
| 268 return dartLibraries; | 295 return dartLibraries; |
| 269 } | 296 } |
| OLD | NEW |