library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/general/invalid_operator2.dart:6:12: Error: A method declaration needs an explicit list of parameters.
// Try adding a parameter list to the method declaration.
//   operator <<T>(a) => true;
//            ^^
//
// pkg/front_end/testcases/general/invalid_operator2.dart:6:14: Error: Expected '{' before this.
//   operator <<T>(a) => true;
//              ^
//
// pkg/front_end/testcases/general/invalid_operator2.dart:6:12: Error: Operator '<<' should have exactly one parameter.
//   operator <<T>(a) => true;
//            ^^
//
// pkg/front_end/testcases/general/invalid_operator2.dart:6:15: Error: Operator declarations must be preceded by the keyword 'operator'.
// Try adding the keyword 'operator'.
//   operator <<T>(a) => true;
//               ^
//
// pkg/front_end/testcases/general/invalid_operator2.dart:6:14: Error: Type 'T' not found.
//   operator <<T>(a) => true;
//              ^
//
import self as self;
import "dart:core" as core;

class Operators7 extends core::Object {
  synthetic constructor •() → self::Operators7
    : super core::Object::•()
    ;
  operator <<() → dynamic {}
  operator >(dynamic a) → invalid-type
    return true;
}
static method main() → dynamic {}
