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

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

Issue 2855403002: Type inference for StringConcatenation. (Closed)
Patch Set: Fixes for review comments. Created 3 years, 7 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) 2017, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2017, 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 /// This file declares a "shadow hierarchy" of concrete classes which extend 5 /// This file declares a "shadow hierarchy" of concrete classes which extend
6 /// the kernel class hierarchy, adding methods and fields needed by the 6 /// the kernel class hierarchy, adding methods and fields needed by the
7 /// BodyBuilder. 7 /// BodyBuilder.
8 /// 8 ///
9 /// Instances of these classes may be created using the factory methods in 9 /// Instances of these classes may be created using the factory methods in
10 /// `ast_factory.dart`. 10 /// `ast_factory.dart`.
(...skipping 482 matching lines...) Expand 10 before | Expand all | Expand 10 after
493 } 493 }
494 494
495 /// Concrete shadow object representing a string concatenation in kernel form. 495 /// Concrete shadow object representing a string concatenation in kernel form.
496 class KernelStringConcatenation extends StringConcatenation 496 class KernelStringConcatenation extends StringConcatenation
497 implements KernelExpression { 497 implements KernelExpression {
498 KernelStringConcatenation(List<Expression> expressions) : super(expressions); 498 KernelStringConcatenation(List<Expression> expressions) : super(expressions);
499 499
500 @override 500 @override
501 DartType _inferExpression( 501 DartType _inferExpression(
502 KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) { 502 KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
503 // TODO(scheglov) Add and use inferStringConcatenation() instead. 503 return inferrer.inferStringConcatenation(
504 return inferrer.inferStringLiteral(typeContext, typeNeeded); 504 typeContext, typeNeeded, expressions);
505 } 505 }
506 } 506 }
507 507
508 /// Concrete shadow object representing a string literal in kernel form. 508 /// Concrete shadow object representing a string literal in kernel form.
509 class KernelStringLiteral extends StringLiteral implements KernelExpression { 509 class KernelStringLiteral extends StringLiteral implements KernelExpression {
510 KernelStringLiteral(String value) : super(value); 510 KernelStringLiteral(String value) : super(value);
511 511
512 @override 512 @override
513 DartType _inferExpression( 513 DartType _inferExpression(
514 KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) { 514 KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
(...skipping 363 matching lines...) Expand 10 before | Expand all | Expand 10 after
878 // KernelVariableDeclaration. 878 // KernelVariableDeclaration.
879 mutatedInClosure = true; 879 mutatedInClosure = true;
880 declaredType = variable.type; 880 declaredType = variable.type;
881 } 881 }
882 return inferrer.inferVariableGet(typeContext, typeNeeded, mutatedInClosure, 882 return inferrer.inferVariableGet(typeContext, typeNeeded, mutatedInClosure,
883 _fact, _scope, fileOffset, declaredType, (type) { 883 _fact, _scope, fileOffset, declaredType, (type) {
884 promotedType = type; 884 promotedType = type;
885 }); 885 });
886 } 886 }
887 } 887 }
OLDNEW
« no previous file with comments | « pkg/front_end/lib/src/fasta/kernel/body_builder.dart ('k') | pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698