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 {
//             ^^
//
import self as self;
import "dart:core" as core;

import "package:expect/expect.dart";

class C extends core::Object {
  synthetic constructor •() → self::C
    ;
  get one() → core::int
    ;
}
static field invalid-type E;
static method main() → dynamic
  ;
