From 9d150c64439c944b599fb3ec2a3071f71663dc09 Mon Sep 17 00:00:00 2001 From: Kevin Millikin Date: Mon, 8 Oct 2018 15:03:45 +0000 Subject: [PATCH] Avoid a downcast error MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The field that we use to hold redirecting constructors is a Kernel field, and not a ShadowField. Fixes https://github.com/dart-lang/sdk/issues/34715 Change-Id: Iea2ce41f0229a7b9c2354bf3c6c3b586a3ffec33 Reviewed-on: https://dart-review.googlesource.com/c/78540 Reviewed-by: Peter von der Ahé Reviewed-by: Daniel Hillerström Commit-Queue: Kevin Millikin --- .../lib/src/fasta/type_inference/type_inference_engine.dart | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pkg/front_end/lib/src/fasta/type_inference/type_inference_engine.dart b/pkg/front_end/lib/src/fasta/type_inference/type_inference_engine.dart index 6dab19cfe6e..2829d6673e6 100644 --- a/pkg/front_end/lib/src/fasta/type_inference/type_inference_engine.dart +++ b/pkg/front_end/lib/src/fasta/type_inference/type_inference_engine.dart @@ -8,6 +8,7 @@ import 'package:kernel/ast.dart' DartType, DartTypeVisitor, DynamicType, + Field, FunctionType, InterfaceType, TypeParameter, @@ -278,9 +279,9 @@ abstract class TypeInferenceEngine { void inferInitializingFormal(VariableDeclaration formal, Constructor parent) { if (formal.type == null) { - for (ShadowField field in parent.enclosingClass.fields) { + for (Field field in parent.enclosingClass.fields) { if (field.name.name == formal.name) { - if (field.inferenceNode != null) { + if (field is ShadowField && field.inferenceNode != null) { field.inferenceNode.resolve(); } formal.type = field.type;