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

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

Issue 2849293002: Infer types of bool/null/string literals. (Closed)
Patch Set: Created 3 years, 8 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 side-by-side diff with in-line comments
Download patch
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> {

Powered by Google App Engine
This is Rietveld 408576698