// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

class Operators1 {
  operator ==() => true;
  //       ^^
  // [analyzer] COMPILE_TIME_ERROR.INVALID_OVERRIDE
  // [cfe] Operator '==' should have exactly one parameter.
  //       ^^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] The method 'Operators1.==' has fewer positional arguments than those of overridden method 'Object.=='.
  operator <() => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '<' should have exactly one parameter.
  operator >() => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '>' should have exactly one parameter.
  operator <=() => true;
  //       ^^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '<=' should have exactly one parameter.
  operator >=() => true;
  //       ^^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '>=' should have exactly one parameter.
  operator +() => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '+' should have exactly one parameter.
  operator /() => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '/' should have exactly one parameter.
  operator ~/() => true;
  //       ^^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '~/' should have exactly one parameter.
  operator *() => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '*' should have exactly one parameter.
  operator %() => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '%' should have exactly one parameter.
  operator |() => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '|' should have exactly one parameter.
  operator ^() => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '^' should have exactly one parameter.
  operator &() => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '&' should have exactly one parameter.
  operator <<() => true;
  //       ^^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '<<' should have exactly one parameter.
  operator >>() => true;
  //       ^^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '>>' should have exactly one parameter.
  operator []=(a, b, c) => true;
  //       ^^^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '[]=' should have exactly two parameters.
  operator []() => true;
  //       ^^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '[]' should have exactly one parameter.
  operator ~(a) => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '~' shouldn't have any parameters.
}

class Operators2 {
  operator ==(a, b) => true;
  //       ^^
  // [analyzer] COMPILE_TIME_ERROR.INVALID_OVERRIDE
  // [cfe] Operator '==' should have exactly one parameter.
  //       ^^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] The method 'Operators2.==' has more required arguments than those of overridden method 'Object.=='.
  operator <(a, b) => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '<' should have exactly one parameter.
  operator >(a, b) => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '>' should have exactly one parameter.
  operator <=(a, b) => true;
  //       ^^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '<=' should have exactly one parameter.
  operator >=(a, b) => true;
  //       ^^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '>=' should have exactly one parameter.
  operator -(a, b) => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '-' should have zero or one parameter.
  operator +(a, b) => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '+' should have exactly one parameter.
  operator /(a, b) => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '/' should have exactly one parameter.
  operator ~/(a, b) => true;
  //       ^^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '~/' should have exactly one parameter.
  operator *(a, b) => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '*' should have exactly one parameter.
  operator %(a, b) => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '%' should have exactly one parameter.
  operator |(a, b) => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '|' should have exactly one parameter.
  operator ^(a, b) => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '^' should have exactly one parameter.
  operator &(a, b) => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '&' should have exactly one parameter.
  operator <<(a, b) => true;
  //       ^^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '<<' should have exactly one parameter.
  operator >>(a, b) => true;
  //       ^^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '>>' should have exactly one parameter.
  operator []=(a, b, c) => true;
  //       ^^^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '[]=' should have exactly two parameters.
  operator [](a, b) => true;
  //       ^^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '[]' should have exactly one parameter.
  operator ~(a, b) => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '~' shouldn't have any parameters.
}

class Operators3 {
  operator ==([a]) => true;
  //           ^
  // [analyzer] COMPILE_TIME_ERROR.OPTIONAL_PARAMETER_IN_OPERATOR
  // [cfe] An operator can't have optional parameters.
  operator <([a]) => true;
  //          ^
  // [analyzer] COMPILE_TIME_ERROR.OPTIONAL_PARAMETER_IN_OPERATOR
  // [cfe] An operator can't have optional parameters.
  operator >([a]) => true;
  //          ^
  // [analyzer] COMPILE_TIME_ERROR.OPTIONAL_PARAMETER_IN_OPERATOR
  // [cfe] An operator can't have optional parameters.
  operator <=([a]) => true;
  //           ^
  // [analyzer] COMPILE_TIME_ERROR.OPTIONAL_PARAMETER_IN_OPERATOR
  // [cfe] An operator can't have optional parameters.
  operator >=([a]) => true;
  //           ^
  // [analyzer] COMPILE_TIME_ERROR.OPTIONAL_PARAMETER_IN_OPERATOR
  // [cfe] An operator can't have optional parameters.
  operator -([a]) => true;
  //          ^
  // [analyzer] COMPILE_TIME_ERROR.OPTIONAL_PARAMETER_IN_OPERATOR
  // [cfe] An operator can't have optional parameters.
  operator +([a]) => true;
  //          ^
  // [analyzer] COMPILE_TIME_ERROR.OPTIONAL_PARAMETER_IN_OPERATOR
  // [cfe] An operator can't have optional parameters.
  operator /([a]) => true;
  //          ^
  // [analyzer] COMPILE_TIME_ERROR.OPTIONAL_PARAMETER_IN_OPERATOR
  // [cfe] An operator can't have optional parameters.
  operator ~/([a]) => true;
  //           ^
  // [analyzer] COMPILE_TIME_ERROR.OPTIONAL_PARAMETER_IN_OPERATOR
  // [cfe] An operator can't have optional parameters.
  operator *([a]) => true;
  //          ^
  // [analyzer] COMPILE_TIME_ERROR.OPTIONAL_PARAMETER_IN_OPERATOR
  // [cfe] An operator can't have optional parameters.
  operator %([a]) => true;
  //          ^
  // [analyzer] COMPILE_TIME_ERROR.OPTIONAL_PARAMETER_IN_OPERATOR
  // [cfe] An operator can't have optional parameters.
  operator |([a]) => true;
  //          ^
  // [analyzer] COMPILE_TIME_ERROR.OPTIONAL_PARAMETER_IN_OPERATOR
  // [cfe] An operator can't have optional parameters.
  operator ^([a]) => true;
  //          ^
  // [analyzer] COMPILE_TIME_ERROR.OPTIONAL_PARAMETER_IN_OPERATOR
  // [cfe] An operator can't have optional parameters.
  operator &([a]) => true;
  //          ^
  // [analyzer] COMPILE_TIME_ERROR.OPTIONAL_PARAMETER_IN_OPERATOR
  // [cfe] An operator can't have optional parameters.
  operator <<([a]) => true;
  //           ^
  // [analyzer] COMPILE_TIME_ERROR.OPTIONAL_PARAMETER_IN_OPERATOR
  // [cfe] An operator can't have optional parameters.
  operator >>([a]) => true;
  //           ^
  // [analyzer] COMPILE_TIME_ERROR.OPTIONAL_PARAMETER_IN_OPERATOR
  // [cfe] An operator can't have optional parameters.
  operator []=([a, b]) => true;
  //            ^
  // [analyzer] COMPILE_TIME_ERROR.OPTIONAL_PARAMETER_IN_OPERATOR
  // [cfe] An operator can't have optional parameters.
  //               ^
  // [analyzer] COMPILE_TIME_ERROR.OPTIONAL_PARAMETER_IN_OPERATOR
  // [cfe] An operator can't have optional parameters.
  operator []([a]) => true;
  //           ^
  // [analyzer] COMPILE_TIME_ERROR.OPTIONAL_PARAMETER_IN_OPERATOR
  // [cfe] An operator can't have optional parameters.
  operator ~([a]) => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '~' shouldn't have any parameters.
}

class Operators4 {
  operator ==({a}) => true;
  //       ^^
  // [analyzer] COMPILE_TIME_ERROR.INVALID_OVERRIDE
  // [cfe] The method 'Operators4.==' has fewer positional arguments than those of overridden method 'Object.=='.
  //           ^
  // [analyzer] COMPILE_TIME_ERROR.OPTIONAL_PARAMETER_IN_OPERATOR
  // [cfe] An operator can't have optional parameters.
  operator <({a}) => true;
  //          ^
  // [analyzer] COMPILE_TIME_ERROR.OPTIONAL_PARAMETER_IN_OPERATOR
  // [cfe] An operator can't have optional parameters.
  operator >({a}) => true;
  //          ^
  // [analyzer] COMPILE_TIME_ERROR.OPTIONAL_PARAMETER_IN_OPERATOR
  // [cfe] An operator can't have optional parameters.
  operator <=({a}) => true;
  //           ^
  // [analyzer] COMPILE_TIME_ERROR.OPTIONAL_PARAMETER_IN_OPERATOR
  // [cfe] An operator can't have optional parameters.
  operator >=({a}) => true;
  //           ^
  // [analyzer] COMPILE_TIME_ERROR.OPTIONAL_PARAMETER_IN_OPERATOR
  // [cfe] An operator can't have optional parameters.
  operator -({a}) => true;
  //          ^
  // [analyzer] COMPILE_TIME_ERROR.OPTIONAL_PARAMETER_IN_OPERATOR
  // [cfe] An operator can't have optional parameters.
  operator +({a}) => true;
  //          ^
  // [analyzer] COMPILE_TIME_ERROR.OPTIONAL_PARAMETER_IN_OPERATOR
  // [cfe] An operator can't have optional parameters.
  operator /({a}) => true;
  //          ^
  // [analyzer] COMPILE_TIME_ERROR.OPTIONAL_PARAMETER_IN_OPERATOR
  // [cfe] An operator can't have optional parameters.
  operator ~/({a}) => true;
  //           ^
  // [analyzer] COMPILE_TIME_ERROR.OPTIONAL_PARAMETER_IN_OPERATOR
  // [cfe] An operator can't have optional parameters.
  operator *({a}) => true;
  //          ^
  // [analyzer] COMPILE_TIME_ERROR.OPTIONAL_PARAMETER_IN_OPERATOR
  // [cfe] An operator can't have optional parameters.
  operator %({a}) => true;
  //          ^
  // [analyzer] COMPILE_TIME_ERROR.OPTIONAL_PARAMETER_IN_OPERATOR
  // [cfe] An operator can't have optional parameters.
  operator |({a}) => true;
  //          ^
  // [analyzer] COMPILE_TIME_ERROR.OPTIONAL_PARAMETER_IN_OPERATOR
  // [cfe] An operator can't have optional parameters.
  operator ^({a}) => true;
  //          ^
  // [analyzer] COMPILE_TIME_ERROR.OPTIONAL_PARAMETER_IN_OPERATOR
  // [cfe] An operator can't have optional parameters.
  operator &({a}) => true;
  //          ^
  // [analyzer] COMPILE_TIME_ERROR.OPTIONAL_PARAMETER_IN_OPERATOR
  // [cfe] An operator can't have optional parameters.
  operator <<({a}) => true;
  //           ^
  // [analyzer] COMPILE_TIME_ERROR.OPTIONAL_PARAMETER_IN_OPERATOR
  // [cfe] An operator can't have optional parameters.
  operator >>({a}) => true;
  //           ^
  // [analyzer] COMPILE_TIME_ERROR.OPTIONAL_PARAMETER_IN_OPERATOR
  // [cfe] An operator can't have optional parameters.
  operator []=({a, b}) => true;
  //            ^
  // [analyzer] COMPILE_TIME_ERROR.OPTIONAL_PARAMETER_IN_OPERATOR
  // [cfe] An operator can't have optional parameters.
  //               ^
  // [analyzer] COMPILE_TIME_ERROR.OPTIONAL_PARAMETER_IN_OPERATOR
  // [cfe] An operator can't have optional parameters.
  operator []({a}) => true;
  //           ^
  // [analyzer] COMPILE_TIME_ERROR.OPTIONAL_PARAMETER_IN_OPERATOR
  // [cfe] An operator can't have optional parameters.
  operator ~({a}) => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '~' shouldn't have any parameters.
}

class Operators5 {
  operator ==(a, [b]) => true;
  //       ^^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '==' should have exactly one parameter.
  operator <(a, [b]) => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '<' should have exactly one parameter.
  operator >(a, [b]) => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '>' should have exactly one parameter.
  operator <=(a, [b]) => true;
  //       ^^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '<=' should have exactly one parameter.
  operator >=(a, [b]) => true;
  //       ^^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '>=' should have exactly one parameter.
  operator -(a, [b]) => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '-' should have zero or one parameter.
  operator +(a, [b]) => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '+' should have exactly one parameter.
  operator /(a, [b]) => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '/' should have exactly one parameter.
  operator ~/(a, [b]) => true;
  //       ^^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '~/' should have exactly one parameter.
  operator *(a, [b]) => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '*' should have exactly one parameter.
  operator %(a, [b]) => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '%' should have exactly one parameter.
  operator |(a, [b]) => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '|' should have exactly one parameter.
  operator ^(a, [b]) => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '^' should have exactly one parameter.
  operator &(a, [b]) => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '&' should have exactly one parameter.
  operator <<(a, [b]) => true;
  //       ^^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '<<' should have exactly one parameter.
  operator >>(a, [b]) => true;
  //       ^^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '>>' should have exactly one parameter.
  operator []=(a, b, [c]) => true;
  //       ^^^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '[]=' should have exactly two parameters.
  operator [](a, [b]) => true;
  //       ^^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '[]' should have exactly one parameter.
  operator ~(a, [b]) => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '~' shouldn't have any parameters.
}

class Operators6 {
  operator ==(a, {b}) => true;
  //       ^^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '==' should have exactly one parameter.
  operator <(a, {b}) => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '<' should have exactly one parameter.
  operator >(a, {b}) => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '>' should have exactly one parameter.
  operator <=(a, {b}) => true;
  //       ^^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '<=' should have exactly one parameter.
  operator >=(a, {b}) => true;
  //       ^^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '>=' should have exactly one parameter.
  operator -(a, {b}) => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '-' should have zero or one parameter.
  operator +(a, {b}) => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '+' should have exactly one parameter.
  operator /(a, {b}) => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '/' should have exactly one parameter.
  operator ~/(a, {b}) => true;
  //       ^^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '~/' should have exactly one parameter.
  operator *(a, {b}) => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '*' should have exactly one parameter.
  operator %(a, {b}) => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '%' should have exactly one parameter.
  operator |(a, {b}) => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '|' should have exactly one parameter.
  operator ^(a, {b}) => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '^' should have exactly one parameter.
  operator &(a, {b}) => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '&' should have exactly one parameter.
  operator <<(a, {b}) => true;
  //       ^^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '<<' should have exactly one parameter.
  operator >>(a, {b}) => true;
  //       ^^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '>>' should have exactly one parameter.
  operator []=(a, b, {c}) => true;
  //       ^^^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '[]=' should have exactly two parameters.
  operator [](a, {b}) => true;
  //       ^^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '[]' should have exactly one parameter.
  operator ~(a, {b}) => true;
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR
  // [cfe] Operator '~' shouldn't have any parameters.
}

class Operators7 {
  operator ==<T>(a) => true;
  //       ^^
  // [analyzer] COMPILE_TIME_ERROR.INVALID_OVERRIDE
  // [cfe] Can't infer types for '==' as the overridden members don't have a combined signature.
  //       ^
  // [cfe] Declared type variables of 'Operators7.==' doesn't match those on overridden method 'Object.=='.
  //         ^^^
  // [analyzer] SYNTACTIC_ERROR.TYPE_PARAMETERS_ON_OPERATOR
  //          ^
  // [cfe] Types parameters aren't allowed when defining an operator.
  operator ><T>(a) => true;
  //        ^^^
  // [analyzer] SYNTACTIC_ERROR.TYPE_PARAMETERS_ON_OPERATOR
  //         ^
  // [cfe] Types parameters aren't allowed when defining an operator.
  operator <=<T>(a) => true;
  //         ^^^
  // [analyzer] SYNTACTIC_ERROR.TYPE_PARAMETERS_ON_OPERATOR
  //          ^
  // [cfe] Types parameters aren't allowed when defining an operator.
  operator >=<T>(a) => true;
  //         ^^^
  // [analyzer] SYNTACTIC_ERROR.TYPE_PARAMETERS_ON_OPERATOR
  //          ^
  // [cfe] Types parameters aren't allowed when defining an operator.
  operator -<T>() => true;
  //        ^^^
  // [analyzer] SYNTACTIC_ERROR.TYPE_PARAMETERS_ON_OPERATOR
  //         ^
  // [cfe] Types parameters aren't allowed when defining an operator.
  operator -<T>(a) => true;
  //        ^^^
  // [analyzer] SYNTACTIC_ERROR.TYPE_PARAMETERS_ON_OPERATOR
  //         ^
  // [cfe] Types parameters aren't allowed when defining an operator.
  operator +<T>(a) => true;
  //        ^^^
  // [analyzer] SYNTACTIC_ERROR.TYPE_PARAMETERS_ON_OPERATOR
  //         ^
  // [cfe] Types parameters aren't allowed when defining an operator.
  operator /<T>(a) => true;
  //        ^^^
  // [analyzer] SYNTACTIC_ERROR.TYPE_PARAMETERS_ON_OPERATOR
  //         ^
  // [cfe] Types parameters aren't allowed when defining an operator.
  operator ~/<T>(a) => true;
  //         ^^^
  // [analyzer] SYNTACTIC_ERROR.TYPE_PARAMETERS_ON_OPERATOR
  //          ^
  // [cfe] Types parameters aren't allowed when defining an operator.
  operator *<T>(a) => true;
  //        ^^^
  // [analyzer] SYNTACTIC_ERROR.TYPE_PARAMETERS_ON_OPERATOR
  //         ^
  // [cfe] Types parameters aren't allowed when defining an operator.
  operator %<T>(a) => true;
  //        ^^^
  // [analyzer] SYNTACTIC_ERROR.TYPE_PARAMETERS_ON_OPERATOR
  //         ^
  // [cfe] Types parameters aren't allowed when defining an operator.
  operator |<T>(a) => true;
  //        ^^^
  // [analyzer] SYNTACTIC_ERROR.TYPE_PARAMETERS_ON_OPERATOR
  //         ^
  // [cfe] Types parameters aren't allowed when defining an operator.
  operator ^<T>(a) => true;
  //        ^^^
  // [analyzer] SYNTACTIC_ERROR.TYPE_PARAMETERS_ON_OPERATOR
  //         ^
  // [cfe] Types parameters aren't allowed when defining an operator.
  operator &<T>(a) => true;
  //        ^^^
  // [analyzer] SYNTACTIC_ERROR.TYPE_PARAMETERS_ON_OPERATOR
  //         ^
  // [cfe] Types parameters aren't allowed when defining an operator.
  operator <<<T>(a) => true;
  //         ^^^
  // [analyzer] SYNTACTIC_ERROR.TYPE_PARAMETERS_ON_OPERATOR
  //          ^
  // [cfe] Types parameters aren't allowed when defining an operator.
  operator >><T>(a) => true;
  //         ^^^
  // [analyzer] SYNTACTIC_ERROR.TYPE_PARAMETERS_ON_OPERATOR
  //          ^
  // [cfe] Types parameters aren't allowed when defining an operator.
  operator []=<T>(a, b) => true;
  //          ^^^
  // [analyzer] SYNTACTIC_ERROR.TYPE_PARAMETERS_ON_OPERATOR
  //           ^
  // [cfe] Types parameters aren't allowed when defining an operator.
  operator []<T>(a) => true;
  //         ^^^
  // [analyzer] SYNTACTIC_ERROR.TYPE_PARAMETERS_ON_OPERATOR
  //          ^
  // [cfe] Types parameters aren't allowed when defining an operator.
  operator ~<T, S>() => true;
  //        ^^^^^^
  // [analyzer] SYNTACTIC_ERROR.TYPE_PARAMETERS_ON_OPERATOR
  //         ^
  // [cfe] Types parameters aren't allowed when defining an operator.
}

class Operators8 {
  /*space*/ int operator []=(a, b) {}
  //        ^^^
  // [analyzer] COMPILE_TIME_ERROR.NON_VOID_RETURN_FOR_OPERATOR
  // [cfe] The return type of the operator []= must be 'void'.
}

main() {}
