Index: pkg/analyzer/lib/src/generated/resolver.dart |
diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart |
index 8110c8cfb3097cc034a67e5342374f96a6255472..6fe292ae7bb080e3ab0050adf1156820a35d321f 100644 |
--- a/pkg/analyzer/lib/src/generated/resolver.dart |
+++ b/pkg/analyzer/lib/src/generated/resolver.dart |
@@ -2431,6 +2431,9 @@ class ElementBuilder extends RecursiveAstVisitor<Object> { |
// exception |
LocalVariableElementImpl exception = |
new LocalVariableElementImpl.forNode(exceptionParameter); |
+ if (node.exceptionType == null) { |
+ exception.hasImplicitType = true; |
+ } |
_currentHolder.addLocalVariable(exception); |
exceptionParameter.staticElement = exception; |
// stack trace |
@@ -2600,6 +2603,9 @@ class ElementBuilder extends RecursiveAstVisitor<Object> { |
element.setVisibleRange(declarationEnd, statementEnd - declarationEnd - 1); |
element.const3 = node.isConst; |
element.final2 = node.isFinal; |
+ if (node.type == null) { |
+ element.hasImplicitType = true; |
+ } |
_currentHolder.addLocalVariable(element); |
variableName.staticElement = element; |
return super.visitDeclaredIdentifier(node); |
@@ -2640,6 +2646,10 @@ class ElementBuilder extends RecursiveAstVisitor<Object> { |
} |
// visible range |
_setParameterVisibleRange(node, parameter); |
+ if (normalParameter is SimpleFormalParameter && |
+ normalParameter.type == null) { |
+ parameter.hasImplicitType = true; |
+ } |
_currentHolder.addParameter(parameter); |
parameterName.staticElement = parameter; |
normalParameter.accept(this); |
@@ -2746,6 +2756,9 @@ class ElementBuilder extends RecursiveAstVisitor<Object> { |
element.setVisibleRange(functionEnd, blockEnd - functionEnd - 1); |
} |
} |
+ if (node.returnType == null) { |
+ element.hasImplicitReturnType = true; |
+ } |
_currentHolder.addFunction(element); |
expression.element = element; |
functionName.staticElement = element; |
@@ -2783,6 +2796,9 @@ class ElementBuilder extends RecursiveAstVisitor<Object> { |
getter.getter = true; |
getter.static = true; |
variable.getter = getter; |
+ if (node.returnType == null) { |
+ getter.hasImplicitReturnType = true; |
+ } |
_currentHolder.addAccessor(getter); |
expression.element = getter; |
propertyNameNode.staticElement = getter; |
@@ -2859,6 +2875,7 @@ class ElementBuilder extends RecursiveAstVisitor<Object> { |
_functionTypesToFix.add(type); |
} |
element.type = type; |
+ element.hasImplicitReturnType = true; |
_currentHolder.addFunction(element); |
node.element = element; |
holder.validate(); |
@@ -2961,6 +2978,9 @@ class ElementBuilder extends RecursiveAstVisitor<Object> { |
if (body.isGenerator) { |
element.generator = true; |
} |
+ if (node.returnType == null) { |
+ element.hasImplicitReturnType = true; |
+ } |
_currentHolder.addMethod(element); |
methodName.staticElement = element; |
} else { |
@@ -2995,6 +3015,9 @@ class ElementBuilder extends RecursiveAstVisitor<Object> { |
getter.getter = true; |
getter.static = isStatic; |
field.getter = getter; |
+ if (node.returnType == null) { |
+ getter.hasImplicitReturnType = true; |
+ } |
_currentHolder.addAccessor(getter); |
propertyNameNode.staticElement = getter; |
} else { |
@@ -3071,6 +3094,9 @@ class ElementBuilder extends RecursiveAstVisitor<Object> { |
parameter.final2 = node.isFinal; |
parameter.parameterKind = node.kind; |
_setParameterVisibleRange(node, parameter); |
+ if (node.type == null) { |
+ parameter.hasImplicitType = true; |
+ } |
_currentHolder.addParameter(parameter); |
parameterName.staticElement = parameter; |
} |
@@ -3133,6 +3159,9 @@ class ElementBuilder extends RecursiveAstVisitor<Object> { |
field = new FieldElementImpl.forNode(fieldName); |
} |
element = field; |
+ if ((node.parent as VariableDeclarationList).type == null) { |
+ field.hasImplicitType = true; |
+ } |
_currentHolder.addField(field); |
fieldName.staticElement = field; |
} else if (_inFunction) { |
@@ -3148,6 +3177,9 @@ class ElementBuilder extends RecursiveAstVisitor<Object> { |
// TODO(brianwilkerson) This isn't right for variables declared in a for |
// loop. |
variable.setVisibleRange(enclosingBlock.offset, enclosingBlock.length); |
+ if ((node.parent as VariableDeclarationList).type == null) { |
+ variable.hasImplicitType = true; |
+ } |
_currentHolder.addLocalVariable(variable); |
variableName.staticElement = element; |
} else { |
@@ -3159,6 +3191,9 @@ class ElementBuilder extends RecursiveAstVisitor<Object> { |
variable = new TopLevelVariableElementImpl.forNode(variableName); |
} |
element = variable; |
+ if ((node.parent as VariableDeclarationList).type == null) { |
+ variable.hasImplicitType = true; |
+ } |
_currentHolder.addTopLevelVariable(variable); |
variableName.staticElement = element; |
} |
@@ -3190,6 +3225,9 @@ class ElementBuilder extends RecursiveAstVisitor<Object> { |
PropertyAccessorElementImpl getter = |
new PropertyAccessorElementImpl.forVariable(element); |
getter.getter = true; |
+ if (element.hasImplicitType) { |
+ getter.hasImplicitReturnType = true; |
+ } |
_currentHolder.addAccessor(getter); |
element.getter = getter; |
if (!isConst && !isFinal) { |