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

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

Issue 2954253002: Add type inference for while and do loops. (Closed)
Patch Set: Created 3 years, 6 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 ff7b30d7c1d1579daf2c1652d5f22d9c91600958..e438e7a6e738a9359b9656a494477939994e8cd7 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
@@ -552,6 +552,21 @@ class KernelDirectPropertyGet extends DirectPropertyGet
}
}
+/// Concrete shadow object representing a do loop in kernel form.
+class KernelDoStatement extends DoStatement implements KernelStatement {
+ KernelDoStatement(Statement body, Expression condition)
+ : super(body, condition);
+
+ @override
+ void _inferStatement(KernelTypeInferrer inferrer) {
+ inferrer.listener.doStatementEnter(this);
+ inferrer.inferStatement(body);
+ inferrer.inferExpression(
+ condition, inferrer.coreTypes.boolClass.rawType, false);
+ inferrer.listener.doStatementExit(this);
+ }
+}
+
/// Concrete shadow object representing a double literal in kernel form.
class KernelDoubleLiteral extends DoubleLiteral implements KernelExpression {
KernelDoubleLiteral(double value) : super(value);
@@ -2175,6 +2190,21 @@ class KernelVariableGet extends VariableGet implements KernelExpression {
}
}
+/// Concrete shadow object representing a while loop in kernel form.
+class KernelWhileStatement extends WhileStatement implements KernelStatement {
+ KernelWhileStatement(Expression condition, Statement body)
+ : super(condition, body);
+
+ @override
+ void _inferStatement(KernelTypeInferrer inferrer) {
+ inferrer.listener.whileStatementEnter(this);
+ inferrer.inferExpression(
+ condition, inferrer.coreTypes.boolClass.rawType, false);
+ inferrer.inferStatement(body);
+ inferrer.listener.whileStatementExit(this);
+ }
+}
+
/// Concrete shadow object representing a yield statement in kernel form.
class KernelYieldStatement extends YieldStatement implements KernelStatement {
KernelYieldStatement(Expression expression, {bool isYieldStar: false})

Powered by Google App Engine
This is Rietveld 408576698