Index: pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart |
diff --git a/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart b/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart |
index 5e064d168d61c397e9f89fb6ab510b72f0e6a0e0..614495adae6c7bbb93be059651d2b999ee217993 100644 |
--- a/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart |
+++ b/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart |
@@ -259,12 +259,10 @@ abstract class TypeInferrerImpl extends TypeInferrer { |
calleeType = const DynamicType(); |
} |
if (memberClass.typeParameters.isNotEmpty) { |
- var castedType = classHierarchy.getClassAsInstanceOf( |
- receiverType.classNode, memberClass); |
+ var castedType = |
+ classHierarchy.getTypeAsInstanceOf(receiverType, memberClass); |
calleeType = Substitution |
- .fromInterfaceType(Substitution |
- .fromInterfaceType(receiverType) |
- .substituteType(castedType.asInterfaceType)) |
+ .fromInterfaceType(castedType) |
.substituteType(calleeType); |
} |
return calleeType; |
@@ -315,8 +313,7 @@ abstract class TypeInferrerImpl extends TypeInferrer { |
} |
} |
- DartType getSetterType( |
- Member interfaceMember, DartType receiverType, Name methodName) { |
+ DartType getSetterType(Member interfaceMember, DartType receiverType) { |
if (receiverType is InterfaceType) { |
if (interfaceMember == null) return const DynamicType(); |
var memberClass = interfaceMember.enclosingClass; |
@@ -333,12 +330,10 @@ abstract class TypeInferrerImpl extends TypeInferrer { |
setterType = const DynamicType(); |
} |
if (memberClass.typeParameters.isNotEmpty) { |
- var castedType = classHierarchy.getClassAsInstanceOf( |
- receiverType.classNode, memberClass); |
+ var castedType = |
+ classHierarchy.getTypeAsInstanceOf(receiverType, memberClass); |
setterType = Substitution |
- .fromInterfaceType(Substitution |
- .fromInterfaceType(receiverType) |
- .substituteType(castedType.asInterfaceType)) |
+ .fromInterfaceType(castedType) |
.substituteType(setterType); |
} |
return setterType; |