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

Unified Diff: pkg/analyzer/lib/src/generated/element_resolver.dart

Issue 757023004: Fix issue 21426 (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 1 month 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
« no previous file with comments | « no previous file | pkg/analyzer/lib/src/generated/error.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 7e32f4ae890b33568c61972c535c95b239b2346e..29c10cb737a58e9eda07811016ee859e8c56be76 100644
--- a/pkg/analyzer/lib/src/generated/element_resolver.dart
+++ b/pkg/analyzer/lib/src/generated/element_resolver.dart
@@ -784,14 +784,22 @@ class ElementResolver extends SimpleAstVisitor<Object> {
_lookUpMethod(operand, propagatedType, methodName);
node.propagatedElement = propagatedMethod;
if (_shouldReportMissingMember(staticType, staticMethod)) {
- _recordUndefinedToken(
- staticType.element,
- StaticTypeWarningCode.UNDEFINED_OPERATOR,
- node.operator,
- [methodName, staticType.displayName]);
+ if (operand is SuperExpression) {
+ _recordUndefinedToken(
+ staticType.element,
+ StaticTypeWarningCode.UNDEFINED_SUPER_OPERATOR,
+ node.operator,
+ [methodName, staticType.displayName]);
+ } else {
+ _recordUndefinedToken(
+ staticType.element,
+ StaticTypeWarningCode.UNDEFINED_OPERATOR,
+ node.operator,
+ [methodName, staticType.displayName]);
+ }
} else if (_enableHints &&
- _shouldReportMissingMember(propagatedType, propagatedMethod) &&
- !_memberFoundInSubclass(propagatedType.element, methodName, true, false)) {
+ _shouldReportMissingMember(propagatedType, propagatedMethod) &&
+ !_memberFoundInSubclass(propagatedType.element, methodName, true, false)) {
_recordUndefinedToken(
propagatedType.element,
HintCode.UNDEFINED_OPERATOR,
@@ -897,11 +905,19 @@ class ElementResolver extends SimpleAstVisitor<Object> {
_lookUpMethod(operand, propagatedType, methodName);
node.propagatedElement = propagatedMethod;
if (_shouldReportMissingMember(staticType, staticMethod)) {
- _recordUndefinedToken(
- staticType.element,
- StaticTypeWarningCode.UNDEFINED_OPERATOR,
- operator,
- [methodName, staticType.displayName]);
+ if (operand is SuperExpression) {
+ _recordUndefinedToken(
+ staticType.element,
+ StaticTypeWarningCode.UNDEFINED_SUPER_OPERATOR,
+ operator,
+ [methodName, staticType.displayName]);
+ } else {
+ _recordUndefinedToken(
+ staticType.element,
+ StaticTypeWarningCode.UNDEFINED_OPERATOR,
+ operator,
+ [methodName, staticType.displayName]);
+ }
} else if (_enableHints &&
_shouldReportMissingMember(propagatedType, propagatedMethod) &&
!_memberFoundInSubclass(propagatedType.element, methodName, true, false)) {
@@ -1255,32 +1271,32 @@ class ElementResolver extends SimpleAstVisitor<Object> {
shouldReportMissingMember_propagated) {
sc.Token leftBracket = node.leftBracket;
sc.Token rightBracket = node.rightBracket;
- ErrorCode errorCode = (shouldReportMissingMember_static ?
- StaticTypeWarningCode.UNDEFINED_OPERATOR :
- HintCode.UNDEFINED_OPERATOR);
+ ErrorCode errorCode;
+ if (shouldReportMissingMember_static) {
+ if (target is SuperExpression) {
+ errorCode = StaticTypeWarningCode.UNDEFINED_SUPER_OPERATOR;
+ } else {
+ errorCode = StaticTypeWarningCode.UNDEFINED_OPERATOR;
+ }
+ } else {
+ errorCode = HintCode.UNDEFINED_OPERATOR;
+ }
+ DartType type = shouldReportMissingMember_static ? staticType : propagatedType;
if (leftBracket == null || rightBracket == null) {
_recordUndefinedNode(
- shouldReportMissingMember_static ? staticType.element : propagatedType.element,
+ type.element,
errorCode,
node,
- [
- methodName,
- shouldReportMissingMember_static ?
- staticType.displayName :
- propagatedType.displayName]);
+ [methodName, type.displayName]);
} else {
int offset = leftBracket.offset;
int length = rightBracket.offset - offset + 1;
_recordUndefinedOffset(
- shouldReportMissingMember_static ? staticType.element : propagatedType.element,
+ type.element,
errorCode,
offset,
length,
- [
- methodName,
- shouldReportMissingMember_static ?
- staticType.displayName :
- propagatedType.displayName]);
+ [methodName, type.displayName]);
}
return true;
}
@@ -2408,11 +2424,19 @@ class ElementResolver extends SimpleAstVisitor<Object> {
_lookUpMethod(leftOperand, propagatedType, methodName);
node.propagatedElement = propagatedMethod;
if (_shouldReportMissingMember(staticType, staticMethod)) {
- _recordUndefinedToken(
- staticType.element,
- StaticTypeWarningCode.UNDEFINED_OPERATOR,
- node.operator,
- [methodName, staticType.displayName]);
+ if (leftOperand is SuperExpression) {
+ _recordUndefinedToken(
+ staticType.element,
+ StaticTypeWarningCode.UNDEFINED_SUPER_OPERATOR,
+ node.operator,
+ [methodName, staticType.displayName]);
+ } else {
+ _recordUndefinedToken(
+ staticType.element,
+ StaticTypeWarningCode.UNDEFINED_OPERATOR,
+ node.operator,
+ [methodName, staticType.displayName]);
+ }
} else if (_enableHints &&
_shouldReportMissingMember(propagatedType, propagatedMethod) &&
!_memberFoundInSubclass(propagatedType.element, methodName, true, false)) {
@@ -2646,12 +2670,13 @@ class ElementResolver extends SimpleAstVisitor<Object> {
}
if (shouldReportMissingMember_static ||
shouldReportMissingMember_propagated) {
- Element staticOrPropagatedEnclosingElt =
- shouldReportMissingMember_static ? staticType.element : propagatedType.element;
+ DartType staticOrPropagatedType =
+ shouldReportMissingMember_static ? staticType : propagatedType;
+ Element staticOrPropagatedEnclosingElt = staticOrPropagatedType.element;
bool isStaticProperty = _isStatic(staticOrPropagatedEnclosingElt);
- String displayName = staticOrPropagatedEnclosingElt != null ?
- staticOrPropagatedEnclosingElt.displayName :
- propagatedType != null ? propagatedType.displayName : staticType.displayName;
+ DartType displayType = staticOrPropagatedType != null ?
+ staticOrPropagatedType :
+ propagatedType != null ? propagatedType : staticType;
// Special getter cases.
if (propertyName.inGetterContext()) {
if (!isStaticProperty &&
@@ -2677,27 +2702,53 @@ class ElementResolver extends SimpleAstVisitor<Object> {
Element declaringElement =
staticType.isVoid ? null : staticOrPropagatedEnclosingElt;
if (propertyName.inSetterContext()) {
- ErrorCode staticErrorCode = (isStaticProperty && !staticType.isVoid ?
- StaticWarningCode.UNDEFINED_SETTER :
- StaticTypeWarningCode.UNDEFINED_SETTER);
- ErrorCode errorCode =
- shouldReportMissingMember_static ? staticErrorCode : HintCode.UNDEFINED_SETTER;
+ ErrorCode errorCode;
+ if (shouldReportMissingMember_static) {
+ if (target is SuperExpression) {
+ if (isStaticProperty && !staticType.isVoid) {
+ errorCode = StaticWarningCode.UNDEFINED_SUPER_SETTER;
+ } else {
+ errorCode = StaticTypeWarningCode.UNDEFINED_SUPER_SETTER;
+ }
+ } else {
+ if (isStaticProperty && !staticType.isVoid) {
+ errorCode = StaticWarningCode.UNDEFINED_SETTER;
+ } else {
+ errorCode = StaticTypeWarningCode.UNDEFINED_SETTER;
+ }
+ }
+ } else {
+ errorCode = HintCode.UNDEFINED_SETTER;
+ }
_recordUndefinedNode(
declaringElement,
errorCode,
propertyName,
- [propertyName.name, displayName]);
+ [propertyName.name, displayType.displayName]);
} else if (propertyName.inGetterContext()) {
- ErrorCode staticErrorCode = (isStaticProperty && !staticType.isVoid ?
- StaticWarningCode.UNDEFINED_GETTER :
- StaticTypeWarningCode.UNDEFINED_GETTER);
- ErrorCode errorCode =
- shouldReportMissingMember_static ? staticErrorCode : HintCode.UNDEFINED_GETTER;
+ ErrorCode errorCode;
+ if (shouldReportMissingMember_static) {
+ if (target is SuperExpression) {
+ if (isStaticProperty && !staticType.isVoid) {
+ errorCode = StaticWarningCode.UNDEFINED_SUPER_GETTER;
+ } else {
+ errorCode = StaticTypeWarningCode.UNDEFINED_SUPER_GETTER;
+ }
+ } else {
+ if (isStaticProperty && !staticType.isVoid) {
+ errorCode = StaticWarningCode.UNDEFINED_GETTER;
+ } else {
+ errorCode = StaticTypeWarningCode.UNDEFINED_GETTER;
+ }
+ }
+ } else {
+ errorCode = HintCode.UNDEFINED_GETTER;
+ }
_recordUndefinedNode(
declaringElement,
errorCode,
propertyName,
- [propertyName.name, displayName]);
+ [propertyName.name, displayType.displayName]);
} else {
_recordUndefinedNode(
declaringElement,
« no previous file with comments | « no previous file | pkg/analyzer/lib/src/generated/error.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698