library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:14:17: Error: Constructors on abstract classes can't be torn off.
//   AbstractClass.new; // error
//                 ^^^
//
// pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:15:9: Error: Getter not found: 'new'.
//   Mixin.new; // error
//         ^^^
//
// pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:17:33: Error: Constructors on abstract classes can't be torn off.
//   AbstractNamedMixinApplication.new; // error
//                                 ^^^
//
// pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:18:13: Error: Getter not found: 'new'.
//   Extension.new; // error
//             ^^^
//
import self as self;
import "dart:core" as core;

class ConcreteClass extends core::Object {
  synthetic constructor •() → self::ConcreteClass
    : super core::Object::•()
    ;
}
abstract class AbstractClass extends core::Object {
  synthetic constructor •() → self::AbstractClass
    : super core::Object::•()
    ;
}
abstract class Mixin extends core::Object /*isMixinDeclaration*/  {
}
class NamedMixinApplication extends core::Object implements self::Mixin /*isEliminatedMixin,hasConstConstructor*/  {
  const synthetic constructor •() → self::NamedMixinApplication
    : super core::Object::•()
    ;
}
abstract class AbstractNamedMixinApplication extends core::Object implements self::Mixin /*isEliminatedMixin,hasConstConstructor*/  {
  const synthetic constructor •() → self::AbstractNamedMixinApplication
    : super core::Object::•()
    ;
}
extension Extension on core::int {
}
static method test() → dynamic {
  self::ConcreteClass::•;
  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:14:17: Error: Constructors on abstract classes can't be torn off.
  AbstractClass.new; // error
                ^^^";
  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:15:9: Error: Getter not found: 'new'.
  Mixin.new; // error
        ^^^";
  self::NamedMixinApplication::•;
  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:17:33: Error: Constructors on abstract classes can't be torn off.
  AbstractNamedMixinApplication.new; // error
                                ^^^";
  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/abstract_class_constructor_tear_off.dart:18:13: Error: Getter not found: 'new'.
  Extension.new; // error
            ^^^";
}
static method main() → dynamic {}
