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

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

Issue 747153002: Resolve not-equals operator (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/test/generated/resolver_test.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 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);
« no previous file with comments | « no previous file | pkg/analyzer/test/generated/resolver_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698