| Index: pkg/analyzer/lib/src/generated/static_type_analyzer.dart
|
| diff --git a/pkg/analyzer/lib/src/generated/static_type_analyzer.dart b/pkg/analyzer/lib/src/generated/static_type_analyzer.dart
|
| index fdda79a83b6a617b25e2b48f3238eafa459ba8a8..a034cbb3007b3cf5c624ff85b2c89e6b1c1062f3 100644
|
| --- a/pkg/analyzer/lib/src/generated/static_type_analyzer.dart
|
| +++ b/pkg/analyzer/lib/src/generated/static_type_analyzer.dart
|
| @@ -873,16 +873,21 @@ class StaticTypeAnalyzer extends SimpleAstVisitor<Object> {
|
| }
|
| if (needPropagatedType) {
|
| Element propagatedElement = methodNameNode.propagatedElement;
|
| + DartType propagatedInvokeType = node.propagatedInvokeType;
|
| // HACK: special case for object methods ([toString]) on dynamic
|
| // expressions. More special cases in [visitPrefixedIdentfier].
|
| if (propagatedElement == null) {
|
| - propagatedElement =
|
| + MethodElement objMethod =
|
| _typeProvider.objectType.getMethod(methodNameNode.name);
|
| + if (objMethod != null) {
|
| + propagatedElement = objMethod;
|
| + propagatedInvokeType = objMethod.type;
|
| + }
|
| }
|
| if (!identical(propagatedElement, staticMethodElement)) {
|
| // Record static return type of the propagated element.
|
| DartType propagatedStaticType =
|
| - _computeStaticReturnType(propagatedElement);
|
| + _computeInvokeReturnType(propagatedInvokeType);
|
| _resolver.recordPropagatedTypeIfBetter(
|
| node, propagatedStaticType, true);
|
| // Record propagated return type of the propagated element.
|
|
|