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 8a1b7645ca0c2944f87f2c7241c8bea48b32afbe..a88f1c4f10e7841141ea60863acf974840e8048c 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 |
@@ -298,14 +298,23 @@ class KernelIsNotExpression extends Not implements KernelExpression { |
/// Concrete shadow object representing a list literal in kernel form. |
class KernelListLiteral extends ListLiteral implements KernelExpression { |
+ final DartType _declaredTypeArgument; |
+ |
KernelListLiteral(List<Expression> expressions, |
{DartType typeArgument, bool isConst: false}) |
- : super(expressions, typeArgument: typeArgument, isConst: isConst); |
+ : _declaredTypeArgument = typeArgument, |
+ super(expressions, |
+ typeArgument: typeArgument ?? const DynamicType(), |
+ isConst: isConst); |
@override |
DartType _inferExpression( |
KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) { |
- return inferrer.inferListLiteral(typeContext, typeNeeded, typeArgument); |
+ return inferrer.inferListLiteral( |
+ typeContext, typeNeeded, fileOffset, _declaredTypeArgument, expressions, |
+ (type) { |
+ typeArgument = type; |
+ }); |
} |
} |