Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(139)

Side by Side Diff: pkg/front_end/lib/src/fasta/kernel/body_builder.dart

Issue 2993193002: When reordering constructor initializers, use correct types for temp vars. (Closed)
Patch Set: Created 3 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698