| 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.kernel_target; | 5 library fasta.kernel_target; |
| 6 | 6 |
| 7 import 'dart:async' show Future; | 7 import 'dart:async' show Future; |
| 8 | 8 |
| 9 import 'dart:io' show File, IOSink; | 9 import 'dart:io' show File, IOSink; |
| 10 | 10 |
| 11 import 'package:front_end/file_system.dart'; |
| 11 import 'package:kernel/ast.dart' | 12 import 'package:kernel/ast.dart' |
| 12 show | 13 show |
| 13 Arguments, | 14 Arguments, |
| 14 AsyncMarker, | 15 AsyncMarker, |
| 15 Class, | 16 Class, |
| 16 Constructor, | 17 Constructor, |
| 17 DartType, | 18 DartType, |
| 18 DynamicType, | 19 DynamicType, |
| 19 EmptyStatement, | 20 EmptyStatement, |
| 20 Expression, | 21 Expression, |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 82 MemberBuilder, | 83 MemberBuilder, |
| 83 MixinApplicationBuilder, | 84 MixinApplicationBuilder, |
| 84 NamedMixinApplicationBuilder, | 85 NamedMixinApplicationBuilder, |
| 85 NamedTypeBuilder, | 86 NamedTypeBuilder, |
| 86 TypeBuilder, | 87 TypeBuilder, |
| 87 TypeVariableBuilder; | 88 TypeVariableBuilder; |
| 88 | 89 |
| 89 import 'verifier.dart' show verifyProgram; | 90 import 'verifier.dart' show verifyProgram; |
| 90 | 91 |
| 91 class KernelTarget extends TargetImplementation { | 92 class KernelTarget extends TargetImplementation { |
| 93 /// The [FileSystem] which should be used to access files. |
| 94 final FileSystem fileSystem; |
| 95 |
| 92 final bool strongMode; | 96 final bool strongMode; |
| 93 | 97 |
| 94 final DillTarget dillTarget; | 98 final DillTarget dillTarget; |
| 95 | 99 |
| 96 /// Shared with [CompilerContext]. | 100 /// Shared with [CompilerContext]. |
| 97 final Map<String, Source> uriToSource; | 101 final Map<String, Source> uriToSource; |
| 98 | 102 |
| 99 SourceLoader<Library> loader; | 103 SourceLoader<Library> loader; |
| 100 Program program; | 104 Program program; |
| 101 | 105 |
| 102 final List errors = []; | 106 final List errors = []; |
| 103 | 107 |
| 104 final TypeBuilder dynamicType = | 108 final TypeBuilder dynamicType = |
| 105 new KernelNamedTypeBuilder("dynamic", null, -1, null); | 109 new KernelNamedTypeBuilder("dynamic", null, -1, null); |
| 106 | 110 |
| 107 KernelTarget( | 111 KernelTarget(this.fileSystem, DillTarget dillTarget, |
| 108 DillTarget dillTarget, TranslateUri uriTranslator, this.strongMode, | 112 TranslateUri uriTranslator, this.strongMode, |
| 109 [Map<String, Source> uriToSource]) | 113 [Map<String, Source> uriToSource]) |
| 110 : dillTarget = dillTarget, | 114 : dillTarget = dillTarget, |
| 111 uriToSource = uriToSource ?? CompilerContext.current.uriToSource, | 115 uriToSource = uriToSource ?? CompilerContext.current.uriToSource, |
| 112 super(dillTarget.ticker, uriTranslator) { | 116 super(dillTarget.ticker, uriTranslator) { |
| 113 resetCrashReporting(); | 117 resetCrashReporting(); |
| 114 loader = createLoader(); | 118 loader = createLoader(); |
| 115 } | 119 } |
| 116 | 120 |
| 117 void addError(file, int charOffset, String message) { | 121 void addError(file, int charOffset, String message) { |
| 118 Uri uri = file is String ? Uri.parse(file) : file; | 122 Uri uri = file is String ? Uri.parse(file) : file; |
| 119 InputError error = new InputError(uri, charOffset, message); | 123 InputError error = new InputError(uri, charOffset, message); |
| 120 print(error.format()); | 124 print(error.format()); |
| 121 errors.add(error); | 125 errors.add(error); |
| 122 } | 126 } |
| 123 | 127 |
| 124 SourceLoader<Library> createLoader() => new SourceLoader<Library>(this); | 128 SourceLoader<Library> createLoader() => |
| 129 new SourceLoader<Library>(fileSystem, this); |
| 125 | 130 |
| 126 void addSourceInformation( | 131 void addSourceInformation( |
| 127 Uri uri, List<int> lineStarts, List<int> sourceCode) { | 132 Uri uri, List<int> lineStarts, List<int> sourceCode) { |
| 128 String fileUri = relativizeUri(uri); | 133 String fileUri = relativizeUri(uri); |
| 129 uriToSource[fileUri] = new Source(lineStarts, sourceCode); | 134 uriToSource[fileUri] = new Source(lineStarts, sourceCode); |
| 130 } | 135 } |
| 131 | 136 |
| 132 void read(Uri uri) { | 137 void read(Uri uri) { |
| 133 loader.read(uri); | 138 loader.read(uri); |
| 134 } | 139 } |
| (...skipping 587 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 722 } | 727 } |
| 723 for (Constructor constructor in superclass.constructors) { | 728 for (Constructor constructor in superclass.constructors) { |
| 724 if (constructor.name.name.isEmpty) { | 729 if (constructor.name.name.isEmpty) { |
| 725 return constructor.function.requiredParameterCount == 0 | 730 return constructor.function.requiredParameterCount == 0 |
| 726 ? constructor | 731 ? constructor |
| 727 : null; | 732 : null; |
| 728 } | 733 } |
| 729 } | 734 } |
| 730 return null; | 735 return null; |
| 731 } | 736 } |
| OLD | NEW |