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 file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library fasta.source_loader; | 5 library fasta.source_loader; |
6 | 6 |
7 import 'dart:async' show Future; | 7 import 'dart:async' show Future; |
8 | 8 |
9 import 'dart:typed_data' show Uint8List; | 9 import 'dart:typed_data' show Uint8List; |
10 | 10 |
11 import 'package:front_end/file_system.dart'; | 11 import 'package:front_end/file_system.dart'; |
12 import 'package:front_end/src/base/instrumentation.dart' show Instrumentation; | 12 import 'package:front_end/src/base/instrumentation.dart' show Instrumentation; |
13 | 13 |
14 import 'package:front_end/src/fasta/kernel/kernel_shadow_ast.dart' | 14 import 'package:front_end/src/fasta/kernel/kernel_shadow_ast.dart' |
15 show KernelTypeInferenceEngine; | 15 show KernelTypeInferenceEngine; |
16 | 16 |
17 import 'package:front_end/src/fasta/kernel/kernel_target.dart' | 17 import 'package:front_end/src/fasta/kernel/kernel_target.dart' |
18 show KernelTarget; | 18 show KernelTarget; |
19 | 19 |
20 import 'package:front_end/src/fasta/type_inference/type_inference_engine.dart' | 20 import 'package:front_end/src/fasta/type_inference/type_inference_engine.dart' |
21 show TypeInferenceEngine; | 21 show TypeInferenceEngine; |
22 | 22 |
23 import 'package:kernel/ast.dart' show Program; | 23 import 'package:kernel/ast.dart' show Program; |
24 | 24 |
25 import 'package:kernel/class_hierarchy.dart' show ClassHierarchy; | 25 import 'package:kernel/class_hierarchy.dart' |
| 26 show ClassHierarchy, ClosedWorldClassHierarchy; |
26 | 27 |
27 import 'package:kernel/core_types.dart' show CoreTypes; | 28 import 'package:kernel/core_types.dart' show CoreTypes; |
28 | 29 |
29 import '../builder/builder.dart' | 30 import '../builder/builder.dart' |
30 show | 31 show |
31 Builder, | 32 Builder, |
32 ClassBuilder, | 33 ClassBuilder, |
33 EnumBuilder, | 34 EnumBuilder, |
34 LibraryBuilder, | 35 LibraryBuilder, |
35 NamedTypeBuilder, | 36 NamedTypeBuilder, |
(...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
433 void buildProgram() { | 434 void buildProgram() { |
434 builders.forEach((Uri uri, LibraryBuilder library) { | 435 builders.forEach((Uri uri, LibraryBuilder library) { |
435 if (library is SourceLibraryBuilder) { | 436 if (library is SourceLibraryBuilder) { |
436 libraries.add(library.build(coreLibrary)); | 437 libraries.add(library.build(coreLibrary)); |
437 } | 438 } |
438 }); | 439 }); |
439 ticker.logMs("Built program"); | 440 ticker.logMs("Built program"); |
440 } | 441 } |
441 | 442 |
442 void computeHierarchy(Program program) { | 443 void computeHierarchy(Program program) { |
443 hierarchy = new ClassHierarchy(program); | 444 hierarchy = new ClosedWorldClassHierarchy(program); |
444 ticker.logMs("Computed class hierarchy"); | 445 ticker.logMs("Computed class hierarchy"); |
445 coreTypes = new CoreTypes(program); | 446 coreTypes = new CoreTypes(program); |
446 ticker.logMs("Computed core types"); | 447 ticker.logMs("Computed core types"); |
447 } | 448 } |
448 | 449 |
449 void checkOverrides(List<SourceClassBuilder> sourceClasses) { | 450 void checkOverrides(List<SourceClassBuilder> sourceClasses) { |
450 assert(hierarchy != null); | 451 assert(hierarchy != null); |
451 for (SourceClassBuilder builder in sourceClasses) { | 452 for (SourceClassBuilder builder in sourceClasses) { |
452 builder.checkOverrides(hierarchy); | 453 builder.checkOverrides(hierarchy); |
453 } | 454 } |
(...skipping 22 matching lines...) Expand all Loading... |
476 /// Performs the second phase of top level initializer inference, which is to | 477 /// Performs the second phase of top level initializer inference, which is to |
477 /// visit fields and top level variables in topologically-sorted order and | 478 /// visit fields and top level variables in topologically-sorted order and |
478 /// assign their types. | 479 /// assign their types. |
479 void performInitializerInference() { | 480 void performInitializerInference() { |
480 typeInferenceEngine.finishTopLevel(); | 481 typeInferenceEngine.finishTopLevel(); |
481 ticker.logMs("Performed initializer inference"); | 482 ticker.logMs("Performed initializer inference"); |
482 } | 483 } |
483 | 484 |
484 List<Uri> getDependencies() => sourceBytes.keys.toList(); | 485 List<Uri> getDependencies() => sourceBytes.keys.toList(); |
485 } | 486 } |
OLD | NEW |