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

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

Issue 2865623003: Implement type inference of constructor invocations in Fasta. (Closed)
Patch Set: 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 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 4f41a27a090b1db64901c5d9fa560185412c9ab3..504c88a5fe7c9888d1ebba88a6ee0359188f5766 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
@@ -97,11 +97,28 @@ class KernelConstructorInvocation extends ConstructorInvocation
Reference targetReference, Arguments arguments)
: super.byReference(targetReference, arguments);
+ void _forEachArgument(void callback(String name, Expression expression)) {
+ for (var expression in arguments.positional) {
+ callback(null, expression);
+ }
+ for (var namedExpression in arguments.named) {
+ callback(namedExpression.name, namedExpression.value);
+ }
+ }
+
@override
DartType _inferExpression(
KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
- // TODO(scheglov): implement.
- return typeNeeded ? const DynamicType() : null;
+ return inferrer.inferConstructorInvocation(
+ typeContext,
+ typeNeeded,
+ fileOffset,
+ target,
+ arguments.types.isEmpty ? null : arguments.types,
+ _forEachArgument, (type) {
+ arguments = new Arguments(arguments.positional,
+ named: arguments.named, types: type.typeArguments);
+ });
}
}

Powered by Google App Engine
This is Rietveld 408576698