library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/extension_types/basic_show.dart:9:26: Error: Expected an identifier, but got '{'.
// Try inserting an identifier before '{'.
// extension E3 on int show {} // Error.
//                          ^
//
// pkg/front_end/testcases/extension_types/basic_show.dart:13:31: Error: Expected an identifier, but got '{'.
// Try inserting an identifier before '{'.
// extension E5 on int show num, {} // Error.
//                               ^
//
// pkg/front_end/testcases/extension_types/basic_show.dart:15:26: Error: Expected an identifier, but got ','.
// Try inserting an identifier before ','.
// extension E6 on int show , num {} // Error.
//                          ^
//
// pkg/front_end/testcases/extension_types/basic_show.dart:15:28: Error: A extension declaration must have a body, even if it is empty.
// Try adding an empty body.
// extension E6 on int show , num {} // Error.
//                            ^^^
//
// pkg/front_end/testcases/extension_types/basic_show.dart:15:28: Error: A function declaration needs an explicit list of parameters.
// Try adding a parameter list to the function declaration.
// extension E6 on int show , num {} // Error.
//                            ^^^
//
import self as self;
import "dart:core" as core;

extension E1 on core::int show-types core::num {
}
extension E2 on core::int {
}
extension E3 on core::int {
}
extension E4 on core::int show-types core::num {
}
extension E5 on core::int show-types core::num {
}
extension E6 on core::int {
}
static method num() → dynamic {}
static method main() → dynamic {}
