Chromium Code Reviews| 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 da3293937a63d00634ba5aff4f7b691ef166bfd4..e53f6f09a8a1a3f58acde167a408162eaf918272 100644 |
| --- a/pkg/analyzer/lib/src/generated/element_resolver.dart |
| +++ b/pkg/analyzer/lib/src/generated/element_resolver.dart |
| @@ -167,37 +167,42 @@ class ElementResolver extends SimpleAstVisitor<Object> { |
| Object visitBinaryExpression(BinaryExpression node) { |
| sc.Token operator = node.operator; |
| if (operator.isUserDefinableOperator) { |
| - Expression leftOperand = node.leftOperand; |
| - if (leftOperand != null) { |
| - String methodName = operator.lexeme; |
| - DartType staticType = _getStaticType(leftOperand); |
| - MethodElement staticMethod = |
| - _lookUpMethod(leftOperand, staticType, methodName); |
| - node.staticElement = staticMethod; |
| - DartType propagatedType = _getPropagatedType(leftOperand); |
| - MethodElement propagatedMethod = |
| - _lookUpMethod(leftOperand, propagatedType, methodName); |
| - node.propagatedElement = propagatedMethod; |
| - if (_shouldReportMissingMember(staticType, staticMethod)) { |
| - _recordUndefinedToken( |
| - staticType.element, |
| - StaticTypeWarningCode.UNDEFINED_OPERATOR, |
| - operator, |
| - [methodName, staticType.displayName]); |
| - } else if (_enableHints && |
| - _shouldReportMissingMember(propagatedType, propagatedMethod) && |
| - !_memberFoundInSubclass(propagatedType.element, methodName, true, false)) { |
| - _recordUndefinedToken( |
| - propagatedType.element, |
| - HintCode.UNDEFINED_OPERATOR, |
| - operator, |
| - [methodName, propagatedType.displayName]); |
| - } |
| - } |
| + _resolveBinaryExpression(node, operator.lexeme); |
| + } else if (operator.type == sc.TokenType.BANG_EQ) { |
| + _resolveBinaryExpression(node, sc.TokenType.EQ_EQ.lexeme); |
| } |
| return null; |
| } |
| + void _resolveBinaryExpression(BinaryExpression node, String methodName) { |
|
scheglov
2014/11/21 21:18:54
Sort members?
|
| + Expression leftOperand = node.leftOperand; |
| + if (leftOperand != null) { |
| + DartType staticType = _getStaticType(leftOperand); |
| + MethodElement staticMethod = |
| + _lookUpMethod(leftOperand, staticType, methodName); |
| + node.staticElement = staticMethod; |
| + DartType propagatedType = _getPropagatedType(leftOperand); |
| + MethodElement propagatedMethod = |
| + _lookUpMethod(leftOperand, propagatedType, methodName); |
| + node.propagatedElement = propagatedMethod; |
| + if (_shouldReportMissingMember(staticType, staticMethod)) { |
| + _recordUndefinedToken( |
| + staticType.element, |
| + StaticTypeWarningCode.UNDEFINED_OPERATOR, |
| + node.operator, |
| + [methodName, staticType.displayName]); |
| + } else if (_enableHints && |
| + _shouldReportMissingMember(propagatedType, propagatedMethod) && |
| + !_memberFoundInSubclass(propagatedType.element, methodName, true, false)) { |
| + _recordUndefinedToken( |
| + propagatedType.element, |
| + HintCode.UNDEFINED_OPERATOR, |
| + node.operator, |
| + [methodName, propagatedType.displayName]); |
| + } |
| + } |
| + } |
| + |
| @override |
| Object visitBreakStatement(BreakStatement node) { |
| _lookupLabel(node, node.label); |