blob: 9edd33af5476c75eb44f51f760ed22fa6f7ccf9a [file] [log] [blame]
library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/constructor_tearoffs/lowering/from_dill/main.dart:44:8: Error: Too few positional arguments: 1 required, 0 given.
// f3a(); // error
// ^
//
// pkg/front_end/testcases/constructor_tearoffs/lowering/from_dill/main.dart:45: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/from_dill/main.dart:62:8: Error: Expected 1 type arguments.
// f4a<int, String>(); // error
// ^
//
// pkg/front_end/testcases/constructor_tearoffs/lowering/from_dill/main.dart:70:8: Error: Expected 0 type arguments.
// f4b<int>(); // error
// ^
//
// pkg/front_end/testcases/constructor_tearoffs/lowering/from_dill/main.dart:87:8: Error: Expected 1 type arguments.
// f4d<int, String>(); // error
// ^
//
// pkg/front_end/testcases/constructor_tearoffs/lowering/from_dill/main.dart:95:8: Error: Expected 0 type arguments.
// f4e<int>(); // error
// ^
//
// pkg/front_end/testcases/constructor_tearoffs/lowering/from_dill/main.dart:112:8: Error: Type argument 'String' doesn't conform to the bound 'num' of the type variable 'T' on 'call'.
// Try changing type arguments so that they conform to the bounds.
// f5a<String>(); // error
// ^
//
// pkg/front_end/testcases/constructor_tearoffs/lowering/from_dill/main.dart:113:8: Error: Expected 1 type arguments.
// f5a<int, String>(); // error
// ^
//
import self as self;
import "main_lib.dart" as mai;
import "dart:core" as core;
import "org-dartlang-testcase:///main_lib.dart";
static final field core::bool inSoundMode = !(core::_GrowableList::•<core::int?>(0) is{ForNonNullableByDefault} core::List<core::int>);
static method main() → dynamic {
() → mai::Class1 f1a = #C1;
mai::Class1 c1a = f1a(){() → mai::Class1};
self::expect(true, c1a is{ForNonNullableByDefault} mai::Class1);
dynamic f1b = #C1;
dynamic c1b = f1b{dynamic}.call();
self::expect(true, c1b is{ForNonNullableByDefault} mai::Class1);
self::expect(true, core::identical(f1a, f1b));
() → mai::Class2 f2a = #C2;
mai::Class2 c2a = f2a(){() → mai::Class2};
self::expect(true, c2a is{ForNonNullableByDefault} mai::Class2);
dynamic f2b = #C2;
dynamic c2b = f2b{dynamic}.call();
self::expect(true, c2b is{ForNonNullableByDefault} mai::Class2);
self::expect(true, core::identical(f2a, f2b));
() → mai::Class2 f2c = #C3;
mai::Class2 c2c = f2c(){() → mai::Class2};
self::expect(true, c2c is{ForNonNullableByDefault} mai::Class2);
dynamic f2d = #C3;
dynamic c2d = f2d{dynamic}.call();
self::expect(true, c2d is{ForNonNullableByDefault} mai::Class2);
self::expect(true, core::identical(f2c, f2d));
(core::int) → mai::Class3 f3a = #C4;
mai::Class3 c3a = f3a(42){(core::int) → mai::Class3};
self::expect(42, c3a.{mai::Class3::field}{core::int});
() → Null {
let final Never #t1 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/from_dill/main.dart:44: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/from_dill/main.dart:45: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));
<T extends core::Object? = dynamic>() → mai::Class4<T%> f4a = #C5;
mai::Class4<dynamic> c4a = f4a<dynamic>(){() → mai::Class4<dynamic>};
self::expect(true, c4a is{ForNonNullableByDefault} mai::Class4<dynamic>);
self::expect(false, c4a is{ForNonNullableByDefault} mai::Class4<core::int>);
mai::Class4<core::int> c4b = f4a<core::int>(){() → mai::Class4<core::int>};
self::expect(true, c4b is{ForNonNullableByDefault} mai::Class4<core::int>);
self::expect(false, c4b is{ForNonNullableByDefault} mai::Class4<core::String>);
() → Null {
let final Never #t3 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/from_dill/main.dart:62:8: Error: Expected 1 type arguments.
f4a<int, String>(); // error
^" in f4a{<inapplicable>}.<core::int, core::String>();
};
() → mai::Class4<core::int> f4b = f4a<core::int>;
mai::Class4<core::int> c4c = f4b(){() → mai::Class4<core::int>};
self::expect(true, c4c is{ForNonNullableByDefault} mai::Class4<core::int>);
self::expect(false, c4c is{ForNonNullableByDefault} mai::Class4<core::String>);
() → Null {
let final Never #t4 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/from_dill/main.dart:70:8: Error: Expected 0 type arguments.
f4b<int>(); // error
^" in f4b{<inapplicable>}.<core::int>();
};
dynamic f4c = #C5;
dynamic c4d = f4c{dynamic}.call();
self::expect(true, c4d is{ForNonNullableByDefault} mai::Class4<dynamic>);
self::expect(false, c4d is{ForNonNullableByDefault} mai::Class4<core::int>);
self::throws(() → dynamic => f4c{dynamic}.call<core::int, core::String>());
<T extends core::Object? = dynamic>() → mai::Class4<T%> f4d = #C6;
mai::Class4<dynamic> c4e = f4d<dynamic>(){() → mai::Class4<dynamic>};
self::expect(true, c4e is{ForNonNullableByDefault} mai::Class4<dynamic>);
self::expect(false, c4e is{ForNonNullableByDefault} mai::Class4<core::int>);
mai::Class4<core::int> c4f = f4d<core::int>(){() → mai::Class4<core::int>};
self::expect(true, c4f is{ForNonNullableByDefault} mai::Class4<core::int>);
self::expect(false, c4f is{ForNonNullableByDefault} mai::Class4<core::String>);
() → Null {
let final Never #t5 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/from_dill/main.dart:87:8: Error: Expected 1 type arguments.
f4d<int, String>(); // error
^" in f4d{<inapplicable>}.<core::int, core::String>();
};
() → mai::Class4<core::int> f4e = f4d<core::int>;
mai::Class4<core::int> c4g = f4e(){() → mai::Class4<core::int>};
self::expect(true, c4g is{ForNonNullableByDefault} mai::Class4<core::int>);
self::expect(false, c4g is{ForNonNullableByDefault} mai::Class4<core::String>);
() → Null {
let final Never #t6 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/from_dill/main.dart:95:8: Error: Expected 0 type arguments.
f4e<int>(); // error
^" in f4e{<inapplicable>}.<core::int>();
};
dynamic f4f = #C6;
dynamic c4h = f4f{dynamic}.call();
self::expect(true, c4h is{ForNonNullableByDefault} mai::Class4<dynamic>);
self::expect(false, c4h is{ForNonNullableByDefault} mai::Class4<core::int>);
self::throws(() → dynamic => f4f{dynamic}.call<core::int, core::String>());
<T extends core::num>() → mai::Class5<T> f5a = #C7;
mai::Class5<core::num> c5a = f5a<core::num>(){() → mai::Class5<core::num>};
self::expect(true, c5a is{ForNonNullableByDefault} mai::Class5<core::num>);
self::expect(false, c5a is{ForNonNullableByDefault} mai::Class5<core::int>);
mai::Class5<core::int> c5b = f5a<core::int>(){() → mai::Class5<core::int>};
self::expect(true, c5b is{ForNonNullableByDefault} mai::Class5<core::int>);
self::expect(false, c5b is{ForNonNullableByDefault} mai::Class5<core::double>);
() → Null {
f5a<core::String>(){() → mai::Class5<core::String>};
let final Never #t7 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/from_dill/main.dart:113:8: Error: Expected 1 type arguments.
f5a<int, String>(); // error
^" in f5a{<inapplicable>}.<core::int, core::String>();
};
dynamic f5b = #C7;
dynamic c5c = f5b{dynamic}.call();
self::expect(true, c5c is{ForNonNullableByDefault} mai::Class5<core::num>);
self::expect(false, c5c is{ForNonNullableByDefault} mai::Class5<core::int>);
dynamic c5d = f5b{dynamic}.call<core::int>();
self::expect(true, c5d is{ForNonNullableByDefault} mai::Class5<core::int>);
self::expect(false, c5d is{ForNonNullableByDefault} mai::Class5<core::double>);
self::throws(() → dynamic => f5b{dynamic}.call<core::String>());
self::throws(() → dynamic => f5b{dynamic}.call<core::int, 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 = #C8}) → 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";
}
library /*isNonNullableByDefault*/;
import self as mai;
import "dart:core" as core;
class Class1 extends core::Object {
synthetic constructor •() → mai::Class1
: super core::Object::•()
;
static method _#new#tearOff() → mai::Class1
return new mai::Class1::•();
}
class Class2 extends core::Object {
static final field dynamic _redirecting# = <dynamic>[mai::Class2::redirect]/*isLegacy*/;
constructor named() → mai::Class2
: super core::Object::•()
;
static method _#named#tearOff() → mai::Class2
return new mai::Class2::named();
static factory redirect() → mai::Class2
let Never #redirecting_factory = mai::Class2::named in invalid-expression;
static method _#redirect#tearOff() → mai::Class2
return new mai::Class2::named();
}
class Class3 extends core::Object {
final field core::int field;
constructor •(core::int field) → mai::Class3
: mai::Class3::field = field, super core::Object::•()
;
static method _#new#tearOff(core::int field) → mai::Class3
return new mai::Class3::•(field);
}
class Class4<T extends core::Object? = dynamic> extends core::Object {
static final field dynamic _redirecting# = <dynamic>[mai::Class4::redirect]/*isLegacy*/;
constructor _() → mai::Class4<mai::Class4::T%>
: super core::Object::•()
;
static method _#_#tearOff<T extends core::Object? = dynamic>() → mai::Class4<mai::Class4::_#_#tearOff::T%>
return new mai::Class4::_<mai::Class4::_#_#tearOff::T%>();
static factory •<T extends core::Object? = dynamic>() → mai::Class4<mai::Class4::•::T%>
return new mai::Class4::_<mai::Class4::•::T%>();
static method _#new#tearOff<T extends core::Object? = dynamic>() → mai::Class4<mai::Class4::_#new#tearOff::T%>
return mai::Class4::•<mai::Class4::_#new#tearOff::T%>();
static factory redirect<T extends core::Object? = dynamic>() → mai::Class4<mai::Class4::redirect::T%>
let Never #redirecting_factory = mai::Class4::_ in let mai::Class4::redirect::T% #typeArg0 = null in invalid-expression;
static method _#redirect#tearOff<T extends core::Object? = dynamic>() → mai::Class4<mai::Class4::_#redirect#tearOff::T%>
return new mai::Class4::_<mai::Class4::_#redirect#tearOff::T%>();
}
class Class5<T extends core::num> extends core::Object {
constructor _() → mai::Class5<mai::Class5::T>
: super core::Object::•()
;
static method _#_#tearOff<T extends core::num>() → mai::Class5<mai::Class5::_#_#tearOff::T>
return new mai::Class5::_<mai::Class5::_#_#tearOff::T>();
static factory •<T extends core::num>() → mai::Class5<mai::Class5::•::T>
return new mai::Class5::_<mai::Class5::•::T>();
static method _#new#tearOff<T extends core::num>() → mai::Class5<mai::Class5::_#new#tearOff::T>
return mai::Class5::•<mai::Class5::_#new#tearOff::T>();
}
constants {
#C1 = static-tearoff mai::Class1::_#new#tearOff
#C2 = static-tearoff mai::Class2::_#named#tearOff
#C3 = static-tearoff mai::Class2::_#redirect#tearOff
#C4 = static-tearoff mai::Class3::_#new#tearOff
#C5 = static-tearoff mai::Class4::_#new#tearOff
#C6 = static-tearoff mai::Class4::_#redirect#tearOff
#C7 = static-tearoff mai::Class5::_#new#tearOff
#C8 = false
}