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 |
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
223 } | 223 } |
224 program = erroneousProgram(isFullProgram); | 224 program = erroneousProgram(isFullProgram); |
225 return uri == null | 225 return uri == null |
226 ? new Future<Program>.value(program) | 226 ? new Future<Program>.value(program) |
227 : writeLinkedProgram(uri, program, isFullProgram: isFullProgram); | 227 : writeLinkedProgram(uri, program, isFullProgram: isFullProgram); |
228 } | 228 } |
229 | 229 |
230 Future<Program> writeOutline(Uri uri) async { | 230 Future<Program> writeOutline(Uri uri) async { |
231 if (loader.first == null) return null; | 231 if (loader.first == null) return null; |
232 try { | 232 try { |
| 233 loader.createTopLevelTypeInferrer(); |
233 await loader.buildOutlines(); | 234 await loader.buildOutlines(); |
234 loader.coreLibrary | 235 loader.coreLibrary |
235 .becomeCoreLibrary(const DynamicType(), const VoidType()); | 236 .becomeCoreLibrary(const DynamicType(), const VoidType()); |
236 dynamicType.bind(loader.coreLibrary["dynamic"]); | 237 dynamicType.bind(loader.coreLibrary["dynamic"]); |
237 loader.resolveParts(); | 238 loader.resolveParts(); |
238 loader.computeLibraryScopes(); | 239 loader.computeLibraryScopes(); |
239 loader.resolveTypes(); | 240 loader.resolveTypes(); |
240 loader.buildProgram(); | 241 loader.buildProgram(); |
241 loader.checkSemantics(); | 242 loader.checkSemantics(); |
242 List<SourceClassBuilder> sourceClasses = collectAllSourceClasses(); | 243 List<SourceClassBuilder> sourceClasses = collectAllSourceClasses(); |
243 installDefaultSupertypes(); | 244 installDefaultSupertypes(); |
244 installDefaultConstructors(sourceClasses); | 245 installDefaultConstructors(sourceClasses); |
245 loader.resolveConstructors(); | 246 loader.resolveConstructors(); |
246 loader.finishTypeVariables(objectClassBuilder); | 247 loader.finishTypeVariables(objectClassBuilder); |
247 program = link(new List<Library>.from(loader.libraries)); | 248 program = link(new List<Library>.from(loader.libraries)); |
248 loader.computeHierarchy(program); | 249 loader.computeHierarchy(program); |
249 loader.checkOverrides(sourceClasses); | 250 loader.checkOverrides(sourceClasses); |
| 251 loader.prepareInitializerInference(); |
| 252 loader.performInitializerInference(); |
250 if (uri == null) return program; | 253 if (uri == null) return program; |
251 return await writeLinkedProgram(uri, program, isFullProgram: false); | 254 return await writeLinkedProgram(uri, program, isFullProgram: false); |
252 } on InputError catch (e) { | 255 } on InputError catch (e) { |
253 return handleInputError(uri, e, isFullProgram: false); | 256 return handleInputError(uri, e, isFullProgram: false); |
254 } catch (e, s) { | 257 } catch (e, s) { |
255 return reportCrash(e, s, loader?.currentUriForCrashReporting); | 258 return reportCrash(e, s, loader?.currentUriForCrashReporting); |
256 } | 259 } |
257 } | 260 } |
258 | 261 |
259 Future<Program> writeProgram(Uri uri, | 262 Future<Program> writeProgram(Uri uri, |
(...skipping 454 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
714 } | 717 } |
715 for (Constructor constructor in superclass.constructors) { | 718 for (Constructor constructor in superclass.constructors) { |
716 if (constructor.name.name.isEmpty) { | 719 if (constructor.name.name.isEmpty) { |
717 return constructor.function.requiredParameterCount == 0 | 720 return constructor.function.requiredParameterCount == 0 |
718 ? constructor | 721 ? constructor |
719 : null; | 722 : null; |
720 } | 723 } |
721 } | 724 } |
722 return null; | 725 return null; |
723 } | 726 } |
OLD | NEW |