blob: b0722a9335d8ecd2b0bdb2a335eac049ef731793 [file] [log] [blame]
library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart:34:8: Error: Too many positional arguments: 0 allowed, but 1 found.
// Try removing the extra positional arguments.
// f1a(0); // error
// ^
//
// pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart:46:8: Error: Too many positional arguments: 0 allowed, but 1 found.
// Try removing the extra positional arguments.
// f2a(0); // error
// ^
//
// pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart:47:8: Error: Type argument 'String' doesn't conform to the bound 'num' of the type variable 'X' on 'call'.
// Try changing type arguments so that they conform to the bounds.
// f2a<String>(); // error
// ^
//
// pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart:65:8: Error: Too many positional arguments: 0 allowed, but 1 found.
// Try removing the extra positional arguments.
// f3a(0); // error
// ^
//
// pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart:66:8: Error: Expected 0 type arguments.
// f3a<String>(); // error
// ^
//
// pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart:85:8: Error: Too few positional arguments: 1 required, 0 given.
// f3c(); // error
// ^
//
// pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart:86:8: Error: Too many positional arguments: 1 allowed, but 2 found.
// Try removing the extra positional arguments.
// f3c(0, 0); // error
// ^
//
// pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart:87:8: Error: Expected 0 type arguments.
// f3c<String>(0); // error
// ^
//
// pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart:107:8: Error: Too few positional arguments: 2 required, 0 given.
// f3e(); // error
// ^
//
// pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart:108:8: Error: Too few positional arguments: 2 required, 1 given.
// f3e(0); // error
// ^
//
// pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart:109:8: Error: Expected 0 type arguments.
// f3e<String>(0, ''); // error
// ^
//
// pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart:130:8: Error: Too many positional arguments: 0 allowed, but 1 found.
// Try removing the extra positional arguments.
// f4a(0); // error
// ^
//
// pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart:131:8: Error: Type argument 'String' doesn't conform to the bound 'num' of the type variable 'X' on 'call'.
// Try changing type arguments so that they conform to the bounds.
// f4a<String>(); // error
// ^
//
// pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart:152:8: Error: Too many positional arguments: 0 allowed, but 1 found.
// Try removing the extra positional arguments.
// f5a(0); // error
// ^
//
// pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart:153:8: Error: Expected 2 type arguments.
// f5a<String>(); // error
// ^
//
// pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart:154:8: Error: Type argument 'String' doesn't conform to the bound 'num' of the type variable 'X' on 'call'.
// Try changing type arguments so that they conform to the bounds.
// f5a<String, String>(); // error
// ^
//
// pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart:155:8: Error: Type argument 'num' doesn't conform to the bound 'String' of the type variable 'Y' on 'call'.
// Try changing type arguments so that they conform to the bounds.
// f5a<num, num>(); // error
// ^
//
import self as self;
import "dart:core" as core;
typedef DA1 = self::A;
typedef DA2<unrelated X extends core::num> = self::A;
typedef DB1 = self::B<core::String>;
typedef DB2<X extends core::num> = self::B<X>;
typedef DB3<X extends core::num, unrelated Y extends core::String> = self::B<X>;
class A extends core::Object {
synthetic constructor •() self::A
: super core::Object::•()
;
static method _#new#tearOff() → self::A
return new self::A::•();
}
class B<X extends core::Object? = dynamic> extends core::Object {
field core::int field1;
field core::String field2;
constructor _(core::int field1, core::String field2) self::B<self::B::X%>
: self::B::field1 = field1, self::B::field2 = field2, super core::Object::•()
;
constructor •() self::B<self::B::X%>
: this self::B::_(0, "")
;
constructor foo(core::int field1) self::B<self::B::X%>
: self::B::field1 = field1, self::B::field2 = "", super core::Object::•()
;
static method _#_#tearOff<X extends core::Object? = dynamic>(core::int field1, core::String field2) → self::B<self::B::_#_#tearOff::X%>
return new self::B::_<self::B::_#_#tearOff::X%>(field1, field2);
static method _#new#tearOff<X extends core::Object? = dynamic>() → self::B<self::B::_#new#tearOff::X%>
return new self::B::•<self::B::_#new#tearOff::X%>();
static method _#foo#tearOff<X extends core::Object? = dynamic>(core::int field1) → self::B<self::B::_#foo#tearOff::X%>
return new self::B::foo<self::B::_#foo#tearOff::X%>(field1);
static factory bar<X extends core::Object? = dynamic>(core::int i, core::String j) self::B<self::B::bar::X%>
return new self::B::_<self::B::bar::X%>(i, j);
static method _#bar#tearOff<X extends core::Object? = dynamic>(core::int i, core::String j) → self::B<self::B::_#bar#tearOff::X%>
return self::B::bar<self::B::_#bar#tearOff::X%>(i, j);
}
static final field core::bool inSoundMode = !(<core::int?>[] is{ForNonNullableByDefault} core::List<core::int>);
static method main() dynamic {
() self::A f1a = #C1;
self::A c1a = f1a(){() self::A};
self::expect(true, c1a is{ForNonNullableByDefault} self::A);
() Null {
invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart:34:8: Error: Too many positional arguments: 0 allowed, but 1 found.
Try removing the extra positional arguments.
f1a(0); // error
^" in f1a{<inapplicable>}.(0);
};
dynamic f1b = #C1;
dynamic c1b = f1b{dynamic}.call();
self::expect(true, c1b is{ForNonNullableByDefault} self::A);
self::throws(() dynamic => f1b{dynamic}.call(0));
<unrelated X extends core::num>() self::A f2a = #C2;
self::A c2a = f2a<core::num>(){() self::A};
self::expect(true, c2a is{ForNonNullableByDefault} self::A);
() Null {
invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart:46:8: Error: Too many positional arguments: 0 allowed, but 1 found.
Try removing the extra positional arguments.
f2a(0); // error
^" in f2a{<inapplicable>}.<core::num>(0);
f2a<core::String>(){() self::A};
};
dynamic f2b = #C2;
dynamic c2b = f2b{dynamic}.call();
self::expect(true, c2b is{ForNonNullableByDefault} self::A);
dynamic c2c = f2b{dynamic}.call<core::int>();
self::expect(true, c2c is{ForNonNullableByDefault} self::A);
self::throws(() dynamic => f2b{dynamic}.call(0));
self::throws(() dynamic => f2b{dynamic}.call<core::String>());
() self::B<core::String> f3a = #C4;
self::B<core::String> c3a = f3a(){() self::B<core::String>};
self::expect(true, c3a is{ForNonNullableByDefault} self::B<core::String>);
self::expect(false, c3a is{ForNonNullableByDefault} self::B<core::int>);
self::expect(0, c3a.{self::B::field1}{core::int});
self::expect("", c3a.{self::B::field2}{core::String});
() Null {
invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart:65:8: Error: Too many positional arguments: 0 allowed, but 1 found.
Try removing the extra positional arguments.
f3a(0); // error
^" in f3a{<inapplicable>}.(0);
invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart:66:8: Error: Expected 0 type arguments.
f3a<String>(); // error
^" in f3a{<inapplicable>}.<core::String>();
};
dynamic f3b = #C4;
dynamic c3b = f3b{dynamic}.call();
self::expect(true, c3b is{ForNonNullableByDefault} self::B<core::String>);
self::expect(false, c3b is{ForNonNullableByDefault} self::B<core::int>);
self::expect(0, c3a.{self::B::field1}{core::int});
self::expect("", c3a.{self::B::field2}{core::String});
self::throws(() dynamic => f3b{dynamic}.call(0));
self::throws(() dynamic => f3b{dynamic}.call<core::String>());
(core::int) self::B<core::String> f3c = #C6;
self::B<core::String> c3c = f3c(42){(core::int) self::B<core::String>};
self::expect(true, c3c is{ForNonNullableByDefault} self::B<core::String>);
self::expect(false, c3c is{ForNonNullableByDefault} self::B<core::int>);
self::expect(42, c3c.{self::B::field1}{core::int});
self::expect("", c3c.{self::B::field2}{core::String});
() Null {
invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart:85:8: Error: Too few positional arguments: 1 required, 0 given.
f3c(); // error
^" in f3c{<inapplicable>}.();
invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart:86:8: Error: Too many positional arguments: 1 allowed, but 2 found.
Try removing the extra positional arguments.
f3c(0, 0); // error
^" in f3c{<inapplicable>}.(0, 0);
invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart:87:8: Error: Expected 0 type arguments.
f3c<String>(0); // error
^" in f3c{<inapplicable>}.<core::String>(0);
};
dynamic f3d = #C6;
dynamic c3d = f3d{dynamic}.call(42);
self::expect(true, c3d is{ForNonNullableByDefault} self::B<core::String>);
self::expect(false, c3d is{ForNonNullableByDefault} self::B<core::int>);
self::expect(42, c3d{dynamic}.field1);
self::expect("", c3d{dynamic}.field2);
self::throws(() dynamic => f3d{dynamic}.call());
self::throws(() dynamic => f3d{dynamic}.call(0, 0));
self::throws(() dynamic => f3d{dynamic}.call<core::String>(0));
(core::int, core::String) self::B<core::String> f3e = #C8;
self::B<core::String> c3e = f3e(42, "foo"){(core::int, core::String) self::B<core::String>};
self::expect(true, c3e is{ForNonNullableByDefault} self::B<core::String>);
self::expect(false, c3e is{ForNonNullableByDefault} self::B<core::int>);
self::expect(42, c3e.{self::B::field1}{core::int});
self::expect("foo", c3e.{self::B::field2}{core::String});
() Null {
invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart:107:8: Error: Too few positional arguments: 2 required, 0 given.
f3e(); // error
^" in f3e{<inapplicable>}.();
invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart:108:8: Error: Too few positional arguments: 2 required, 1 given.
f3e(0); // error
^" in f3e{<inapplicable>}.(0);
invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart:109:8: Error: Expected 0 type arguments.
f3e<String>(0, ''); // error
^" in f3e{<inapplicable>}.<core::String>(0, "");
};
dynamic f3f = #C8;
dynamic c3f = f3f{dynamic}.call(42, "foo");
self::expect(true, c3f is{ForNonNullableByDefault} self::B<core::String>);
self::expect(false, c3f is{ForNonNullableByDefault} self::B<core::int>);
self::expect(42, c3f{dynamic}.field1);
self::expect("foo", c3f{dynamic}.field2);
self::throws(() dynamic => c3f{dynamic}.call());
self::throws(() dynamic => c3f{dynamic}.call(0));
self::throws(() dynamic => c3f{dynamic}.call<core::String>(0));
<X extends core::num>() self::B<X> f4a = #C9;
self::B<core::num> c4a = f4a<core::num>(){() self::B<core::num>};
self::expect(true, c4a is{ForNonNullableByDefault} self::B<core::num>);
self::expect(false, c4a is{ForNonNullableByDefault} self::B<core::int>);
self::B<core::int> c4b = f4a<core::int>(){() self::B<core::int>};
self::expect(true, c4b is{ForNonNullableByDefault} self::B<core::int>);
self::expect(false, c4b is{ForNonNullableByDefault} self::B<core::double>);
() Null {
invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart:130:8: Error: Too many positional arguments: 0 allowed, but 1 found.
Try removing the extra positional arguments.
f4a(0); // error
^" in f4a{<inapplicable>}.<core::num>(0);
f4a<core::String>(){() self::B<core::String>};
};
dynamic f4b = #C9;
dynamic c4c = f4b{dynamic}.call();
self::expect(true, c4c is{ForNonNullableByDefault} self::B<core::num>);
self::expect(false, c4c is{ForNonNullableByDefault} self::B<core::int>);
dynamic c4d = f4b{dynamic}.call<core::int>();
self::expect(true, c4d is{ForNonNullableByDefault} self::B<core::int>);
self::expect(false, c4d is{ForNonNullableByDefault} self::B<core::double>);
self::throws(() dynamic => f4b{dynamic}.call(0));
self::throws(() dynamic => f4b{dynamic}.call<core::String>());
<X extends core::num, unrelated Y extends core::String>() self::B<X> f5a = #C10;
self::B<core::num> c5a = f5a<core::num, core::String>(){() self::B<core::num>};
self::expect(true, c5a is{ForNonNullableByDefault} self::B<core::num>);
self::expect(false, c5a is{ForNonNullableByDefault} self::B<core::int>);
self::B<core::int> c5b = f5a<core::int, core::String>(){() self::B<core::int>};
self::expect(true, c5b is{ForNonNullableByDefault} self::B<core::int>);
self::expect(false, c5b is{ForNonNullableByDefault} self::B<core::double>);
() Null {
invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart:152:8: Error: Too many positional arguments: 0 allowed, but 1 found.
Try removing the extra positional arguments.
f5a(0); // error
^" in f5a{<inapplicable>}.<core::num, core::String>(0);
invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_tear_off.dart:153:8: Error: Expected 2 type arguments.
f5a<String>(); // error
^" in f5a{<inapplicable>}.<core::String>();
f5a<core::String, core::String>(){() self::B<core::String>};
f5a<core::num, core::num>(){() self::B<core::num>};
};
dynamic f5b = #C10;
dynamic c5c = f5b{dynamic}.call();
self::expect(true, c5c is{ForNonNullableByDefault} self::B<core::num>);
self::expect(false, c5c is{ForNonNullableByDefault} self::B<core::int>);
dynamic c5d = f5b{dynamic}.call<core::int, core::String>();
self::expect(true, c5d is{ForNonNullableByDefault} self::B<core::int>);
self::expect(false, c5d is{ForNonNullableByDefault} self::B<core::double>);
self::throws(() dynamic => f5b{dynamic}.call(0));
self::throws(() dynamic => f5b{dynamic}.call<core::String>());
self::throws(() dynamic => f5b{dynamic}.call<core::String, core::String>());
self::throws(() dynamic => f5b{dynamic}.call<core::num, core::num>());
}
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 = #C11}) → 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";
}
static method _#DA2#new#tearOff<unrelated X extends core::num>() → self::A
return new self::A::•();
static method _#DB2#_#tearOff<X extends core::num>(core::int field1, core::String field2) → self::B<self::_#DB2#_#tearOff::X>
return new self::B::_<self::_#DB2#_#tearOff::X>(field1, field2);
static method _#DB2#new#tearOff<X extends core::num>() → self::B<self::_#DB2#new#tearOff::X>
return new self::B::•<self::_#DB2#new#tearOff::X>();
static method _#DB2#foo#tearOff<X extends core::num>(core::int field1) → self::B<self::_#DB2#foo#tearOff::X>
return new self::B::foo<self::_#DB2#foo#tearOff::X>(field1);
static method _#DB2#bar#tearOff<X extends core::num>(core::int i, core::String j) → self::B<self::_#DB2#bar#tearOff::X>
return self::B::bar<self::_#DB2#bar#tearOff::X>(i, j);
static method _#DB3#_#tearOff<X extends core::num, unrelated Y extends core::String>(core::int field1, core::String field2) → self::B<self::_#DB3#_#tearOff::X>
return new self::B::_<self::_#DB3#_#tearOff::X>(field1, field2);
static method _#DB3#new#tearOff<X extends core::num, unrelated Y extends core::String>() → self::B<self::_#DB3#new#tearOff::X>
return new self::B::•<self::_#DB3#new#tearOff::X>();
static method _#DB3#foo#tearOff<X extends core::num, unrelated Y extends core::String>(core::int field1) → self::B<self::_#DB3#foo#tearOff::X>
return new self::B::foo<self::_#DB3#foo#tearOff::X>(field1);
static method _#DB3#bar#tearOff<X extends core::num, unrelated Y extends core::String>(core::int i, core::String j) → self::B<self::_#DB3#bar#tearOff::X>
return self::B::bar<self::_#DB3#bar#tearOff::X>(i, j);
constants {
#C1 = static-tearoff self::A::_#new#tearOff
#C2 = static-tearoff self::_#DA2#new#tearOff
#C3 = static-tearoff self::B::_#new#tearOff
#C4 = instantiation self::B::_#new#tearOff <core::String*>
#C5 = static-tearoff self::B::_#foo#tearOff
#C6 = instantiation self::B::_#foo#tearOff <core::String*>
#C7 = static-tearoff self::B::_#bar#tearOff
#C8 = instantiation self::B::_#bar#tearOff <core::String*>
#C9 = static-tearoff self::_#DB2#new#tearOff
#C10 = static-tearoff self::_#DB3#new#tearOff
#C11 = false
}