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.body_builder; | 5 library fasta.body_builder; |
6 | 6 |
7 import 'package:kernel/ast.dart' | 7 import 'package:kernel/ast.dart' |
8 hide InvalidExpression, InvalidInitializer, InvalidStatement; | 8 hide InvalidExpression, InvalidInitializer, InvalidStatement; |
9 | 9 |
10 import 'package:kernel/class_hierarchy.dart' show ClassHierarchy; | 10 import 'package:kernel/class_hierarchy.dart' show ClassHierarchy; |
(...skipping 493 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
504 if (member.isExternal) { | 504 if (member.isExternal) { |
505 initializer = buildInvalidInitializer( | 505 initializer = buildInvalidInitializer( |
506 deprecated_buildCompileTimeError( | 506 deprecated_buildCompileTimeError( |
507 "An external constructor can't initialize fields.", | 507 "An external constructor can't initialize fields.", |
508 formal.charOffset), | 508 formal.charOffset), |
509 formal.charOffset); | 509 formal.charOffset); |
510 } else { | 510 } else { |
511 initializer = buildFieldInitializer(true, formal.name, | 511 initializer = buildFieldInitializer(true, formal.name, |
512 formal.charOffset, new VariableGet(formal.declaration)); | 512 formal.charOffset, new VariableGet(formal.declaration)); |
513 } | 513 } |
514 member.addInitializer(initializer); | 514 member.addInitializer(initializer, _typeInferrer); |
515 } | 515 } |
516 } | 516 } |
517 } | 517 } |
518 } | 518 } |
519 } | 519 } |
520 | 520 |
521 @override | 521 @override |
522 void handleNoInitializers() { | 522 void handleNoInitializers() { |
523 debugEvent("NoInitializers"); | 523 debugEvent("NoInitializers"); |
524 if (functionNestingLevel == 0) { | 524 if (functionNestingLevel == 0) { |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
566 } else { | 566 } else { |
567 Expression value = toValue(node); | 567 Expression value = toValue(node); |
568 if (node is! Throw) { | 568 if (node is! Throw) { |
569 value = | 569 value = |
570 wrapInCompileTimeError(value, fasta.messageExpectedAnInitializer); | 570 wrapInCompileTimeError(value, fasta.messageExpectedAnInitializer); |
571 } | 571 } |
572 initializer = buildInvalidInitializer(node, token.charOffset); | 572 initializer = buildInvalidInitializer(node, token.charOffset); |
573 } | 573 } |
574 _typeInferrer.inferInitializer(initializer); | 574 _typeInferrer.inferInitializer(initializer); |
575 if (member is KernelConstructorBuilder && !member.isExternal) { | 575 if (member is KernelConstructorBuilder && !member.isExternal) { |
576 member.addInitializer(initializer); | 576 member.addInitializer(initializer, _typeInferrer); |
577 } else { | 577 } else { |
578 deprecated_addCompileTimeError( | 578 deprecated_addCompileTimeError( |
579 token.charOffset, "Can't have initializers: ${member.name}"); | 579 token.charOffset, "Can't have initializers: ${member.name}"); |
580 } | 580 } |
581 } | 581 } |
582 | 582 |
583 DartType _computeReturnTypeContext(MemberBuilder member) { | 583 DartType _computeReturnTypeContext(MemberBuilder member) { |
584 if (member is KernelProcedureBuilder) { | 584 if (member is KernelProcedureBuilder) { |
585 return member.target.function.returnType; | 585 return member.target.function.returnType; |
586 } else { | 586 } else { |
(...skipping 3214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3801 return AsyncMarker.Async; | 3801 return AsyncMarker.Async; |
3802 } else { | 3802 } else { |
3803 assert(identical(starToken.stringValue, "*")); | 3803 assert(identical(starToken.stringValue, "*")); |
3804 return AsyncMarker.AsyncStar; | 3804 return AsyncMarker.AsyncStar; |
3805 } | 3805 } |
3806 } else { | 3806 } else { |
3807 return unhandled(asyncToken.lexeme, "asyncMarkerFromTokens", | 3807 return unhandled(asyncToken.lexeme, "asyncMarkerFromTokens", |
3808 asyncToken.charOffset, null); | 3808 asyncToken.charOffset, null); |
3809 } | 3809 } |
3810 } | 3810 } |
OLD | NEW |