library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/extension_types/call_not_get.dart:9:5: Error: The method 'ceil' isn't defined for the extension 'E'.
// Try correcting the name to the name of an existing method, or defining a method name 'ceil'.
//   e.ceil(); // Error.
//     ^^^^
//
// pkg/front_end/testcases/extension_types/call_not_get.dart:10:5: Error: The setter 'ceil' isn't defined for the extension 'E'.
// Try correcting the name to the name of an existing setter, or defining a setter or field named 'ceil'.
//   e.ceil = 42; // Error.
//     ^^^^
//
// pkg/front_end/testcases/extension_types/call_not_get.dart:12:5: Error: The getter 'floor' isn't defined for the extension 'E'.
// Try correcting the name to the name of an existing getter, or defining a getter or field named 'floor'.
//   e.floor; // Error.
//     ^^^^^
//
// pkg/front_end/testcases/extension_types/call_not_get.dart:14:5: Error: The setter 'ceil' isn't defined for the extension 'E'.
// Try correcting the name to the name of an existing setter, or defining a setter or field named 'ceil'.
//   e.ceil = 42; // Error.
//     ^^^^
//
import self as self;
import "dart:core" as core;

extension type E on core::int show-methods core::int::floor show-getters core::int::floor, core::int::ceil hide-getters core::int::floor {
}
static method test(self::E e) → dynamic {
  e.{core::int::ceil}{() → core::int};
  invalid-expression "pkg/front_end/testcases/extension_types/call_not_get.dart:9:5: Error: The method 'ceil' isn't defined for the extension 'E'.
Try correcting the name to the name of an existing method, or defining a method name 'ceil'.
  e.ceil(); // Error.
    ^^^^" in e{<unresolved>}.ceil();
  invalid-expression "pkg/front_end/testcases/extension_types/call_not_get.dart:10:5: Error: The setter 'ceil' isn't defined for the extension 'E'.
Try correcting the name to the name of an existing setter, or defining a setter or field named 'ceil'.
  e.ceil = 42; // Error.
    ^^^^" in e{<unresolved>}.ceil = 42;
  invalid-expression "pkg/front_end/testcases/extension_types/call_not_get.dart:12:5: Error: The getter 'floor' isn't defined for the extension 'E'.
Try correcting the name to the name of an existing getter, or defining a getter or field named 'floor'.
  e.floor; // Error.
    ^^^^^" in e{<unresolved>}.floor;
  e.{core::int::floor}(){() → core::int};
  invalid-expression "pkg/front_end/testcases/extension_types/call_not_get.dart:14:5: Error: The setter 'ceil' isn't defined for the extension 'E'.
Try correcting the name to the name of an existing setter, or defining a setter or field named 'ceil'.
  e.ceil = 42; // Error.
    ^^^^" in e{<unresolved>}.ceil = 42;
}
static method main() → dynamic {}
