| Index: dart/sdk/lib/_internal/compiler/implementation/resolution/members.dart
|
| diff --git a/dart/sdk/lib/_internal/compiler/implementation/resolution/members.dart b/dart/sdk/lib/_internal/compiler/implementation/resolution/members.dart
|
| index 04aa685fade9e6543db7053012bafd03d4c899a6..dca98d4f965f7f245633f07ecf74089d8d649503 100644
|
| --- a/dart/sdk/lib/_internal/compiler/implementation/resolution/members.dart
|
| +++ b/dart/sdk/lib/_internal/compiler/implementation/resolution/members.dart
|
| @@ -778,6 +778,7 @@ class ResolverTask extends CompilerTask {
|
| } else if (isBinaryOperator(value)) {
|
| messageKind = MessageKind.BINARY_OPERATOR_BAD_ARITY;
|
| requiredParameterCount = 1;
|
| + if (identical(value, '==')) checkOverrideHashCode(member);
|
| } else if (isTernaryOperator(value)) {
|
| messageKind = MessageKind.TERNARY_OPERATOR_BAD_ARITY;
|
| requiredParameterCount = 2;
|
| @@ -788,6 +789,17 @@ class ResolverTask extends CompilerTask {
|
| checkArity(function, requiredParameterCount, messageKind, isMinus);
|
| }
|
|
|
| + void checkOverrideHashCode(FunctionElement operatorEquals) {
|
| + if (operatorEquals.isAbstract(compiler)) return;
|
| + ClassElement cls = operatorEquals.getEnclosingClass();
|
| + Element hashCodeImplementation =
|
| + cls.lookupLocalMember(const SourceString('hashCode'));
|
| + if (hashCodeImplementation != null) return;
|
| + compiler.reportLint(
|
| + operatorEquals, MessageKind.OVERRIDE_EQUALS_NOT_HASH_CODE,
|
| + {'class': cls.name.slowToString()});
|
| + }
|
| +
|
| void checkArity(FunctionElement function,
|
| int requiredParameterCount, MessageKind messageKind,
|
| bool isMinus) {
|
|
|