| Index: pkg/analyzer/lib/src/generated/element_resolver.dart
|
| diff --git a/pkg/analyzer/lib/src/generated/element_resolver.dart b/pkg/analyzer/lib/src/generated/element_resolver.dart
|
| index 029b5c6759abc85ffcba5d66c3c6141a90e70b38..b3dbb0b9eae1e21ccadb020983c69545e9600407 100644
|
| --- a/pkg/analyzer/lib/src/generated/element_resolver.dart
|
| +++ b/pkg/analyzer/lib/src/generated/element_resolver.dart
|
| @@ -643,7 +643,9 @@ class ElementResolver extends SimpleAstVisitor<Object> {
|
| }
|
| staticElement = _resolveElement(typeReference, methodName);
|
| } else {
|
| - DartType staticType = _getStaticType(target);
|
| + DartType staticType = _resolver.strongMode
|
| + ? _getStaticTypeOrFunctionType(target)
|
| + : _getStaticType(target);
|
| DartType propagatedType = _getPropagatedType(target);
|
| staticElement = _resolveInvokedElementWithTarget(
|
| target, staticType, methodName, isConditional);
|
| @@ -817,6 +819,7 @@ class ElementResolver extends SimpleAstVisitor<Object> {
|
| }
|
| return type;
|
| }
|
| +
|
| DartType targetType = getSuperType(_getStaticType(target));
|
| String targetTypeName = targetType?.name;
|
| _resolver.errorReporter.reportErrorForNode(
|
| @@ -1516,10 +1519,7 @@ class ElementResolver extends SimpleAstVisitor<Object> {
|
| * type analysis.
|
| */
|
| DartType _getStaticType(Expression expression) {
|
| - if (expression is NullLiteral) {
|
| - return _resolver.typeProvider.bottomType;
|
| - }
|
| - DartType staticType = _resolveTypeParameter(expression.staticType);
|
| + DartType staticType = _getStaticTypeOrFunctionType(expression);
|
| if (staticType is FunctionType) {
|
| //
|
| // All function types are subtypes of 'Function', which is itself a
|
| @@ -1530,6 +1530,13 @@ class ElementResolver extends SimpleAstVisitor<Object> {
|
| return staticType;
|
| }
|
|
|
| + DartType _getStaticTypeOrFunctionType(Expression expression) {
|
| + if (expression is NullLiteral) {
|
| + return _resolver.typeProvider.bottomType;
|
| + }
|
| + return _resolveTypeParameter(expression.staticType);
|
| + }
|
| +
|
| /**
|
| * Check for a generic method & apply type arguments if any were passed.
|
| */
|
| @@ -2196,6 +2203,10 @@ class ElementResolver extends SimpleAstVisitor<Object> {
|
| return element;
|
| } else if (target is SimpleIdentifier) {
|
| Element targetElement = target.staticElement;
|
| + if (targetType is FunctionType &&
|
| + methodName.name == FunctionElement.CALL_METHOD_NAME) {
|
| + return targetElement;
|
| + }
|
| if (targetElement is PrefixElement) {
|
| if (isConditional) {
|
| _resolver.errorReporter.reportErrorForNode(
|
|
|