| Index: pkg/analyzer/lib/src/task/strong_mode.dart
|
| diff --git a/pkg/analyzer/lib/src/task/strong_mode.dart b/pkg/analyzer/lib/src/task/strong_mode.dart
|
| index dcc55f1840e7ebb86320a533767f669030ae27f6..9208b991d3f082168a6397ad4d265a1ed727379c 100644
|
| --- a/pkg/analyzer/lib/src/task/strong_mode.dart
|
| +++ b/pkg/analyzer/lib/src/task/strong_mode.dart
|
| @@ -606,6 +606,65 @@ class _IsValidForTypeInferenceVisitor extends RecursiveAstVisitor {
|
| }
|
|
|
| @override
|
| + void visitFunctionExpression(FunctionExpression node) {
|
| + FunctionBody body = node.body;
|
| + if (body is ExpressionFunctionBody) {
|
| + body.accept(this);
|
| + } else {
|
| + isValid = false;
|
| + }
|
| + }
|
| +
|
| + @override
|
| + void visitFunctionExpressionInvocation(FunctionExpressionInvocation node) {
|
| + node.function?.accept(this);
|
| + }
|
| +
|
| + @override
|
| + void visitIndexExpression(IndexExpression node) {
|
| + isValid = false;
|
| + }
|
| +
|
| + @override
|
| + void visitInstanceCreationExpression(InstanceCreationExpression node) {
|
| + ConstructorElement constructor = node.staticElement;
|
| + if (constructor != null) {
|
| + ClassElement clazz = constructor?.enclosingElement;
|
| + if (clazz.typeParameters.isNotEmpty &&
|
| + node.constructorName.type.typeArguments == null) {
|
| + isValid = false;
|
| + return;
|
| + }
|
| + }
|
| + }
|
| +
|
| + @override
|
| + void visitListLiteral(ListLiteral node) {
|
| + if (node.typeArguments == null) {
|
| + super.visitListLiteral(node);
|
| + }
|
| + }
|
| +
|
| + @override
|
| + void visitMapLiteral(MapLiteral node) {
|
| + if (node.typeArguments == null) {
|
| + super.visitMapLiteral(node);
|
| + }
|
| + }
|
| +
|
| + @override
|
| + void visitMethodInvocation(MethodInvocation node) {
|
| + Element element = node.methodName.staticElement;
|
| + if (element is ExecutableElement) {
|
| + if (element.type.typeFormals.isNotEmpty && node.typeArguments == null) {
|
| + isValid = false;
|
| + return;
|
| + }
|
| + }
|
| + node.target?.accept(this);
|
| + }
|
| +
|
| + @override
|
| void visitSimpleIdentifier(SimpleIdentifier node) {
|
| Element element = node.staticElement;
|
| if (element == null) {
|
|
|