@@ -931,8 +931,13 @@ class ErrorVerifier extends RecursiveAstVisitor<void> {
931931 _checkForWrongNumberOfParametersForSetter (node.name, node.parameters);
932932 _checkForNonVoidReturnTypeForSetter (returnType);
933933 } else if (node.isOperator) {
934- _checkForOptionalParameterInOperator (node);
935- _checkForWrongNumberOfParametersForOperator (node);
934+ var hasWrongNumberOfParameters =
935+ _checkForWrongNumberOfParametersForOperator (node);
936+ if (! hasWrongNumberOfParameters) {
937+ // If the operator has too many parameters including one or more
938+ // optional parameters, only report one error.
939+ _checkForOptionalParameterInOperator (node);
940+ }
936941 _checkForNonVoidReturnTypeForOperator (node);
937942 }
938943 _checkForExtensionDeclaresMemberOfObject (node);
@@ -4593,12 +4598,12 @@ class ErrorVerifier extends RecursiveAstVisitor<void> {
45934598 /// operator declaration before being called.
45944599 ///
45954600 /// See [CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR] .
4596- void _checkForWrongNumberOfParametersForOperator (
4601+ bool _checkForWrongNumberOfParametersForOperator (
45974602 MethodDeclaration declaration) {
45984603 // prepare number of parameters
45994604 var parameterList = declaration.parameters;
46004605 if (parameterList == null ) {
4601- return ;
4606+ return false ;
46024607 }
46034608 int numParameters = parameterList.parameters.length;
46044609 // prepare operator name
@@ -4634,12 +4639,15 @@ class ErrorVerifier extends RecursiveAstVisitor<void> {
46344639 CompileTimeErrorCode .WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR ,
46354640 nameNode,
46364641 [name, expected, numParameters]);
4642+ return true ;
46374643 } else if ("-" == name && numParameters > 1 ) {
46384644 _errorReporter.reportErrorForNode (
46394645 CompileTimeErrorCode .WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR_MINUS ,
46404646 nameNode,
46414647 [numParameters]);
4648+ return true ;
46424649 }
4650+ return false ;
46434651 }
46444652
46454653 /// Verify that the given setter [parameterList] has only one required
0 commit comments