blob: 54c0f3b014607df3c16c03c3c136353be504be1b [file] [log] [blame]
library;
//
// Problems in library:
//
// pkg/front_end/testcases/extension_types/issue53803.dart:8:51: Error: 'X' can't be used contravariantly or invariantly in 'Class<dynamic Function(X)>'.
// - 'Class' is from 'pkg/front_end/testcases/extension_types/issue53803.dart'.
// extension type E1<X>(Class<Never> foo) implements Class<Function(X)> {} // Error.
// ^
//
// pkg/front_end/testcases/extension_types/issue53803.dart:10:51: Error: 'X' can't be used contravariantly or invariantly in 'Class<dynamic Function(dynamic Function(dynamic Function(X)))>'.
// - 'Class' is from 'pkg/front_end/testcases/extension_types/issue53803.dart'.
// extension type E3<X>(Class<Never> foo) implements Class<Function(Function(Function(X)))> {} // Error.
// ^
//
// pkg/front_end/testcases/extension_types/issue53803.dart:11:51: Error: 'X' can't be used contravariantly or invariantly in 'Class<X Function(X)>'.
// - 'Class' is from 'pkg/front_end/testcases/extension_types/issue53803.dart'.
// extension type E4<X>(Class<Never> foo) implements Class<X Function(X)> {} // Error.
// ^
//
// pkg/front_end/testcases/extension_types/issue53803.dart:13:51: Error: 'X' can't be used contravariantly or invariantly in 'Class<X Function(dynamic Function(dynamic Function(X)))>'.
// - 'Class' is from 'pkg/front_end/testcases/extension_types/issue53803.dart'.
// extension type E6<X>(Class<Never> foo) implements Class<X Function(Function(Function(X)))> {} // Error.
// ^
//
// pkg/front_end/testcases/extension_types/issue53803.dart:15:46: Error: 'X' can't be used contravariantly or invariantly in 'ExtensionType<dynamic Function(X)>'.
// extension type E7<X>(Object? foo) implements ExtensionType<Function(X)> {} // Error.
// ^
//
// pkg/front_end/testcases/extension_types/issue53803.dart:17:46: Error: 'X' can't be used contravariantly or invariantly in 'ExtensionType<dynamic Function(dynamic Function(dynamic Function(X)))>'.
// extension type E9<X>(Object? foo) implements ExtensionType<Function(Function(Function(X)))> {} // Error.
// ^
//
// pkg/front_end/testcases/extension_types/issue53803.dart:18:47: Error: 'X' can't be used contravariantly or invariantly in 'ExtensionType<X Function(X)>'.
// extension type E10<X>(Object? foo) implements ExtensionType<X Function(X)> {} // Error.
// ^
//
// pkg/front_end/testcases/extension_types/issue53803.dart:20:47: Error: 'X' can't be used contravariantly or invariantly in 'ExtensionType<X Function(dynamic Function(dynamic Function(X)))>'.
// extension type E12<X>(Object? foo) implements ExtensionType<X Function(Function(Function(X)))> {} // Error.
// ^
//
import self as self;
import "dart:core" as core;
class Class<X extends core::Object? = dynamic> extends core::Object {
synthetic constructor •() self::Class<self::Class::X%>
: super core::Object::•()
;
}
extension type ExtensionType<X extends core::Object? = dynamic>(core::Object? foo) {
abstract extension-type-member representation-field get foo() core::Object?;
constructor = self::ExtensionType|constructor#;
constructor tearoff = self::ExtensionType|constructor#_#new#tearOff;
}
extension type E1<X extends core::Object? = dynamic>(self::Class<Never> foo) implements self::Class<(X%) dynamic> {
abstract extension-type-member representation-field get foo() self::Class<Never>;
constructor = self::E1|constructor#;
constructor tearoff = self::E1|constructor#_#new#tearOff;
}
extension type E2<X extends core::Object? = dynamic>(self::Class<Never> foo) implements self::Class<((X%) dynamic) dynamic> {
abstract extension-type-member representation-field get foo() self::Class<Never>;
constructor = self::E2|constructor#;
constructor tearoff = self::E2|constructor#_#new#tearOff;
}
extension type E3<X extends core::Object? = dynamic>(self::Class<Never> foo) implements self::Class<(((X%) dynamic) dynamic) dynamic> {
abstract extension-type-member representation-field get foo() self::Class<Never>;
constructor = self::E3|constructor#;
constructor tearoff = self::E3|constructor#_#new#tearOff;
}
extension type E4<X extends core::Object? = dynamic>(self::Class<Never> foo) implements self::Class<(X%) X%> {
abstract extension-type-member representation-field get foo() self::Class<Never>;
constructor = self::E4|constructor#;
constructor tearoff = self::E4|constructor#_#new#tearOff;
}
extension type E5<X extends core::Object? = dynamic>(self::Class<Never> foo) implements self::Class<((X%) dynamic) X%> {
abstract extension-type-member representation-field get foo() self::Class<Never>;
constructor = self::E5|constructor#;
constructor tearoff = self::E5|constructor#_#new#tearOff;
}
extension type E6<X extends core::Object? = dynamic>(self::Class<Never> foo) implements self::Class<(((X%) dynamic) dynamic) X%> {
abstract extension-type-member representation-field get foo() self::Class<Never>;
constructor = self::E6|constructor#;
constructor tearoff = self::E6|constructor#_#new#tearOff;
}
extension type E7<X extends core::Object? = dynamic>(core::Object? foo) implements self::ExtensionType<(X%) dynamic>% /* erasure=core::Object?, declared=! */ {
abstract extension-type-member representation-field get foo() core::Object?;
constructor = self::E7|constructor#;
constructor tearoff = self::E7|constructor#_#new#tearOff;
}
extension type E8<X extends core::Object? = dynamic>(core::Object? foo) implements self::ExtensionType<((X%) dynamic) dynamic>% /* erasure=core::Object?, declared=! */ {
abstract extension-type-member representation-field get foo() core::Object?;
constructor = self::E8|constructor#;
constructor tearoff = self::E8|constructor#_#new#tearOff;
}
extension type E9<X extends core::Object? = dynamic>(core::Object? foo) implements self::ExtensionType<(((X%) dynamic) dynamic) dynamic>% /* erasure=core::Object?, declared=! */ {
abstract extension-type-member representation-field get foo() core::Object?;
constructor = self::E9|constructor#;
constructor tearoff = self::E9|constructor#_#new#tearOff;
}
extension type E10<X extends core::Object? = dynamic>(core::Object? foo) implements self::ExtensionType<(X%) X%>% /* erasure=core::Object?, declared=! */ {
abstract extension-type-member representation-field get foo() core::Object?;
constructor = self::E10|constructor#;
constructor tearoff = self::E10|constructor#_#new#tearOff;
}
extension type E11<X extends core::Object? = dynamic>(core::Object? foo) implements self::ExtensionType<((X%) dynamic) X%>% /* erasure=core::Object?, declared=! */ {
abstract extension-type-member representation-field get foo() core::Object?;
constructor = self::E11|constructor#;
constructor tearoff = self::E11|constructor#_#new#tearOff;
}
extension type E12<X extends core::Object? = dynamic>(core::Object? foo) implements self::ExtensionType<(((X%) dynamic) dynamic) X%>% /* erasure=core::Object?, declared=! */ {
abstract extension-type-member representation-field get foo() core::Object?;
constructor = self::E12|constructor#;
constructor tearoff = self::E12|constructor#_#new#tearOff;
}
static extension-type-member method ExtensionType|constructor#<X extends core::Object? = dynamic>(core::Object? foo) → self::ExtensionType<self::ExtensionType|constructor#::X%>% /* erasure=core::Object?, declared=! */ {
lowered final self::ExtensionType<self::ExtensionType|constructor#::X%>% /* erasure=core::Object?, declared=! */ #this = foo;
return #this;
}
static extension-type-member method ExtensionType|constructor#_#new#tearOff<X extends core::Object? = dynamic>(core::Object? foo) → self::ExtensionType<self::ExtensionType|constructor#_#new#tearOff::X%>% /* erasure=core::Object?, declared=! */
return self::ExtensionType|constructor#<self::ExtensionType|constructor#_#new#tearOff::X%>(foo);
static extension-type-member method E1|constructor#<X extends core::Object? = dynamic>(self::Class<Never> foo) → self::E1<self::E1|constructor#::X%> /* erasure=self::Class<Never> */ {
lowered final self::E1<self::E1|constructor#::X%> /* erasure=self::Class<Never> */ #this = foo;
return #this;
}
static extension-type-member method E1|constructor#_#new#tearOff<X extends core::Object? = dynamic>(self::Class<Never> foo) → self::E1<self::E1|constructor#_#new#tearOff::X%> /* erasure=self::Class<Never> */
return self::E1|constructor#<self::E1|constructor#_#new#tearOff::X%>(foo);
static extension-type-member method E2|constructor#<X extends core::Object? = dynamic>(self::Class<Never> foo) → self::E2<self::E2|constructor#::X%> /* erasure=self::Class<Never> */ {
lowered final self::E2<self::E2|constructor#::X%> /* erasure=self::Class<Never> */ #this = foo;
return #this;
}
static extension-type-member method E2|constructor#_#new#tearOff<X extends core::Object? = dynamic>(self::Class<Never> foo) → self::E2<self::E2|constructor#_#new#tearOff::X%> /* erasure=self::Class<Never> */
return self::E2|constructor#<self::E2|constructor#_#new#tearOff::X%>(foo);
static extension-type-member method E3|constructor#<X extends core::Object? = dynamic>(self::Class<Never> foo) → self::E3<self::E3|constructor#::X%> /* erasure=self::Class<Never> */ {
lowered final self::E3<self::E3|constructor#::X%> /* erasure=self::Class<Never> */ #this = foo;
return #this;
}
static extension-type-member method E3|constructor#_#new#tearOff<X extends core::Object? = dynamic>(self::Class<Never> foo) → self::E3<self::E3|constructor#_#new#tearOff::X%> /* erasure=self::Class<Never> */
return self::E3|constructor#<self::E3|constructor#_#new#tearOff::X%>(foo);
static extension-type-member method E4|constructor#<X extends core::Object? = dynamic>(self::Class<Never> foo) → self::E4<self::E4|constructor#::X%> /* erasure=self::Class<Never> */ {
lowered final self::E4<self::E4|constructor#::X%> /* erasure=self::Class<Never> */ #this = foo;
return #this;
}
static extension-type-member method E4|constructor#_#new#tearOff<X extends core::Object? = dynamic>(self::Class<Never> foo) → self::E4<self::E4|constructor#_#new#tearOff::X%> /* erasure=self::Class<Never> */
return self::E4|constructor#<self::E4|constructor#_#new#tearOff::X%>(foo);
static extension-type-member method E5|constructor#<X extends core::Object? = dynamic>(self::Class<Never> foo) → self::E5<self::E5|constructor#::X%> /* erasure=self::Class<Never> */ {
lowered final self::E5<self::E5|constructor#::X%> /* erasure=self::Class<Never> */ #this = foo;
return #this;
}
static extension-type-member method E5|constructor#_#new#tearOff<X extends core::Object? = dynamic>(self::Class<Never> foo) → self::E5<self::E5|constructor#_#new#tearOff::X%> /* erasure=self::Class<Never> */
return self::E5|constructor#<self::E5|constructor#_#new#tearOff::X%>(foo);
static extension-type-member method E6|constructor#<X extends core::Object? = dynamic>(self::Class<Never> foo) → self::E6<self::E6|constructor#::X%> /* erasure=self::Class<Never> */ {
lowered final self::E6<self::E6|constructor#::X%> /* erasure=self::Class<Never> */ #this = foo;
return #this;
}
static extension-type-member method E6|constructor#_#new#tearOff<X extends core::Object? = dynamic>(self::Class<Never> foo) → self::E6<self::E6|constructor#_#new#tearOff::X%> /* erasure=self::Class<Never> */
return self::E6|constructor#<self::E6|constructor#_#new#tearOff::X%>(foo);
static extension-type-member method E7|constructor#<X extends core::Object? = dynamic>(core::Object? foo) → self::E7<self::E7|constructor#::X%>% /* erasure=core::Object?, declared=! */ {
lowered final self::E7<self::E7|constructor#::X%>% /* erasure=core::Object?, declared=! */ #this = foo;
return #this;
}
static extension-type-member method E7|constructor#_#new#tearOff<X extends core::Object? = dynamic>(core::Object? foo) → self::E7<self::E7|constructor#_#new#tearOff::X%>% /* erasure=core::Object?, declared=! */
return self::E7|constructor#<self::E7|constructor#_#new#tearOff::X%>(foo);
static extension-type-member method E8|constructor#<X extends core::Object? = dynamic>(core::Object? foo) → self::E8<self::E8|constructor#::X%>% /* erasure=core::Object?, declared=! */ {
lowered final self::E8<self::E8|constructor#::X%>% /* erasure=core::Object?, declared=! */ #this = foo;
return #this;
}
static extension-type-member method E8|constructor#_#new#tearOff<X extends core::Object? = dynamic>(core::Object? foo) → self::E8<self::E8|constructor#_#new#tearOff::X%>% /* erasure=core::Object?, declared=! */
return self::E8|constructor#<self::E8|constructor#_#new#tearOff::X%>(foo);
static extension-type-member method E9|constructor#<X extends core::Object? = dynamic>(core::Object? foo) → self::E9<self::E9|constructor#::X%>% /* erasure=core::Object?, declared=! */ {
lowered final self::E9<self::E9|constructor#::X%>% /* erasure=core::Object?, declared=! */ #this = foo;
return #this;
}
static extension-type-member method E9|constructor#_#new#tearOff<X extends core::Object? = dynamic>(core::Object? foo) → self::E9<self::E9|constructor#_#new#tearOff::X%>% /* erasure=core::Object?, declared=! */
return self::E9|constructor#<self::E9|constructor#_#new#tearOff::X%>(foo);
static extension-type-member method E10|constructor#<X extends core::Object? = dynamic>(core::Object? foo) → self::E10<self::E10|constructor#::X%>% /* erasure=core::Object?, declared=! */ {
lowered final self::E10<self::E10|constructor#::X%>% /* erasure=core::Object?, declared=! */ #this = foo;
return #this;
}
static extension-type-member method E10|constructor#_#new#tearOff<X extends core::Object? = dynamic>(core::Object? foo) → self::E10<self::E10|constructor#_#new#tearOff::X%>% /* erasure=core::Object?, declared=! */
return self::E10|constructor#<self::E10|constructor#_#new#tearOff::X%>(foo);
static extension-type-member method E11|constructor#<X extends core::Object? = dynamic>(core::Object? foo) → self::E11<self::E11|constructor#::X%>% /* erasure=core::Object?, declared=! */ {
lowered final self::E11<self::E11|constructor#::X%>% /* erasure=core::Object?, declared=! */ #this = foo;
return #this;
}
static extension-type-member method E11|constructor#_#new#tearOff<X extends core::Object? = dynamic>(core::Object? foo) → self::E11<self::E11|constructor#_#new#tearOff::X%>% /* erasure=core::Object?, declared=! */
return self::E11|constructor#<self::E11|constructor#_#new#tearOff::X%>(foo);
static extension-type-member method E12|constructor#<X extends core::Object? = dynamic>(core::Object? foo) → self::E12<self::E12|constructor#::X%>% /* erasure=core::Object?, declared=! */ {
lowered final self::E12<self::E12|constructor#::X%>% /* erasure=core::Object?, declared=! */ #this = foo;
return #this;
}
static extension-type-member method E12|constructor#_#new#tearOff<X extends core::Object? = dynamic>(core::Object? foo) → self::E12<self::E12|constructor#_#new#tearOff::X%>% /* erasure=core::Object?, declared=! */
return self::E12|constructor#<self::E12|constructor#_#new#tearOff::X%>(foo);