| library /*isNonNullableByDefault*/; |
| // |
| // Problems in library: |
| // |
| // pkg/front_end/testcases/constructor_tearoffs/redirecting_factory_tear_off.dart:99:8: Error: Too few positional arguments: 1 required, 0 given. |
| // f3a(); // error |
| // ^ |
| // |
| // pkg/front_end/testcases/constructor_tearoffs/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/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/redirecting_factory_tear_off.dart:129:8: Error: Too few positional arguments: 1 required, 0 given. |
| // f5a(); // error |
| // ^ |
| // |
| // pkg/front_end/testcases/constructor_tearoffs/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/redirecting_factory_tear_off.dart:142:8: Error: Too few positional arguments: 1 required, 0 given. |
| // f6a(); // error |
| // ^ |
| // |
| // pkg/front_end/testcases/constructor_tearoffs/redirecting_factory_tear_off.dart:143:8: Error: Required named parameter 'field3' must be provided. |
| // f6a(42); // error |
| // ^ |
| // |
| // pkg/front_end/testcases/constructor_tearoffs/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/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 factory •() → self::Class1 |
| let Never #redirecting_factory = self::Class1::_ in invalid-expression; |
| } |
| class Class2 extends core::Object { |
| static final field dynamic _redirecting# = <dynamic>[self::Class2::named]/*isLegacy*/; |
| constructor __() → self::Class2 |
| : super core::Object::•() |
| ; |
| static factory _() → self::Class2 |
| return new self::Class2::__(); |
| static factory named() → self::Class2 |
| let () → self::Class2 #redirecting_factory = self::Class2::_ in invalid-expression; |
| } |
| 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 factory •(core::int field) → self::Class3 |
| let Never #redirecting_factory = self::Class3::_ in invalid-expression; |
| } |
| 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 factory •([core::int? field = #C1]) → self::Class4 |
| let Never #redirecting_factory = self::Class4::_ in invalid-expression; |
| } |
| 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 factory •(core::int field1, [core::int? field2 = #C1]) → self::Class5 |
| let Never #redirecting_factory = self::Class5::_ in invalid-expression; |
| } |
| 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 factory •(core::int field1, {core::int? field2 = #C1, required core::int field3 = #C1}) → self::Class6 |
| let Never #redirecting_factory = self::Class6::_ in invalid-expression; |
| } |
| class Class7a extends core::Object implements self::Class7b { |
| constructor •() → self::Class7a |
| : super core::Object::•() |
| ; |
| } |
| class Class7b extends core::Object { |
| static final field dynamic _redirecting# = <dynamic>[self::Class7b::•]/*isLegacy*/; |
| static factory •() → self::Class7b |
| let Never #redirecting_factory = self::Class7a::• in invalid-expression; |
| } |
| 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::•() |
| ; |
| } |
| 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 Never #redirecting_factory = self::Class8a::• in let self::Class8b::•::T% #typeArg0 = null in invalid-expression; |
| } |
| static final field core::bool inSoundMode = !(core::_GrowableList::•<core::int?>(0) 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/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/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/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/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/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/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/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/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/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 = redirecting-factory-tearoff self::Class1::• |
| #C3 = redirecting-factory-tearoff self::Class2::named |
| #C4 = redirecting-factory-tearoff self::Class3::• |
| #C5 = redirecting-factory-tearoff self::Class4::• |
| #C6 = redirecting-factory-tearoff self::Class5::• |
| #C7 = redirecting-factory-tearoff self::Class6::• |
| #C8 = redirecting-factory-tearoff self::Class7b::• |
| #C9 = redirecting-factory-tearoff self::Class8b::• |
| #C10 = false |
| } |