library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart:99:8: Error: Too few positional arguments: 1 required, 0 given.
//     f3a(); // error
//        ^
//
// pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart:100:8: Error: Too many positional arguments: 1 allowed, but 2 found.
// Try removing the extra positional arguments.
//     f3a(42, 87); // error
//        ^
//
// pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart:115:8: Error: Too many positional arguments: 1 allowed, but 2 found.
// Try removing the extra positional arguments.
//     f4a(42, 87); // error
//        ^
//
// pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart:129:8: Error: Too few positional arguments: 1 required, 0 given.
//     f5a(); // error
//        ^
//
// pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart:130:8: Error: Too many positional arguments: 2 allowed, but 3 found.
// Try removing the extra positional arguments.
//     f5a(42, 87, 123); // error
//        ^
//
// pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart:142:8: Error: Too few positional arguments: 1 required, 0 given.
//     f6a(); // error
//        ^
//
// pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart:143:8: Error: Required named parameter 'field3' must be provided.
//     f6a(42); // error
//        ^
//
// pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart:144:8: Error: Too many positional arguments: 1 allowed, but 2 found.
// Try removing the extra positional arguments.
//     f6a(42, 87); // error
//        ^
//
// pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart:145:8: Error: Too few positional arguments: 1 required, 0 given.
//     f6a(field1: 87, field2: 87); // error
//        ^
//
import self as self;
import "dart:core" as core;

class Class1 extends core::Object {
  static final field dynamic _redirecting# = <dynamic>[self::Class1::•]/*isLegacy*/;
  constructor _() → self::Class1
    : super core::Object::•()
    ;
  static method _#_#tearOff() → self::Class1
    return new self::Class1::_();
  static factory •() → self::Class1
    let dynamic #redirecting_factory = self::Class1::_ in invalid-expression;
  static method _#new#tearOff() → self::Class1
    return new self::Class1::_();
}
class Class2 extends core::Object {
  static final field dynamic _redirecting# = <dynamic>[self::Class2::named]/*isLegacy*/;
  constructor __() → self::Class2
    : super core::Object::•()
    ;
  static method _#__#tearOff() → self::Class2
    return new self::Class2::__();
  static factory _() → self::Class2
    return new self::Class2::__();
  static method _#_#tearOff() → self::Class2
    return self::Class2::_();
  static factory named() → self::Class2
    let dynamic #redirecting_factory = self::Class2::_ in invalid-expression;
  static method _#named#tearOff() → self::Class2
    return self::Class2::_();
}
class Class3 extends core::Object {
  final field core::int field;
  static final field dynamic _redirecting# = <dynamic>[self::Class3::•]/*isLegacy*/;
  constructor _(core::int field) → self::Class3
    : self::Class3::field = field, super core::Object::•()
    ;
  static method _#_#tearOff(core::int field) → self::Class3
    return new self::Class3::_(field);
  static factory •(core::int field) → self::Class3
    let dynamic #redirecting_factory = self::Class3::_ in invalid-expression;
  static method _#new#tearOff(core::int field) → self::Class3
    return new self::Class3::_(field);
}
class Class4 extends core::Object {
  final field core::int? field;
  static final field dynamic _redirecting# = <dynamic>[self::Class4::•]/*isLegacy*/;
  constructor _([core::int? field = #C1]) → self::Class4
    : self::Class4::field = field, super core::Object::•()
    ;
  static method _#_#tearOff([core::int? field = #C1]) → self::Class4
    return new self::Class4::_(field);
  static factory •([core::int? field = #C1]) → self::Class4
    let dynamic #redirecting_factory = self::Class4::_ in invalid-expression;
  static method _#new#tearOff([core::int? field = #C1]) → self::Class4
    return new self::Class4::_(field);
}
class Class5 extends core::Object {
  final field core::int field1;
  final field core::int? field2;
  static final field dynamic _redirecting# = <dynamic>[self::Class5::•]/*isLegacy*/;
  constructor _(core::int field1, [core::int? field2 = #C1]) → self::Class5
    : self::Class5::field1 = field1, self::Class5::field2 = field2, super core::Object::•()
    ;
  static method _#_#tearOff(core::int field1, [core::int? field2 = #C1]) → self::Class5
    return new self::Class5::_(field1, field2);
  static factory •(core::int field1, [core::int? field2 = #C1]) → self::Class5
    let dynamic #redirecting_factory = self::Class5::_ in invalid-expression;
  static method _#new#tearOff(core::int field1, [core::int? field2 = #C1]) → self::Class5
    return new self::Class5::_(field1, field2);
}
class Class6 extends core::Object {
  final field core::int field1;
  final field core::int? field2;
  final field core::int field3;
  static final field dynamic _redirecting# = <dynamic>[self::Class6::•]/*isLegacy*/;
  constructor _(core::int field1, {core::int? field2 = #C1, required core::int field3 = #C1}) → self::Class6
    : self::Class6::field1 = field1, self::Class6::field2 = field2, self::Class6::field3 = field3, super core::Object::•()
    ;
  static method _#_#tearOff(core::int field1, {core::int? field2 = #C1, required core::int field3 = #C1}) → self::Class6
    return new self::Class6::_(field1, field2: field2, field3: field3);
  static factory •(core::int field1, {core::int? field2 = #C1, required core::int field3 = #C1}) → self::Class6
    let dynamic #redirecting_factory = self::Class6::_ in invalid-expression;
  static method _#new#tearOff(core::int field1, {core::int? field2 = #C1, required core::int field3 = #C1}) → self::Class6
    return new self::Class6::_(field1, field2: field2, field3: field3);
}
class Class7a extends core::Object implements self::Class7b {
  constructor •() → self::Class7a
    : super core::Object::•()
    ;
  static method _#new#tearOff() → self::Class7a
    return new self::Class7a::•();
}
class Class7b extends core::Object {
  static final field dynamic _redirecting# = <dynamic>[self::Class7b::•]/*isLegacy*/;
  static factory •() → self::Class7b
    let dynamic #redirecting_factory = self::Class7a::• in invalid-expression;
  static method _#new#tearOff() → self::Class7b
    return new self::Class7a::•();
}
class Class8a<T extends core::Object? = dynamic> extends core::Object implements self::Class8b<self::Class8a::T%> {
  constructor •() → self::Class8a<self::Class8a::T%>
    : super core::Object::•()
    ;
  static method _#new#tearOff<T extends core::Object? = dynamic>() → self::Class8a<self::Class8a::_#new#tearOff::T%>
    return new self::Class8a::•<self::Class8a::_#new#tearOff::T%>();
}
class Class8b<T extends core::Object? = dynamic> extends core::Object {
  static final field dynamic _redirecting# = <dynamic>[self::Class8b::•]/*isLegacy*/;
  static factory •<T extends core::Object? = dynamic>() → self::Class8b<self::Class8b::•::T%>
    let dynamic #redirecting_factory = self::Class8a::• in let self::Class8b::•::T% #typeArg0 = null in invalid-expression;
  static method _#new#tearOff<T extends core::Object? = dynamic>() → self::Class8b<self::Class8b::_#new#tearOff::T%>
    return new self::Class8a::•<self::Class8b::_#new#tearOff::T%>();
}
static final field core::bool inSoundMode = !(<core::int?>[] is{ForNonNullableByDefault} core::List<core::int>);
static method main() → dynamic {
  core::print("inSoundMode: ${self::inSoundMode}");
  self::testNoArgs();
  self::testArgs();
}
static method testNoArgs() → dynamic {
  () → self::Class1 f1a = #C2;
  self::Class1 c1a = f1a(){() → self::Class1};
  self::expect(true, c1a is{ForNonNullableByDefault} self::Class1);
  dynamic f1b = #C2;
  dynamic c1b = f1b{dynamic}.call();
  self::expect(true, c1b is{ForNonNullableByDefault} self::Class1);
  self::expect(true, core::identical(f1a, f1b));
  () → self::Class2 f2a = #C3;
  self::Class2 c2a = f2a(){() → self::Class2};
  self::expect(true, c2a is{ForNonNullableByDefault} self::Class2);
  dynamic f2b = #C3;
  dynamic c2b = f2b{dynamic}.call();
  self::expect(true, c2b is{ForNonNullableByDefault} self::Class2);
  self::expect(true, core::identical(f2a, f2b));
}
static method testArgs() → dynamic {
  (core::int) → self::Class3 f3a = #C4;
  self::Class3 c3a = f3a(42){(core::int) → self::Class3};
  self::expect(42, c3a.{self::Class3::field}{core::int});
  () → Null {
    let final Never #t1 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart:99:8: Error: Too few positional arguments: 1 required, 0 given.
    f3a(); // error
       ^" in f3a{<inapplicable>}.();
    let final Never #t2 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart:100:8: Error: Too many positional arguments: 1 allowed, but 2 found.
Try removing the extra positional arguments.
    f3a(42, 87); // error
       ^" in f3a{<inapplicable>}.(42, 87);
  };
  dynamic f3b = #C4;
  dynamic c3b = f3b{dynamic}.call(87);
  self::expect(87, c3b{dynamic}.field);
  self::throws(() → dynamic => f3b{dynamic}.call());
  self::throws(() → dynamic => f3b{dynamic}.call(42, 87));
  ([core::int?]) → self::Class4 f4a = #C5;
  self::Class4 c4a = f4a(){([core::int?]) → self::Class4};
  self::expect(null, c4a.{self::Class4::field}{core::int?});
  self::Class4 c4b = f4a(42){([core::int?]) → self::Class4};
  self::expect(42, c4b.{self::Class4::field}{core::int?});
  () → Null {
    let final Never #t3 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart:115:8: Error: Too many positional arguments: 1 allowed, but 2 found.
Try removing the extra positional arguments.
    f4a(42, 87); // error
       ^" in f4a{<inapplicable>}.(42, 87);
  };
  dynamic f4b = #C5;
  self::throws(() → dynamic => f4b{dynamic}.call(42, 87));
  (core::int, [core::int?]) → self::Class5 f5a = #C6;
  self::Class5 c5a = f5a(42){(core::int, [core::int?]) → self::Class5};
  self::expect(42, c5a.{self::Class5::field1}{core::int});
  self::expect(null, c5a.{self::Class5::field2}{core::int?});
  self::Class5 c5b = f5a(87, 42){(core::int, [core::int?]) → self::Class5};
  self::expect(87, c5b.{self::Class5::field1}{core::int});
  self::expect(42, c5b.{self::Class5::field2}{core::int?});
  () → Null {
    let final Never #t4 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart:129:8: Error: Too few positional arguments: 1 required, 0 given.
    f5a(); // error
       ^" in f5a{<inapplicable>}.();
    let final Never #t5 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart:130:8: Error: Too many positional arguments: 2 allowed, but 3 found.
Try removing the extra positional arguments.
    f5a(42, 87, 123); // error
       ^" in f5a{<inapplicable>}.(42, 87, 123);
  };
  dynamic f5b = #C6;
  self::throws(() → dynamic => f5b{dynamic}.call());
  self::throws(() → dynamic => f5b{dynamic}.call(42, 87, 123));
  (core::int, {field2: core::int?, required field3: core::int}) → self::Class6 f6a = #C7;
  self::Class6 c6a = f6a(42, field3: 87){(core::int, {field2: core::int?, required field3: core::int}) → self::Class6};
  self::expect(42, c6a.{self::Class6::field1}{core::int});
  self::expect(null, c6a.{self::Class6::field2}{core::int?});
  self::expect(87, c6a.{self::Class6::field3}{core::int});
  () → Null {
    let final Never #t6 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart:142:8: Error: Too few positional arguments: 1 required, 0 given.
    f6a(); // error
       ^" in f6a{<inapplicable>}.();
    let final Never #t7 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart:143:8: Error: Required named parameter 'field3' must be provided.
    f6a(42); // error
       ^" in f6a{<inapplicable>}.(42);
    let final Never #t8 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart:144:8: Error: Too many positional arguments: 1 allowed, but 2 found.
Try removing the extra positional arguments.
    f6a(42, 87); // error
       ^" in f6a{<inapplicable>}.(42, 87);
    let final Never #t9 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/redirecting_factory_tear_off.dart:145:8: Error: Too few positional arguments: 1 required, 0 given.
    f6a(field1: 87, field2: 87); // error
       ^" in f6a{<inapplicable>}.(field1: 87, field2: 87);
  };
  self::Class6 c6b = f6a(42, field2: 123, field3: 87){(core::int, {field2: core::int?, required field3: core::int}) → self::Class6};
  self::expect(42, c6b.{self::Class6::field1}{core::int});
  self::expect(123, c6b.{self::Class6::field2}{core::int?});
  self::expect(87, c6b.{self::Class6::field3}{core::int});
  self::Class6 c6c = f6a(87, field3: 42, field2: 123){(core::int, {field2: core::int?, required field3: core::int}) → self::Class6};
  self::expect(87, c6c.{self::Class6::field1}{core::int});
  self::expect(123, c6c.{self::Class6::field2}{core::int?});
  self::expect(42, c6c.{self::Class6::field3}{core::int});
  dynamic f6b = #C7;
  self::throws(() → dynamic => f6b{dynamic}.call());
  self::throws(() → dynamic => f6b{dynamic}.call(42), inSoundModeOnly: true);
  self::throws(() → dynamic => f6b{dynamic}.call(42, 87), inSoundModeOnly: true);
  self::throws(() → dynamic => f6b{dynamic}.call(field1: 87, field2: 87));
  () → self::Class7b f7a = #C8;
  self::Class7b c7a = f7a(){() → self::Class7b};
  self::expect(true, c7a is{ForNonNullableByDefault} self::Class7a);
  self::expect(true, c7a is{ForNonNullableByDefault} self::Class7b);
  <T extends core::Object? = dynamic>() → self::Class8b<T%> f8a = #C9;
  self::Class8b<dynamic> c8a = f8a<dynamic>(){() → self::Class8b<dynamic>};
  self::expect(true, c8a is{ForNonNullableByDefault} self::Class8a<dynamic>);
  self::expect(true, c8a is{ForNonNullableByDefault} self::Class8b<dynamic>);
  self::Class8b<core::int> c8b = f8a<core::int>(){() → self::Class8b<core::int>};
  self::expect(true, c8b is{ForNonNullableByDefault} self::Class8a<core::int>);
  self::expect(true, c8b is{ForNonNullableByDefault} self::Class8b<core::int>);
  self::expect(false, c8b is{ForNonNullableByDefault} self::Class8b<core::String>);
}
static method expect(dynamic expected, dynamic actual) → dynamic {
  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
    throw "Expected ${expected}, actual ${actual}";
}
static method throws(() → dynamic f, {core::bool inSoundModeOnly = #C10}) → dynamic {
  try {
    f(){() → dynamic};
  }
  on core::Object catch(final core::Object e) {
    core::print("Thrown: ${e}");
    return;
  }
  if(!self::inSoundMode && inSoundModeOnly) {
    return;
  }
  throw "Expected exception";
}

constants  {
  #C1 = null
  #C2 = static-tearoff self::Class1::_#new#tearOff
  #C3 = static-tearoff self::Class2::_#named#tearOff
  #C4 = static-tearoff self::Class3::_#new#tearOff
  #C5 = static-tearoff self::Class4::_#new#tearOff
  #C6 = static-tearoff self::Class5::_#new#tearOff
  #C7 = static-tearoff self::Class6::_#new#tearOff
  #C8 = static-tearoff self::Class7b::_#new#tearOff
  #C9 = static-tearoff self::Class8b::_#new#tearOff
  #C10 = false
}
