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

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

Issue 2828693003: Add local type inference logic for integer literals. (Closed)
Patch Set: Minor clean-ups 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 b979633e9c7f41d9eb011f4527bf480c9d595801..94902dae6512739ef66ff543ccc4f09982607283 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
@@ -25,11 +25,13 @@ import 'package:kernel/core_types.dart';
/// Concrete shadow object representing a statement block in kernel form.
class KernelBlock extends Block implements KernelStatement {
- KernelBlock(List<KernelStatement> statements) : super(statements);
+ KernelBlock(List<Statement> statements) : super(statements);
@override
void _inferStatement(KernelTypeInferrer inferrer) {
- // TODO(paulberry): implement.
+ for (var statement in statements) {
+ inferrer.inferStatement(statement);
+ }
}
}
@@ -62,8 +64,7 @@ class KernelIntLiteral extends IntLiteral implements KernelExpression {
@override
DartType _inferExpression(
KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
- // TODO(paulberry): implement.
- return typeNeeded ? const DynamicType() : null;
+ return inferrer.inferIntLiteral(typeContext, typeNeeded);
}
}
@@ -157,20 +158,26 @@ class KernelTypeInferrer extends TypeInferrer<Statement, Expression,
/// Concrete shadow object representing a variable declaration in kernel form.
class KernelVariableDeclaration extends VariableDeclaration
implements KernelStatement {
+ final bool _implicitlyTyped;
+
KernelVariableDeclaration(String name,
- {KernelExpression initializer,
+ {Expression initializer,
DartType type,
bool isFinal: false,
bool isConst: false})
- : super(name,
+ : _implicitlyTyped = type == null,
+ super(name,
initializer: initializer,
- type: type,
+ type: type ?? const DynamicType(),
isFinal: isFinal,
isConst: isConst);
@override
void _inferStatement(KernelTypeInferrer inferrer) {
- // TODO(paulberry): implement.
+ inferrer.inferVariableDeclaration(
+ _implicitlyTyped ? null : type, initializer, fileOffset, (type) {
+ this.type = type;
+ });
}
}

Powered by Google App Engine
This is Rietveld 408576698