| Index: pkg/compiler/lib/src/inferrer/node_tracer.dart
|
| diff --git a/pkg/compiler/lib/src/inferrer/node_tracer.dart b/pkg/compiler/lib/src/inferrer/node_tracer.dart
|
| index df7dd31a7ccb08f7a4ab8d2bc6e733daa5a8996f..d97615e8daa61c2b3de0baebb09bba63627de4f5 100644
|
| --- a/pkg/compiler/lib/src/inferrer/node_tracer.dart
|
| +++ b/pkg/compiler/lib/src/inferrer/node_tracer.dart
|
| @@ -220,7 +220,7 @@ abstract class TracerVisitor implements TypeInformationVisitor {
|
| bailout('Stored in a list that bailed out');
|
| } else {
|
| list.flowsInto.forEach((flow) {
|
| - flow.users.forEach((user) {
|
| + flow.users.forEach((dynamic user) {
|
| if (user is! DynamicCallSiteTypeInformation) return;
|
| if (user.receiver != flow) return;
|
| if (inferrer.returnsListElementTypeSet.contains(user.selector)) {
|
| @@ -239,7 +239,7 @@ abstract class TracerVisitor implements TypeInformationVisitor {
|
| bailout('Stored in a map that bailed out');
|
| } else {
|
| map.flowsInto.forEach((flow) {
|
| - flow.users.forEach((user) {
|
| + flow.users.forEach((dynamic user) {
|
| if (user is! DynamicCallSiteTypeInformation) return;
|
| if (user.receiver != flow) return;
|
| if (user.selector.isIndex) {
|
| @@ -392,6 +392,8 @@ abstract class TracerVisitor implements TypeInformationVisitor {
|
|
|
| Iterable<Element> inferredTargetTypes =
|
| info.targets.map((MemberElement element) {
|
| + // Issue 29886.
|
| + // ignore: RETURN_OF_INVALID_TYPE
|
| return inferrer.types.getInferredTypeOf(element);
|
| });
|
| if (inferredTargetTypes.any((user) => user == currentUser)) {
|
|
|