 Chromium Code Reviews
 Chromium Code Reviews Issue 2849293002:
  Infer types of bool/null/string literals.  (Closed)
    
  
    Issue 2849293002:
  Infer types of bool/null/string literals.  (Closed) 
  | Index: pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart | 
| diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart | 
| index 6f57f7d708a8a63a349517cdfe465a218a761e68..386b47a6ce08ace6154d1e2d6c7579cfddf65652 100644 | 
| --- a/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart | 
| +++ b/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart | 
| @@ -35,6 +35,17 @@ class KernelBlock extends Block implements KernelStatement { | 
| } | 
| } | 
| +/// Concrete shadow object representing a boolean literal in kernel form. | 
| +class KernelBoolLiteral extends BoolLiteral implements KernelExpression { | 
| + KernelBoolLiteral(bool value) : super(value); | 
| + | 
| + @override | 
| + DartType _inferExpression( | 
| + KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) { | 
| + return inferrer.inferBoolLiteral(typeContext, typeNeeded); | 
| + } | 
| +} | 
| + | 
| /// Concrete shadow object representing a double literal in kernel form. | 
| class KernelDoubleLiteral extends DoubleLiteral implements KernelExpression { | 
| KernelDoubleLiteral(double value) : super(value); | 
| @@ -225,6 +236,29 @@ class KernelStaticGet extends StaticGet implements KernelExpression { | 
| } | 
| } | 
| +/// Concrete shadow object representing a string concatenation in kernel form. | 
| +class KernelStringConcatenation extends StringConcatenation | 
| + implements KernelExpression { | 
| + KernelStringConcatenation(List<Expression> expressions) : super(expressions); | 
| + | 
| + @override | 
| + DartType _inferExpression( | 
| + KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) { | 
| + return inferrer.inferStringLiteral(typeContext, typeNeeded); | 
| 
Paul Berry
2017/05/01 22:03:44
This works for now, but in the long run it will ne
 
scheglov
2017/05/02 02:35:20
Done.
I ended up removing testing for StringConcat
 | 
| + } | 
| +} | 
| + | 
| +/// Concrete shadow object representing a string literal in kernel form. | 
| +class KernelStringLiteral extends StringLiteral implements KernelExpression { | 
| + KernelStringLiteral(String value) : super(value); | 
| + | 
| + @override | 
| + DartType _inferExpression( | 
| + KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) { | 
| + return inferrer.inferStringLiteral(typeContext, typeNeeded); | 
| + } | 
| +} | 
| + | 
| /// Concrete implementation of [TypeInferenceEngine] specialized to work with | 
| /// kernel objects. | 
| class KernelTypeInferenceEngine extends TypeInferenceEngineImpl<KernelField> { |