Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1476)

Unified Diff: pkg/analyzer_experimental/lib/src/generated/resolver.dart

Issue 23852002: java2dart improvements and new analyzer_experimental snapshot. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/analyzer_experimental/lib/src/generated/resolver.dart
diff --git a/pkg/analyzer_experimental/lib/src/generated/resolver.dart b/pkg/analyzer_experimental/lib/src/generated/resolver.dart
index 39e0b1c014b20a66ebd866fc0453927e845bc56f..d11f9b2c9a3cc49cdb294b38d082212e73692c56 100644
--- a/pkg/analyzer_experimental/lib/src/generated/resolver.dart
+++ b/pkg/analyzer_experimental/lib/src/generated/resolver.dart
@@ -2573,7 +2573,7 @@ class ElementResolver extends SimpleASTVisitor<Object> {
MethodElement propagatedMethod = lookUpMethod(leftHandSide, propagatedType, methodName);
node.propagatedElement = propagatedMethod;
if (shouldReportMissingMember(staticType, staticMethod) && (_strictMode || propagatedType == null || shouldReportMissingMember(propagatedType, propagatedMethod))) {
- _resolver.reportError6(StaticTypeWarningCode.UNDEFINED_METHOD, operator, [methodName, staticType.displayName]);
+ _resolver.reportErrorProxyConditionalAnalysisError3(staticType.element, StaticTypeWarningCode.UNDEFINED_METHOD, operator, [methodName, staticType.displayName]);
}
}
}
@@ -2592,7 +2592,7 @@ class ElementResolver extends SimpleASTVisitor<Object> {
MethodElement propagatedMethod = lookUpMethod(leftOperand, propagatedType, methodName);
node.propagatedElement = propagatedMethod;
if (shouldReportMissingMember(staticType, staticMethod) && (_strictMode || propagatedType == null || shouldReportMissingMember(propagatedType, propagatedMethod))) {
- _resolver.reportError6(StaticTypeWarningCode.UNDEFINED_OPERATOR, operator, [methodName, staticType.displayName]);
+ _resolver.reportErrorProxyConditionalAnalysisError3(staticType.element, StaticTypeWarningCode.UNDEFINED_OPERATOR, operator, [methodName, staticType.displayName]);
}
}
}
@@ -2602,7 +2602,7 @@ class ElementResolver extends SimpleASTVisitor<Object> {
SimpleIdentifier labelNode = node.label;
LabelElementImpl labelElement = lookupLabel(node, labelNode);
if (labelElement != null && labelElement.isOnSwitchMember) {
- _resolver.reportError(ResolverErrorCode.BREAK_LABEL_ON_SWITCH_MEMBER, labelNode, []);
+ _resolver.reportError5(ResolverErrorCode.BREAK_LABEL_ON_SWITCH_MEMBER, labelNode, []);
}
return null;
}
@@ -2715,9 +2715,9 @@ class ElementResolver extends SimpleASTVisitor<Object> {
FieldElement fieldElement = ((enclosingClass as ClassElementImpl)).getField(fieldName.name);
fieldName.staticElement = fieldElement;
if (fieldElement == null || fieldElement.isSynthetic) {
- _resolver.reportError(CompileTimeErrorCode.INITIALIZER_FOR_NON_EXISTANT_FIELD, node, [fieldName]);
+ _resolver.reportError5(CompileTimeErrorCode.INITIALIZER_FOR_NON_EXISTANT_FIELD, node, [fieldName]);
} else if (fieldElement.isStatic) {
- _resolver.reportError(CompileTimeErrorCode.INITIALIZER_FOR_STATIC_FIELD, node, [fieldName]);
+ _resolver.reportError5(CompileTimeErrorCode.INITIALIZER_FOR_STATIC_FIELD, node, [fieldName]);
}
return null;
}
@@ -2752,7 +2752,7 @@ class ElementResolver extends SimpleASTVisitor<Object> {
SimpleIdentifier labelNode = node.label;
LabelElementImpl labelElement = lookupLabel(node, labelNode);
if (labelElement != null && labelElement.isOnSwitchStatement) {
- _resolver.reportError(ResolverErrorCode.CONTINUE_LABEL_ON_SWITCH, labelNode, []);
+ _resolver.reportError5(ResolverErrorCode.CONTINUE_LABEL_ON_SWITCH, labelNode, []);
}
return null;
}
@@ -2774,7 +2774,7 @@ class ElementResolver extends SimpleASTVisitor<Object> {
if (classElement != null) {
FieldElement fieldElement = ((classElement as ClassElementImpl)).getField(fieldName);
if (fieldElement == null) {
- _resolver.reportError(CompileTimeErrorCode.INITIALIZING_FORMAL_FOR_NON_EXISTANT_FIELD, node, [fieldName]);
+ _resolver.reportError5(CompileTimeErrorCode.INITIALIZING_FORMAL_FOR_NON_EXISTANT_FIELD, node, [fieldName]);
} else {
ParameterElement parameterElement = node.element;
if (parameterElement is FieldFormalParameterElementImpl) {
@@ -2786,17 +2786,17 @@ class ElementResolver extends SimpleASTVisitor<Object> {
fieldFormal.type = fieldType;
}
if (fieldElement.isSynthetic) {
- _resolver.reportError(CompileTimeErrorCode.INITIALIZING_FORMAL_FOR_NON_EXISTANT_FIELD, node, [fieldName]);
+ _resolver.reportError5(CompileTimeErrorCode.INITIALIZING_FORMAL_FOR_NON_EXISTANT_FIELD, node, [fieldName]);
} else if (fieldElement.isStatic) {
- _resolver.reportError(CompileTimeErrorCode.INITIALIZING_FORMAL_FOR_STATIC_FIELD, node, [fieldName]);
+ _resolver.reportError5(CompileTimeErrorCode.INITIALIZING_FORMAL_FOR_STATIC_FIELD, node, [fieldName]);
} else if (declaredType != null && fieldType != null && !declaredType.isAssignableTo(fieldType)) {
- _resolver.reportError(StaticWarningCode.FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE, node, [declaredType.displayName, fieldType.displayName]);
+ _resolver.reportError5(StaticWarningCode.FIELD_INITIALIZING_FORMAL_NOT_ASSIGNABLE, node, [declaredType.displayName, fieldType.displayName]);
}
} else {
if (fieldElement.isSynthetic) {
- _resolver.reportError(CompileTimeErrorCode.INITIALIZING_FORMAL_FOR_NON_EXISTANT_FIELD, node, [fieldName]);
+ _resolver.reportError5(CompileTimeErrorCode.INITIALIZING_FORMAL_FOR_NON_EXISTANT_FIELD, node, [fieldName]);
} else if (fieldElement.isStatic) {
- _resolver.reportError(CompileTimeErrorCode.INITIALIZING_FORMAL_FOR_STATIC_FIELD, node, [fieldName]);
+ _resolver.reportError5(CompileTimeErrorCode.INITIALIZING_FORMAL_FOR_STATIC_FIELD, node, [fieldName]);
}
}
}
@@ -2838,16 +2838,33 @@ class ElementResolver extends SimpleASTVisitor<Object> {
Expression target = node.realTarget;
Type2 staticType = getStaticType(target);
Type2 propagatedType = getPropagatedType(target);
- if (node.inGetterContext()) {
- String methodName = sc.TokenType.INDEX.lexeme;
- bool error = lookUpCheckIndexOperator(node, target, methodName, staticType, propagatedType);
- if (error) {
- return null;
- }
- }
- if (node.inSetterContext()) {
- String methodName = sc.TokenType.INDEX_EQ.lexeme;
- lookUpCheckIndexOperator(node, target, methodName, staticType, propagatedType);
+ String getterMethodName = sc.TokenType.INDEX.lexeme;
+ String setterMethodName = sc.TokenType.INDEX_EQ.lexeme;
+ bool isInGetterContext = node.inGetterContext();
+ bool isInSetterContext = node.inSetterContext();
+ if (isInGetterContext && isInSetterContext) {
+ MethodElement setterStaticMethod = lookUpMethod(target, staticType, setterMethodName);
+ MethodElement setterPropagatedMethod = lookUpMethod(target, propagatedType, setterMethodName);
+ node.staticElement = setterStaticMethod;
+ node.propagatedElement = setterPropagatedMethod;
+ checkForUndefinedIndexOperator(node, target, getterMethodName, setterStaticMethod, setterPropagatedMethod, staticType, propagatedType);
+ MethodElement getterStaticMethod = lookUpMethod(target, staticType, getterMethodName);
+ MethodElement getterPropagatedMethod = lookUpMethod(target, propagatedType, getterMethodName);
+ AuxiliaryElements auxiliaryElements = new AuxiliaryElements(getterStaticMethod, getterPropagatedMethod);
+ node.auxiliaryElements = auxiliaryElements;
+ checkForUndefinedIndexOperator(node, target, getterMethodName, getterStaticMethod, getterPropagatedMethod, staticType, propagatedType);
+ } else if (isInGetterContext) {
+ MethodElement staticMethod = lookUpMethod(target, staticType, getterMethodName);
+ MethodElement propagatedMethod = lookUpMethod(target, propagatedType, getterMethodName);
+ node.staticElement = staticMethod;
+ node.propagatedElement = propagatedMethod;
+ checkForUndefinedIndexOperator(node, target, getterMethodName, staticMethod, propagatedMethod, staticType, propagatedType);
+ } else if (isInSetterContext) {
+ MethodElement staticMethod = lookUpMethod(target, staticType, setterMethodName);
+ MethodElement propagatedMethod = lookUpMethod(target, propagatedType, setterMethodName);
+ node.staticElement = staticMethod;
+ node.propagatedElement = propagatedMethod;
+ checkForUndefinedIndexOperator(node, target, setterMethodName, staticMethod, propagatedMethod, staticType, propagatedType);
}
return null;
}
@@ -2872,7 +2889,7 @@ class ElementResolver extends SimpleASTVisitor<Object> {
Object visitMethodInvocation(MethodInvocation node) {
SimpleIdentifier methodName = node.methodName;
Expression target = node.realTarget;
- if (target is SuperExpression && !isSuperInValidContext((target as SuperExpression))) {
+ if (target is SuperExpression && !isSuperInValidContext(target as SuperExpression)) {
return null;
}
Element staticElement;
@@ -2903,29 +2920,30 @@ class ElementResolver extends SimpleASTVisitor<Object> {
}
ErrorCode errorCode = checkForInvocationError(target, staticElement);
if (identical(errorCode, StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION)) {
- _resolver.reportError(StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION, methodName, [methodName.name]);
+ _resolver.reportError5(StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION, methodName, [methodName.name]);
} else if (identical(errorCode, CompileTimeErrorCode.UNDEFINED_FUNCTION)) {
- _resolver.reportError(CompileTimeErrorCode.UNDEFINED_FUNCTION, methodName, [methodName.name]);
+ _resolver.reportError5(CompileTimeErrorCode.UNDEFINED_FUNCTION, methodName, [methodName.name]);
} else if (identical(errorCode, StaticTypeWarningCode.UNDEFINED_METHOD)) {
String targetTypeName;
if (target == null) {
ClassElement enclosingClass = _resolver.enclosingClass;
targetTypeName = enclosingClass.displayName;
+ _resolver.reportErrorProxyConditionalAnalysisError(_resolver.enclosingClass, StaticTypeWarningCode.UNDEFINED_METHOD, methodName, [methodName.name, targetTypeName]);
} else {
Type2 targetType = getStaticType(target);
if (targetType != null && targetType.isDartCoreFunction && methodName.name == CALL_METHOD_NAME) {
return null;
}
targetTypeName = targetType == null ? null : targetType.displayName;
+ _resolver.reportErrorProxyConditionalAnalysisError(targetType.element, StaticTypeWarningCode.UNDEFINED_METHOD, methodName, [methodName.name, targetTypeName]);
}
- _resolver.reportError(StaticTypeWarningCode.UNDEFINED_METHOD, methodName, [methodName.name, targetTypeName]);
} else if (identical(errorCode, StaticTypeWarningCode.UNDEFINED_SUPER_METHOD)) {
Type2 targetType = getPropagatedType(target);
if (targetType == null) {
targetType = getStaticType(target);
}
String targetTypeName = targetType == null ? null : targetType.name;
- _resolver.reportError(StaticTypeWarningCode.UNDEFINED_SUPER_METHOD, methodName, [methodName.name, targetTypeName]);
+ _resolver.reportError5(StaticTypeWarningCode.UNDEFINED_SUPER_METHOD, methodName, [methodName.name, targetTypeName]);
}
return null;
}
@@ -2947,7 +2965,7 @@ class ElementResolver extends SimpleASTVisitor<Object> {
MethodElement propagatedMethod = lookUpMethod(operand, propagatedType, methodName);
node.propagatedElement = propagatedMethod;
if (shouldReportMissingMember(staticType, staticMethod) && (_strictMode || propagatedType == null || shouldReportMissingMember(propagatedType, propagatedMethod))) {
- _resolver.reportError6(StaticTypeWarningCode.UNDEFINED_OPERATOR, node.operator, [methodName, staticType.displayName]);
+ _resolver.reportErrorProxyConditionalAnalysisError3(staticType.element, StaticTypeWarningCode.UNDEFINED_OPERATOR, node.operator, [methodName, staticType.displayName]);
}
return null;
}
@@ -2962,9 +2980,9 @@ class ElementResolver extends SimpleASTVisitor<Object> {
}
if (element == null) {
if (identifier.inSetterContext()) {
- _resolver.reportError(StaticWarningCode.UNDEFINED_SETTER, identifier, [identifier.name, prefixElement.name]);
+ _resolver.reportError5(StaticWarningCode.UNDEFINED_SETTER, identifier, [identifier.name, prefixElement.name]);
} else {
- _resolver.reportError(StaticWarningCode.UNDEFINED_GETTER, identifier, [identifier.name, prefixElement.name]);
+ _resolver.reportError5(StaticWarningCode.UNDEFINED_GETTER, identifier, [identifier.name, prefixElement.name]);
}
return null;
}
@@ -3005,14 +3023,14 @@ class ElementResolver extends SimpleASTVisitor<Object> {
MethodElement propagatedMethod = lookUpMethod(operand, propagatedType, methodName);
node.propagatedElement = propagatedMethod;
if (shouldReportMissingMember(staticType, staticMethod) && (_strictMode || propagatedType == null || shouldReportMissingMember(propagatedType, propagatedMethod))) {
- _resolver.reportError6(StaticTypeWarningCode.UNDEFINED_OPERATOR, operator, [methodName, staticType.displayName]);
+ _resolver.reportErrorProxyConditionalAnalysisError3(staticType.element, StaticTypeWarningCode.UNDEFINED_OPERATOR, operator, [methodName, staticType.displayName]);
}
}
return null;
}
Object visitPropertyAccess(PropertyAccess node) {
Expression target = node.realTarget;
- if (target is SuperExpression && !isSuperInValidContext((target as SuperExpression))) {
+ if (target is SuperExpression && !isSuperInValidContext(target as SuperExpression)) {
return null;
}
SimpleIdentifier propertyName = node.propertyName;
@@ -3056,19 +3074,25 @@ class ElementResolver extends SimpleASTVisitor<Object> {
return null;
}
Element element = resolveSimpleIdentifier(node);
- if (isFactoryConstructorReturnType(node) && element != _resolver.enclosingClass) {
- _resolver.reportError(CompileTimeErrorCode.INVALID_FACTORY_NAME_NOT_A_CLASS, node, []);
- } else if (isConstructorReturnType(node) && element != _resolver.enclosingClass) {
- _resolver.reportError(CompileTimeErrorCode.INVALID_CONSTRUCTOR_NAME, node, []);
+ ClassElement enclosingClass = _resolver.enclosingClass;
+ if (isFactoryConstructorReturnType(node) && element != enclosingClass) {
+ _resolver.reportError5(CompileTimeErrorCode.INVALID_FACTORY_NAME_NOT_A_CLASS, node, []);
+ } else if (isConstructorReturnType(node) && element != enclosingClass) {
+ _resolver.reportError5(CompileTimeErrorCode.INVALID_CONSTRUCTOR_NAME, node, []);
element = null;
} else if (element == null || (element is PrefixElement && !isValidAsPrefix(node))) {
if (isConstructorReturnType(node)) {
- _resolver.reportError(CompileTimeErrorCode.INVALID_CONSTRUCTOR_NAME, node, []);
+ _resolver.reportError5(CompileTimeErrorCode.INVALID_CONSTRUCTOR_NAME, node, []);
} else {
- _resolver.reportError(StaticWarningCode.UNDEFINED_IDENTIFIER, node, [node.name]);
+ _resolver.reportErrorProxyConditionalAnalysisError(_resolver.enclosingClass, StaticWarningCode.UNDEFINED_IDENTIFIER, node, [node.name]);
}
}
node.staticElement = element;
+ if (node.inSetterContext() && node.inGetterContext() && enclosingClass != null) {
+ InterfaceType enclosingType = enclosingClass.type;
+ AuxiliaryElements auxiliaryElements = new AuxiliaryElements(lookUpGetter(null, enclosingType, node.name), null);
+ node.auxiliaryElements = auxiliaryElements;
+ }
if (node.parent is Annotation) {
Annotation annotation = node.parent as Annotation;
resolveAnnotationElement(annotation, element, null);
@@ -3093,14 +3117,14 @@ class ElementResolver extends SimpleASTVisitor<Object> {
}
if (element == null) {
if (name != null) {
- _resolver.reportError(CompileTimeErrorCode.UNDEFINED_CONSTRUCTOR_IN_INITIALIZER, node, [superclass.name, name]);
+ _resolver.reportError5(CompileTimeErrorCode.UNDEFINED_CONSTRUCTOR_IN_INITIALIZER, node, [superclass.name, name]);
} else {
- _resolver.reportError(CompileTimeErrorCode.UNDEFINED_CONSTRUCTOR_IN_INITIALIZER_DEFAULT, node, [superclass.name]);
+ _resolver.reportError5(CompileTimeErrorCode.UNDEFINED_CONSTRUCTOR_IN_INITIALIZER_DEFAULT, node, [superclass.name]);
}
return null;
} else {
if (element.isFactory) {
- _resolver.reportError(CompileTimeErrorCode.NON_GENERATIVE_CONSTRUCTOR, node, [element]);
+ _resolver.reportError5(CompileTimeErrorCode.NON_GENERATIVE_CONSTRUCTOR, node, [element]);
}
}
if (name != null) {
@@ -3117,7 +3141,7 @@ class ElementResolver extends SimpleASTVisitor<Object> {
}
Object visitSuperExpression(SuperExpression node) {
if (!isSuperInValidContext(node)) {
- _resolver.reportError(CompileTimeErrorCode.SUPER_IN_INVALID_CONTEXT, node, []);
+ _resolver.reportError5(CompileTimeErrorCode.SUPER_IN_INVALID_CONTEXT, node, []);
}
return super.visitSuperExpression(node);
}
@@ -3195,12 +3219,10 @@ class ElementResolver extends SimpleASTVisitor<Object> {
} else {
if (target == null) {
ClassElement enclosingClass = _resolver.enclosingClass;
- if (element == null) {
- if (enclosingClass == null) {
- return CompileTimeErrorCode.UNDEFINED_FUNCTION;
- } else {
- return StaticTypeWarningCode.UNDEFINED_METHOD;
- }
+ if (enclosingClass == null) {
+ return CompileTimeErrorCode.UNDEFINED_FUNCTION;
+ } else if (element == null) {
+ return StaticTypeWarningCode.UNDEFINED_METHOD;
} else {
return StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION;
}
@@ -3218,6 +3240,32 @@ class ElementResolver extends SimpleASTVisitor<Object> {
}
/**
+ * Check that the for some index expression that the method element was resolved, otherwise a
+ * [StaticWarningCode#UNDEFINED_OPERATOR] is generated.
+ *
+ * @param node the index expression to resolve
+ * @param target the target of the expression
+ * @param methodName the name of the operator associated with the context of using of the given
+ * index expression
+ * @return `true` if and only if an error code is generated on the passed node
+ */
+ bool checkForUndefinedIndexOperator(IndexExpression node, Expression target, String methodName, MethodElement staticMethod, MethodElement propagatedMethod, Type2 staticType, Type2 propagatedType) {
+ if (shouldReportMissingMember(staticType, staticMethod) && (_strictMode || propagatedType == null || shouldReportMissingMember(propagatedType, propagatedMethod))) {
+ sc.Token leftBracket = node.leftBracket;
+ sc.Token rightBracket = node.rightBracket;
+ if (leftBracket == null || rightBracket == null) {
+ _resolver.reportErrorProxyConditionalAnalysisError(staticType.element, StaticTypeWarningCode.UNDEFINED_OPERATOR, node, [methodName, staticType.displayName]);
+ } else {
+ int offset = leftBracket.offset;
+ int length = rightBracket.offset - offset + 1;
+ _resolver.reportErrorProxyConditionalAnalysisError2(staticType.element, StaticTypeWarningCode.UNDEFINED_OPERATOR, offset, length, [methodName, staticType.displayName]);
+ }
+ return true;
+ }
+ return false;
+ }
+
+ /**
* Given a list of arguments and the element that will be invoked using those argument, compute
* the list of parameters that correspond to the list of arguments. Return the parameters that
* correspond to the arguments, or `null` if no correspondence could be computed.
@@ -3239,12 +3287,12 @@ class ElementResolver extends SimpleASTVisitor<Object> {
} else if (getterReturnType is FunctionType) {
Element functionElement = ((getterReturnType as FunctionType)).element;
if (functionElement is ExecutableElement) {
- return resolveArgumentsToParameters(false, argumentList, (functionElement as ExecutableElement));
+ return resolveArgumentsToParameters(false, argumentList, functionElement as ExecutableElement);
}
}
}
} else if (element2 is ExecutableElement) {
- return resolveArgumentsToParameters(false, argumentList, (element2 as ExecutableElement));
+ return resolveArgumentsToParameters(false, argumentList, element2 as ExecutableElement);
} else if (element2 is VariableElement) {
VariableElement variable = element2 as VariableElement;
Type2 type = variable.type;
@@ -3445,37 +3493,6 @@ class ElementResolver extends SimpleASTVisitor<Object> {
}
/**
- * Looks up the method element with the given name for index expression, reports
- * [StaticWarningCode#UNDEFINED_OPERATOR] if not found.
- *
- * @param node the index expression to resolve
- * @param target the target of the expression
- * @param methodName the name of the operator associated with the context of using of the given
- * index expression
- * @return `true` if and only if an error code is generated on the passed node
- */
- bool lookUpCheckIndexOperator(IndexExpression node, Expression target, String methodName, Type2 staticType, Type2 propagatedType) {
- MethodElement staticMethod = lookUpMethod(target, staticType, methodName);
- MethodElement propagatedMethod = lookUpMethod(target, propagatedType, methodName);
- node.staticElement = staticMethod;
- node.propagatedElement = propagatedMethod;
- if (shouldReportMissingMember(staticType, staticMethod) && (_strictMode || propagatedType == null || shouldReportMissingMember(propagatedType, propagatedMethod))) {
- sc.Token leftBracket = node.leftBracket;
- sc.Token rightBracket = node.rightBracket;
- if (leftBracket == null || rightBracket == null) {
- _resolver.reportError(StaticTypeWarningCode.UNDEFINED_OPERATOR, node, [methodName, staticType.displayName]);
- return true;
- } else {
- int offset = leftBracket.offset;
- int length = rightBracket.offset - offset + 1;
- _resolver.reportError5(StaticTypeWarningCode.UNDEFINED_OPERATOR, offset, length, [methodName, staticType.displayName]);
- return true;
- }
- }
- return false;
- }
-
- /**
* Look up the getter with the given name in the given type. Return the element representing the
* getter that was found, or `null` if there is no getter with the given name.
*
@@ -3638,11 +3655,11 @@ class ElementResolver extends SimpleASTVisitor<Object> {
}
} else {
if (labelScope == null) {
- _resolver.reportError(CompileTimeErrorCode.LABEL_UNDEFINED, labelNode, [labelNode.name]);
+ _resolver.reportError5(CompileTimeErrorCode.LABEL_UNDEFINED, labelNode, [labelNode.name]);
} else {
labelElement = labelScope.lookup(labelNode) as LabelElementImpl;
if (labelElement == null) {
- _resolver.reportError(CompileTimeErrorCode.LABEL_UNDEFINED, labelNode, [labelNode.name]);
+ _resolver.reportError5(CompileTimeErrorCode.LABEL_UNDEFINED, labelNode, [labelNode.name]);
} else {
labelNode.staticElement = labelElement;
}
@@ -3651,7 +3668,7 @@ class ElementResolver extends SimpleASTVisitor<Object> {
if (labelElement != null) {
ExecutableElement labelContainer = labelElement.getAncestor(ExecutableElement);
if (labelContainer != _resolver.enclosingFunction) {
- _resolver.reportError(CompileTimeErrorCode.LABEL_IN_OUTER_SCOPE, labelNode, [labelNode.name]);
+ _resolver.reportError5(CompileTimeErrorCode.LABEL_IN_OUTER_SCOPE, labelNode, [labelNode.name]);
labelElement = null;
}
}
@@ -3858,12 +3875,12 @@ class ElementResolver extends SimpleASTVisitor<Object> {
if (element2 is PropertyAccessorElement) {
PropertyAccessorElement accessorElement = element2 as PropertyAccessorElement;
if (!accessorElement.isSynthetic) {
- _resolver.reportError(CompileTimeErrorCode.INVALID_ANNOTATION, annotation, []);
+ _resolver.reportError5(CompileTimeErrorCode.INVALID_ANNOTATION, annotation, []);
return;
}
VariableElement variableElement = accessorElement.variable;
if (!variableElement.isConst) {
- _resolver.reportError(CompileTimeErrorCode.INVALID_ANNOTATION, annotation, []);
+ _resolver.reportError5(CompileTimeErrorCode.INVALID_ANNOTATION, annotation, []);
}
return;
}
@@ -3874,12 +3891,12 @@ class ElementResolver extends SimpleASTVisitor<Object> {
String name = nameNode != null ? nameNode.name : null;
ConstructorElement constructor;
{
- InterfaceType interfaceType = new InterfaceTypeImpl.con1((element2 as ClassElement));
+ InterfaceType interfaceType = new InterfaceTypeImpl.con1(element2 as ClassElement);
LibraryElement definingLibrary = _resolver.definingLibrary;
constructor = interfaceType.lookUpConstructor(name, definingLibrary);
}
if (constructor == null) {
- _resolver.reportError(CompileTimeErrorCode.INVALID_ANNOTATION, annotation, []);
+ _resolver.reportError5(CompileTimeErrorCode.INVALID_ANNOTATION, annotation, []);
return;
}
annotation.element = constructor;
@@ -3890,7 +3907,7 @@ class ElementResolver extends SimpleASTVisitor<Object> {
return;
}
if (element2 != null) {
- _resolver.reportError(CompileTimeErrorCode.INVALID_ANNOTATION, annotation, []);
+ _resolver.reportError5(CompileTimeErrorCode.INVALID_ANNOTATION, annotation, []);
}
}
@@ -3924,7 +3941,7 @@ class ElementResolver extends SimpleASTVisitor<Object> {
* @param parameters the of the function that will be invoked with the arguments
* @return the parameters that correspond to the arguments
*/
- List<ParameterElement> resolveArgumentsToParameters2(bool reportError2, ArgumentList argumentList, List<ParameterElement> parameters) {
+ List<ParameterElement> resolveArgumentsToParameters2(bool reportError, ArgumentList argumentList, List<ParameterElement> parameters) {
List<ParameterElement> requiredParameters = new List<ParameterElement>();
List<ParameterElement> positionalParameters = new List<ParameterElement>();
Map<String, ParameterElement> namedParameters = new Map<String, ParameterElement>();
@@ -3954,14 +3971,14 @@ class ElementResolver extends SimpleASTVisitor<Object> {
String name = nameNode.name;
ParameterElement element = namedParameters[name];
if (element == null) {
- ErrorCode errorCode = (reportError2 ? CompileTimeErrorCode.UNDEFINED_NAMED_PARAMETER : StaticWarningCode.UNDEFINED_NAMED_PARAMETER) as ErrorCode;
- _resolver.reportError(errorCode, nameNode, [name]);
+ ErrorCode errorCode = (reportError ? CompileTimeErrorCode.UNDEFINED_NAMED_PARAMETER : StaticWarningCode.UNDEFINED_NAMED_PARAMETER) as ErrorCode;
+ _resolver.reportError5(errorCode, nameNode, [name]);
} else {
resolvedParameters[i] = element;
nameNode.staticElement = element;
}
if (!javaSetAdd(usedNames, name)) {
- _resolver.reportError(CompileTimeErrorCode.DUPLICATE_NAMED_ARGUMENT, nameNode, [name]);
+ _resolver.reportError5(CompileTimeErrorCode.DUPLICATE_NAMED_ARGUMENT, nameNode, [name]);
}
} else {
positionalArgumentCount++;
@@ -3971,11 +3988,11 @@ class ElementResolver extends SimpleASTVisitor<Object> {
}
}
if (positionalArgumentCount < requiredParameters.length) {
- ErrorCode errorCode = (reportError2 ? CompileTimeErrorCode.NOT_ENOUGH_REQUIRED_ARGUMENTS : StaticWarningCode.NOT_ENOUGH_REQUIRED_ARGUMENTS) as ErrorCode;
- _resolver.reportError(errorCode, argumentList, [requiredParameters.length, positionalArgumentCount]);
+ ErrorCode errorCode = (reportError ? CompileTimeErrorCode.NOT_ENOUGH_REQUIRED_ARGUMENTS : StaticWarningCode.NOT_ENOUGH_REQUIRED_ARGUMENTS) as ErrorCode;
+ _resolver.reportError5(errorCode, argumentList, [requiredParameters.length, positionalArgumentCount]);
} else if (positionalArgumentCount > unnamedParameterCount) {
- ErrorCode errorCode = (reportError2 ? CompileTimeErrorCode.EXTRA_POSITIONAL_ARGUMENTS : StaticWarningCode.EXTRA_POSITIONAL_ARGUMENTS) as ErrorCode;
- _resolver.reportError(errorCode, argumentList, [unnamedParameterCount, positionalArgumentCount]);
+ ErrorCode errorCode = (reportError ? CompileTimeErrorCode.EXTRA_POSITIONAL_ARGUMENTS : StaticWarningCode.EXTRA_POSITIONAL_ARGUMENTS) as ErrorCode;
+ _resolver.reportError5(errorCode, argumentList, [unnamedParameterCount, positionalArgumentCount]);
}
return resolvedParameters;
}
@@ -4104,18 +4121,18 @@ class ElementResolver extends SimpleASTVisitor<Object> {
bool isStaticProperty = isStatic(selectedElement);
if (propertyName.inSetterContext()) {
if (isStaticProperty) {
- _resolver.reportError(StaticWarningCode.UNDEFINED_SETTER, propertyName, [propertyName.name, staticType.displayName]);
+ _resolver.reportErrorProxyConditionalAnalysisError(staticType.element, StaticWarningCode.UNDEFINED_SETTER, propertyName, [propertyName.name, staticType.displayName]);
} else {
- _resolver.reportError(StaticTypeWarningCode.UNDEFINED_SETTER, propertyName, [propertyName.name, staticType.displayName]);
+ _resolver.reportErrorProxyConditionalAnalysisError(staticType.element, StaticTypeWarningCode.UNDEFINED_SETTER, propertyName, [propertyName.name, staticType.displayName]);
}
} else if (propertyName.inGetterContext()) {
if (isStaticProperty) {
- _resolver.reportError(StaticWarningCode.UNDEFINED_GETTER, propertyName, [propertyName.name, staticType.displayName]);
+ _resolver.reportErrorProxyConditionalAnalysisError(staticType.element, StaticWarningCode.UNDEFINED_GETTER, propertyName, [propertyName.name, staticType.displayName]);
} else {
- _resolver.reportError(StaticTypeWarningCode.UNDEFINED_GETTER, propertyName, [propertyName.name, staticType.displayName]);
+ _resolver.reportErrorProxyConditionalAnalysisError(staticType.element, StaticTypeWarningCode.UNDEFINED_GETTER, propertyName, [propertyName.name, staticType.displayName]);
}
} else {
- _resolver.reportError(StaticWarningCode.UNDEFINED_IDENTIFIER, propertyName, [propertyName.name]);
+ _resolver.reportErrorProxyConditionalAnalysisError(staticType.element, StaticWarningCode.UNDEFINED_IDENTIFIER, propertyName, [propertyName.name]);
}
}
}
@@ -4264,7 +4281,7 @@ class ElementResolver_SyntheticIdentifier extends Identifier {
String get name => _name;
Element get propagatedElement => null;
Element get staticElement => null;
- void visitChildren(ASTVisitor<Object> visitor) {
+ void visitChildren(ASTVisitor visitor) {
}
}
/**
@@ -5717,12 +5734,12 @@ class LibraryResolver {
Set<Source> importedSources = new Set<Source>();
for (Directive directive in unit.directives) {
if (directive is ExportDirective) {
- Source exportSource = resolveSource(librarySource, (directive as ExportDirective));
+ Source exportSource = resolveSource(librarySource, directive as ExportDirective);
if (exportSource != null) {
javaSetAdd(exportedSources, exportSource);
}
} else if (directive is ImportDirective) {
- Source importSource = resolveSource(librarySource, (directive as ImportDirective));
+ Source importSource = resolveSource(librarySource, directive as ImportDirective);
if (importSource != null) {
javaSetAdd(importedSources, importSource);
}
@@ -5909,6 +5926,11 @@ class LibraryResolver {
for (Source source in library.compilationUnitSources) {
ResolverVisitor visitor = new ResolverVisitor.con1(library, source, _typeProvider);
library.getAST(source).accept(visitor);
+ for (ProxyConditionalAnalysisError conditionalCode in visitor.proxyConditionalAnalysisErrors) {
+ if (conditionalCode.shouldIncludeErrorCode()) {
+ visitor.reportError(conditionalCode.analysisError);
+ }
+ }
}
}
@@ -5970,6 +5992,87 @@ class LibraryResolver {
}
}
/**
+ * This class is a wrapper for an [AnalysisError] which can also be queried after resolution
+ * to find out if the error should actually be reported. In this case, these errors are conditional
+ * on the non-existence of an `@proxy` annotation.
+ *
+ * If we have other conditional error codes in the future, we should have this class implement some
+ * ConditionalErrorCode so that after resolution, a list of ConditionalErrorCode can be visited
+ * instead of multiple lists of *ConditionalErrorCodes.
+ */
+class ProxyConditionalAnalysisError {
+
+ /**
+ * The name of the proxy annotation, from the meta pub package.
+ */
+ static String _PROXY_ANNOTATION_NAME = "proxy";
+
+ /**
+ * The name of the meta library name, from the meta pub package.
+ */
+ static String _META_LIBRARY_NAME = "meta";
+
+ /**
+ * Return `true` if the given element represents a class that has the proxy annotation.
+ *
+ * @param element the class being tested
+ * @return `true` if the given element represents a class that has the proxy annotation
+ */
+ static bool classHasProxyAnnotation(Element element2) {
+ if (element2 is ClassElement) {
+ ClassElement classElement = element2 as ClassElement;
+ List<ElementAnnotation> annotations = classElement.metadata;
+ for (ElementAnnotation annotation in annotations) {
+ Element elementAnnotation = annotation.element;
+ if (elementAnnotation != null) {
+ LibraryElement lib = elementAnnotation.library;
+ if (elementAnnotation.name == _PROXY_ANNOTATION_NAME && lib != null && lib.name == _META_LIBRARY_NAME) {
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ /**
+ * The enclosing [ClassElement], this is what will determine if the error code should, or
+ * should not, be generated on the source.
+ */
+ Element _enclosingElement;
+
+ /**
+ * The conditional analysis error.
+ */
+ AnalysisError _analysisError;
+
+ /**
+ * Instantiate a new ProxyConditionalErrorCode with some enclosing element and the conditional
+ * analysis error.
+ *
+ * @param enclosingElement the enclosing element
+ * @param analysisError the conditional analysis error
+ */
+ ProxyConditionalAnalysisError(Element enclosingElement, AnalysisError analysisError) {
+ this._enclosingElement = enclosingElement;
+ this._analysisError = analysisError;
+ }
+
+ /**
+ * Return the analysis error.
+ *
+ * @return the analysis error
+ */
+ AnalysisError get analysisError => _analysisError;
+
+ /**
+ * Return `true` iff the enclosing class has the proxy annotation.
+ *
+ * @return `true` iff the enclosing class has the proxy annotation
+ */
+ bool shouldIncludeErrorCode() => !classHasProxyAnnotation(_enclosingElement);
+}
+/**
* Instances of the class `ResolverVisitor` are used to resolve the nodes within a single
* compilation unit.
*
@@ -6010,6 +6113,11 @@ class ResolverVisitor extends ScopedVisitor {
TypeOverrideManager _overrideManager = new TypeOverrideManager();
/**
+ * Proxy conditional error codes.
+ */
+ List<ProxyConditionalAnalysisError> _proxyConditionalAnalysisErrors = new List<ProxyConditionalAnalysisError>();
+
+ /**
* Initialize a newly created visitor to resolve the nodes in a compilation unit.
*
* @param library the library containing the compilation unit being resolved
@@ -6044,6 +6152,7 @@ class ResolverVisitor extends ScopedVisitor {
* @return the object keeping track of which elements have had their types overridden
*/
TypeOverrideManager get overrideManager => _overrideManager;
+ List<ProxyConditionalAnalysisError> get proxyConditionalAnalysisErrors => _proxyConditionalAnalysisErrors;
Object visitAsExpression(AsExpression node) {
super.visitAsExpression(node);
override(node.expression, node.type.type);
@@ -6521,6 +6630,43 @@ class ResolverVisitor extends ScopedVisitor {
_overrideManager.setType(element, potentialType);
}
}
+
+ /**
+ * Report a conditional analysis error with the given error code and arguments.
+ *
+ * @param enclosingElement the enclosing element
+ * @param errorCode the error code of the error to be reported
+ * @param node the node specifying the location of the error
+ * @param arguments the arguments to the error, used to compose the error message
+ */
+ void reportErrorProxyConditionalAnalysisError(Element enclosingElement, ErrorCode errorCode, ASTNode node, List<Object> arguments) {
+ _proxyConditionalAnalysisErrors.add(new ProxyConditionalAnalysisError(enclosingElement, new AnalysisError.con2(source, node.offset, node.length, errorCode, arguments)));
+ }
+
+ /**
+ * Report a conditional analysis error with the given error code and arguments.
+ *
+ * @param enclosingElement the enclosing element
+ * @param errorCode the error code of the error to be reported
+ * @param offset the offset of the location of the error
+ * @param length the length of the location of the error
+ * @param arguments the arguments to the error, used to compose the error message
+ */
+ void reportErrorProxyConditionalAnalysisError2(Element enclosingElement, ErrorCode errorCode, int offset, int length, List<Object> arguments) {
+ _proxyConditionalAnalysisErrors.add(new ProxyConditionalAnalysisError(enclosingElement, new AnalysisError.con2(source, offset, length, errorCode, arguments)));
+ }
+
+ /**
+ * Report a conditional analysis error with the given error code and arguments.
+ *
+ * @param enclosingElement the enclosing element
+ * @param errorCode the error code of the error to be reported
+ * @param token the token specifying the location of the error
+ * @param arguments the arguments to the error, used to compose the error message
+ */
+ void reportErrorProxyConditionalAnalysisError3(Element enclosingElement, ErrorCode errorCode, sc.Token token, List<Object> arguments) {
+ _proxyConditionalAnalysisErrors.add(new ProxyConditionalAnalysisError(enclosingElement, new AnalysisError.con2(source, token.offset, token.length, errorCode, arguments)));
+ }
void visitForEachStatementInScope(ForEachStatement node) {
Expression iterator = node.iterator;
safelyVisit(iterator);
@@ -6860,6 +7006,15 @@ abstract class ScopedVisitor extends GeneralizingASTVisitor<Object> {
* @return the object used to access the types from the core library
*/
TypeProvider get typeProvider => _typeProvider;
+
+ /**
+ * Report an error with the given analysis error.
+ *
+ * @param errorCode analysis error
+ */
+ void reportError(AnalysisError analysisError) {
+ _errorListener.onError(analysisError);
+ }
Object visitBlock(Block node) {
Scope outerScope = _nameScope;
try {
@@ -7109,13 +7264,20 @@ abstract class ScopedVisitor extends GeneralizingASTVisitor<Object> {
Scope get nameScope => _nameScope;
/**
+ * Return the source.
+ *
+ * @return the source
+ */
+ Source get source => _source;
+
+ /**
* Report an error with the given error code and arguments.
*
* @param errorCode the error code of the error to be reported
* @param node the node specifying the location of the error
* @param arguments the arguments to the error, used to compose the error message
*/
- void reportError(ErrorCode errorCode, ASTNode node, List<Object> arguments) {
+ void reportError5(ErrorCode errorCode, ASTNode node, List<Object> arguments) {
_errorListener.onError(new AnalysisError.con2(_source, node.offset, node.length, errorCode, arguments));
}
@@ -7127,7 +7289,7 @@ abstract class ScopedVisitor extends GeneralizingASTVisitor<Object> {
* @param length the length of the location of the error
* @param arguments the arguments to the error, used to compose the error message
*/
- void reportError5(ErrorCode errorCode, int offset, int length, List<Object> arguments) {
+ void reportError6(ErrorCode errorCode, int offset, int length, List<Object> arguments) {
_errorListener.onError(new AnalysisError.con2(_source, offset, length, errorCode, arguments));
}
@@ -7138,7 +7300,7 @@ abstract class ScopedVisitor extends GeneralizingASTVisitor<Object> {
* @param token the token specifying the location of the error
* @param arguments the arguments to the error, used to compose the error message
*/
- void reportError6(ErrorCode errorCode, sc.Token token, List<Object> arguments) {
+ void reportError7(ErrorCode errorCode, sc.Token token, List<Object> arguments) {
_errorListener.onError(new AnalysisError.con2(_source, token.offset, token.length, errorCode, arguments));
}
@@ -7189,7 +7351,7 @@ abstract class ScopedVisitor extends GeneralizingASTVisitor<Object> {
*/
void visitStatementInScope(Statement node) {
if (node is Block) {
- visitBlock((node as Block));
+ visitBlock(node as Block);
} else if (node != null) {
Scope outerNameScope = _nameScope;
try {
@@ -8113,7 +8275,7 @@ class StaticTypeAnalyzer extends SimpleASTVisitor<Object> {
} else if (element is MethodElement) {
staticType = ((element as MethodElement)).type;
} else if (element is PropertyAccessorElement) {
- staticType = getType((element as PropertyAccessorElement), node.prefix.staticType);
+ staticType = getType(element as PropertyAccessorElement, node.prefix.staticType);
} else if (element is ExecutableElement) {
staticType = ((element as ExecutableElement)).type;
} else if (element is TypeVariableElement) {
@@ -8211,7 +8373,7 @@ class StaticTypeAnalyzer extends SimpleASTVisitor<Object> {
if (element is MethodElement) {
staticType = ((element as MethodElement)).type;
} else if (element is PropertyAccessorElement) {
- staticType = getType((element as PropertyAccessorElement), node.target != null ? getStaticType(node.target) : null);
+ staticType = getType(element as PropertyAccessorElement, node.target != null ? getStaticType(node.target) : null);
} else {
}
recordStaticType(propertyName, staticType);
@@ -8288,7 +8450,7 @@ class StaticTypeAnalyzer extends SimpleASTVisitor<Object> {
} else if (element is MethodElement) {
staticType = ((element as MethodElement)).type;
} else if (element is PropertyAccessorElement) {
- staticType = getType((element as PropertyAccessorElement), null);
+ staticType = getType(element as PropertyAccessorElement, null);
} else if (element is ExecutableElement) {
staticType = ((element as ExecutableElement)).type;
} else if (element is TypeVariableElement) {
@@ -8637,7 +8799,7 @@ class StaticTypeAnalyzer extends SimpleASTVisitor<Object> {
}
Type2 returnType = functionType.returnType;
if (returnType is TypeVariableType && context is InterfaceType) {
- InterfaceType interfaceTypeContext = (context as InterfaceType);
+ InterfaceType interfaceTypeContext = context as InterfaceType;
List<TypeVariableElement> parameterElements = interfaceTypeContext.element != null ? interfaceTypeContext.element.typeVariables : null;
if (parameterElements != null) {
for (int i = 0; i < parameterElements.length; i++) {
@@ -9428,7 +9590,7 @@ class TypeResolverVisitor extends ScopedVisitor {
super.visitFunctionTypedFormalParameter(node);
Element element = node.identifier.staticElement;
if (element is ParameterElementImpl) {
- setFunctionTypedParameterType((element as ParameterElementImpl), node.returnType, node.parameters);
+ setFunctionTypedParameterType(element as ParameterElementImpl, node.returnType, node.parameters);
} else {
}
return null;
@@ -9508,9 +9670,9 @@ class TypeResolverVisitor extends ScopedVisitor {
element = nameScope.lookup(prefix, definingLibrary);
if (element is PrefixElement) {
if (parent.parent is InstanceCreationExpression && ((parent.parent as InstanceCreationExpression)).isConst) {
- reportError(CompileTimeErrorCode.CONST_WITH_NON_TYPE, prefixedIdentifier.identifier, [prefixedIdentifier.identifier.name]);
+ reportError5(CompileTimeErrorCode.CONST_WITH_NON_TYPE, prefixedIdentifier.identifier, [prefixedIdentifier.identifier.name]);
} else {
- reportError(StaticWarningCode.NEW_WITH_NON_TYPE, prefixedIdentifier.identifier, [prefixedIdentifier.identifier.name]);
+ reportError5(StaticWarningCode.NEW_WITH_NON_TYPE, prefixedIdentifier.identifier, [prefixedIdentifier.identifier.name]);
}
setElement(prefix, element);
return null;
@@ -9529,14 +9691,14 @@ class TypeResolverVisitor extends ScopedVisitor {
InstanceCreationExpression creation = node.parent.parent as InstanceCreationExpression;
if (creation.isConst) {
if (element == null) {
- reportError(CompileTimeErrorCode.UNDEFINED_CLASS, typeNameSimple, [typeName]);
+ reportError5(CompileTimeErrorCode.UNDEFINED_CLASS, typeNameSimple, [typeName]);
} else {
- reportError(CompileTimeErrorCode.CONST_WITH_NON_TYPE, typeNameSimple, [typeName]);
+ reportError5(CompileTimeErrorCode.CONST_WITH_NON_TYPE, typeNameSimple, [typeName]);
}
elementValid = false;
} else {
if (element != null) {
- reportError(StaticWarningCode.NEW_WITH_NON_TYPE, typeNameSimple, [typeName]);
+ reportError5(StaticWarningCode.NEW_WITH_NON_TYPE, typeNameSimple, [typeName]);
elementValid = false;
}
}
@@ -9544,19 +9706,19 @@ class TypeResolverVisitor extends ScopedVisitor {
if (elementValid && element == null) {
SimpleIdentifier typeNameSimple = getTypeSimpleIdentifier(typeName);
if (typeNameSimple.name == "boolean") {
- reportError(StaticWarningCode.UNDEFINED_CLASS_BOOLEAN, typeNameSimple, []);
+ reportError5(StaticWarningCode.UNDEFINED_CLASS_BOOLEAN, typeNameSimple, []);
} else if (isTypeNameInCatchClause(node)) {
- reportError(StaticWarningCode.NON_TYPE_IN_CATCH_CLAUSE, typeName, [typeName.name]);
+ reportError5(StaticWarningCode.NON_TYPE_IN_CATCH_CLAUSE, typeName, [typeName.name]);
} else if (isTypeNameInAsExpression(node)) {
- reportError(StaticWarningCode.CAST_TO_NON_TYPE, typeName, [typeName.name]);
+ reportError5(StaticWarningCode.CAST_TO_NON_TYPE, typeName, [typeName.name]);
} else if (isTypeNameInIsExpression(node)) {
- reportError(StaticWarningCode.TYPE_TEST_NON_TYPE, typeName, [typeName.name]);
+ reportError5(StaticWarningCode.TYPE_TEST_NON_TYPE, typeName, [typeName.name]);
} else if (isTypeNameTargetInRedirectedConstructor(node)) {
- reportError(StaticWarningCode.REDIRECT_TO_NON_CLASS, typeName, [typeName.name]);
+ reportError5(StaticWarningCode.REDIRECT_TO_NON_CLASS, typeName, [typeName.name]);
} else if (isTypeNameInTypeArgumentList(node)) {
- reportError(StaticTypeWarningCode.NON_TYPE_AS_TYPE_ARGUMENT, typeName, [typeName.name]);
+ reportError5(StaticTypeWarningCode.NON_TYPE_AS_TYPE_ARGUMENT, typeName, [typeName.name]);
} else {
- reportError(StaticWarningCode.UNDEFINED_CLASS, typeName, [typeName.name]);
+ reportError5(StaticWarningCode.UNDEFINED_CLASS, typeName, [typeName.name]);
}
elementValid = false;
}
@@ -9590,15 +9752,15 @@ class TypeResolverVisitor extends ScopedVisitor {
}
} else {
if (isTypeNameInCatchClause(node)) {
- reportError(StaticWarningCode.NON_TYPE_IN_CATCH_CLAUSE, typeName, [typeName.name]);
+ reportError5(StaticWarningCode.NON_TYPE_IN_CATCH_CLAUSE, typeName, [typeName.name]);
} else if (isTypeNameInAsExpression(node)) {
- reportError(StaticWarningCode.CAST_TO_NON_TYPE, typeName, [typeName.name]);
+ reportError5(StaticWarningCode.CAST_TO_NON_TYPE, typeName, [typeName.name]);
} else if (isTypeNameInIsExpression(node)) {
- reportError(StaticWarningCode.TYPE_TEST_NON_TYPE, typeName, [typeName.name]);
+ reportError5(StaticWarningCode.TYPE_TEST_NON_TYPE, typeName, [typeName.name]);
} else if (isTypeNameTargetInRedirectedConstructor(node)) {
- reportError(StaticWarningCode.REDIRECT_TO_NON_CLASS, typeName, [typeName.name]);
+ reportError5(StaticWarningCode.REDIRECT_TO_NON_CLASS, typeName, [typeName.name]);
} else if (isTypeNameInTypeArgumentList(node)) {
- reportError(StaticTypeWarningCode.NON_TYPE_AS_TYPE_ARGUMENT, typeName, [typeName.name]);
+ reportError5(StaticTypeWarningCode.NON_TYPE_AS_TYPE_ARGUMENT, typeName, [typeName.name]);
} else {
ASTNode parent = typeName.parent;
while (parent is TypeName) {
@@ -9606,7 +9768,7 @@ class TypeResolverVisitor extends ScopedVisitor {
}
if (parent is ExtendsClause || parent is ImplementsClause || parent is WithClause || parent is ClassTypeAlias) {
} else {
- reportError(StaticWarningCode.NOT_A_TYPE, typeName, [typeName.name]);
+ reportError5(StaticWarningCode.NOT_A_TYPE, typeName, [typeName.name]);
}
}
setElement(typeName, _dynamicType.element);
@@ -9628,7 +9790,7 @@ class TypeResolverVisitor extends ScopedVisitor {
}
}
if (argumentCount != parameterCount) {
- reportError(getInvalidTypeParametersErrorCode(node), node, [typeName.name, parameterCount, argumentCount]);
+ reportError5(getInvalidTypeParametersErrorCode(node), node, [typeName.name, parameterCount, argumentCount]);
}
argumentCount = typeArguments.length;
if (argumentCount < parameterCount) {
@@ -9979,7 +10141,7 @@ class TypeResolverVisitor extends ScopedVisitor {
Element element2 = identifier2.staticElement;
if (element != null && element == element2) {
detectedRepeatOnIndex[j] = true;
- reportError(CompileTimeErrorCode.IMPLEMENTS_REPEATED, typeName2, [name2]);
+ reportError5(CompileTimeErrorCode.IMPLEMENTS_REPEATED, typeName2, [name2]);
}
}
}
@@ -10003,9 +10165,9 @@ class TypeResolverVisitor extends ScopedVisitor {
}
Identifier name = typeName.name;
if (name.name == sc.Keyword.DYNAMIC.syntax) {
- reportError(dynamicTypeError, name, [name.name]);
+ reportError5(dynamicTypeError, name, [name.name]);
} else {
- reportError(nonTypeError, name, [name.name]);
+ reportError5(nonTypeError, name, [name.name]);
}
return null;
}
@@ -12226,15 +12388,15 @@ class ErrorVerifier extends RecursiveASTVisitor<Object> {
ParameterElement parameter = parameters2[i];
if (parameter.parameterKind.isOptional) {
formalParameters.add(parameterLocations[i]);
- parameterElts.add((parameter as ParameterElementImpl));
+ parameterElts.add(parameter as ParameterElementImpl);
}
}
for (ParameterElement parameterElt in overriddenPEs) {
if (parameterElt.parameterKind.isOptional) {
if (parameterElt is ParameterElementImpl) {
- overriddenParameterElts.add((parameterElt as ParameterElementImpl));
+ overriddenParameterElts.add(parameterElt as ParameterElementImpl);
} else if (parameterElt is ParameterMember) {
- overriddenParameterElts.add((((parameterElt as ParameterMember)).baseElement as ParameterElementImpl));
+ overriddenParameterElts.add(((parameterElt as ParameterMember)).baseElement as ParameterElementImpl);
}
}
}
@@ -12760,7 +12922,7 @@ class ErrorVerifier extends RecursiveASTVisitor<Object> {
for (int i = 0; i < lastMember; i++) {
SwitchMember member = members[i];
if (member is SwitchCase) {
- foundError = javaBooleanOr(foundError, checkForCaseBlockNotTerminated((member as SwitchCase)));
+ foundError = javaBooleanOr(foundError, checkForCaseBlockNotTerminated(member as SwitchCase));
}
}
return foundError;
@@ -15378,7 +15540,7 @@ class ErrorVerifier extends RecursiveASTVisitor<Object> {
* signature, not initialized, initialized in the field declaration, initialized in the field
* formal, and finally, initialized in the initializers list.
*/
-class INIT_STATE implements Enum<INIT_STATE> {
+class INIT_STATE extends Enum<INIT_STATE> {
static final INIT_STATE NOT_INIT = new INIT_STATE('NOT_INIT', 0);
static final INIT_STATE INIT_IN_DECLARATION = new INIT_STATE('INIT_IN_DECLARATION', 1);
static final INIT_STATE INIT_IN_FIELD_FORMAL = new INIT_STATE('INIT_IN_FIELD_FORMAL', 2);
@@ -15388,16 +15550,7 @@ class INIT_STATE implements Enum<INIT_STATE> {
INIT_IN_DECLARATION,
INIT_IN_FIELD_FORMAL,
INIT_IN_INITIALIZERS];
-
- /// The name of this enum constant, as declared in the enum declaration.
- final String name;
-
- /// The position in the enum declaration.
- final int ordinal;
- INIT_STATE(this.name, this.ordinal);
- int compareTo(INIT_STATE other) => ordinal - other.ordinal;
- int get hashCode => ordinal;
- String toString() => name;
+ INIT_STATE(String name, int ordinal) : super(name, ordinal);
}
class GeneralizingElementVisitor_11 extends GeneralizingElementVisitor<Object> {
Element target;
@@ -15461,45 +15614,56 @@ class GeneralizingElementVisitor_11 extends GeneralizingElementVisitor<Object> {
*
* @coverage dart.engine.resolver
*/
-class ResolverErrorCode implements Enum<ResolverErrorCode>, ErrorCode {
- static final ResolverErrorCode BREAK_LABEL_ON_SWITCH_MEMBER = new ResolverErrorCode('BREAK_LABEL_ON_SWITCH_MEMBER', 0, ErrorType.COMPILE_TIME_ERROR, "Break label resolves to case or default statement");
- static final ResolverErrorCode CONTINUE_LABEL_ON_SWITCH = new ResolverErrorCode('CONTINUE_LABEL_ON_SWITCH', 1, ErrorType.COMPILE_TIME_ERROR, "A continue label resolves to switch, must be loop or switch member");
- static final ResolverErrorCode MISSING_LIBRARY_DIRECTIVE_WITH_PART = new ResolverErrorCode('MISSING_LIBRARY_DIRECTIVE_WITH_PART', 2, ErrorType.COMPILE_TIME_ERROR, "Libraries that have parts must have a library directive");
+class ResolverErrorCode extends Enum<ResolverErrorCode> implements ErrorCode {
+ static final ResolverErrorCode BREAK_LABEL_ON_SWITCH_MEMBER = new ResolverErrorCode.con1('BREAK_LABEL_ON_SWITCH_MEMBER', 0, ErrorType.COMPILE_TIME_ERROR, "Break label resolves to case or default statement");
+ static final ResolverErrorCode CONTINUE_LABEL_ON_SWITCH = new ResolverErrorCode.con1('CONTINUE_LABEL_ON_SWITCH', 1, ErrorType.COMPILE_TIME_ERROR, "A continue label resolves to switch, must be loop or switch member");
+ static final ResolverErrorCode MISSING_LIBRARY_DIRECTIVE_WITH_PART = new ResolverErrorCode.con1('MISSING_LIBRARY_DIRECTIVE_WITH_PART', 2, ErrorType.COMPILE_TIME_ERROR, "Libraries that have parts must have a library directive");
static final List<ResolverErrorCode> values = [
BREAK_LABEL_ON_SWITCH_MEMBER,
CONTINUE_LABEL_ON_SWITCH,
MISSING_LIBRARY_DIRECTIVE_WITH_PART];
- /// The name of this enum constant, as declared in the enum declaration.
- final String name;
-
- /// The position in the enum declaration.
- final int ordinal;
-
/**
* The type of this error.
*/
ErrorType _type;
/**
- * The message template used to create the message to be displayed for this error.
+ * The template used to create the message to be displayed for this error.
*/
String _message;
/**
+ * The template used to create the correction to be displayed for this error, or `null` if
+ * there is no correction information for this error.
+ */
+ String correction9;
+
+ /**
* Initialize a newly created error code to have the given type and message.
*
* @param type the type of this error
* @param message the message template used to create the message to be displayed for the error
*/
- ResolverErrorCode(this.name, this.ordinal, ErrorType type, String message) {
+ ResolverErrorCode.con1(String name, int ordinal, ErrorType type, String message) : super(name, ordinal) {
+ this._type = type;
+ this._message = message;
+ }
+
+ /**
+ * Initialize a newly created error code to have the given type, message and correction.
+ *
+ * @param type the type of this error
+ * @param message the template used to create the message to be displayed for the error
+ * @param correction the template used to create the correction to be displayed for the error
+ */
+ ResolverErrorCode.con2(String name, int ordinal, ErrorType type, String message, String correction) : super(name, ordinal) {
this._type = type;
this._message = message;
+ this.correction9 = correction;
}
+ String get correction => correction9;
ErrorSeverity get errorSeverity => _type.severity;
String get message => _message;
ErrorType get type => _type;
- int compareTo(ResolverErrorCode other) => ordinal - other.ordinal;
- int get hashCode => ordinal;
- String toString() => name;
}
« no previous file with comments | « pkg/analyzer_experimental/lib/src/generated/parser.dart ('k') | pkg/analyzer_experimental/lib/src/generated/scanner.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698