library;
//
// Problems in library:
//
// pkg/front_end/testcases/extension_methods.dart:13:1: Error: This requires the 'extension-methods' experiment to be enabled.
// Try enabling this experiment by adding it to the command line when compiling and running.
// extension E on C {
// ^^^^^^^^^
//
// pkg/front_end/testcases/extension_methods.dart:13:16: Error: A function declaration needs an explicit list of parameters.
// Try adding a parameter list to the function declaration.
// extension E on C {
//                ^
//
// pkg/front_end/testcases/extension_methods.dart:13:16: Error: 'C' is already declared in this scope.
// extension E on C {
//                ^
// pkg/front_end/testcases/extension_methods.dart:9:7: Context: Previous declaration of 'C'.
// class C {
//       ^
//
// pkg/front_end/testcases/extension_methods.dart:13:1: Warning: Type 'extension' not found.
// extension E on C {
// ^^^^^^^^^
//
// pkg/front_end/testcases/extension_methods.dart:13:13: Warning: Type 'on' not found.
// extension E on C {
//             ^^
//
// pkg/front_end/testcases/extension_methods.dart:13:1: Warning: 'extension' isn't a type.
// extension E on C {
// ^^^^^^^^^
//
// pkg/front_end/testcases/extension_methods.dart:14:7: Error: Expected ';' after this.
//   int get two => 2;
//       ^^^
//
// pkg/front_end/testcases/extension_methods.dart:14:15: Error: A function declaration needs an explicit list of parameters.
// Try adding a parameter list to the function declaration.
//   int get two => 2;
//               ^^
//
// pkg/front_end/testcases/extension_methods.dart:18:3: Error: Can't use 'C' because it is declared more than once.
//   C c = C();
//   ^
//
// pkg/front_end/testcases/extension_methods.dart:18:9: Error: Can't use 'C' because it is declared more than once.
//   C c = C();
//         ^
//
import self as self;
import "dart:core" as core;
import "package:expect/expect.dart" as exp;

import "package:expect/expect.dart";

class C extends core::Object {
  synthetic constructor •() → self::C
    : super core::Object::•()
    ;
  get one() → core::int
    return 1;
}
static field invalid-type E;
static method main() → dynamic {
  invalid-type c = invalid-expression "pkg/front_end/testcases/extension_methods.dart:18:9: Error: Can't use 'C' because it is declared more than once.
  C c = C();
        ^".call();
  dynamic result = c.one.+(c.two);
  exp::Expect::equals(result, 3);
}
