blob: 2b7c24c5fc6bba7f80f5f41f9e9d1e236085aac8 [file] [log] [blame]
library;
//
// Problems in library:
//
// pkg/front_end/testcases/extension_types/issue53324.dart:5:13: Error: Can't have modifier 'covariant' here.
// Try removing 'covariant'.
// void method(covariant int i) /* Error */ {}
// ^^^^^^^^^
//
// pkg/front_end/testcases/extension_types/issue53324.dart:6:13: Error: Can't have modifier 'covariant' here.
// Try removing 'covariant'.
// void setter(covariant int x) /* Error */ {}
// ^^^^^^^^^
//
// pkg/front_end/testcases/extension_types/issue53324.dart:9:15: Error: Can't have modifier 'covariant' in an extension type.
// Try removing 'covariant'.
// void method(covariant int i) /* Error */ {}
// ^^^^^^^^^
//
// pkg/front_end/testcases/extension_types/issue53324.dart:13:15: Error: Can't have modifier 'covariant' in an extension type.
// Try removing 'covariant'.
// void setter(covariant int x) /* Error */ {}
// ^^^^^^^^^
//
// pkg/front_end/testcases/extension_types/issue53324.dart:17:18: Error: Can't have modifier 'covariant' in an extension type.
// Try removing 'covariant'.
// int operator +(covariant int other) /* Error */ => other + id.floor();
// ^^^^^^^^^
//
// pkg/front_end/testcases/extension_types/issue53324.dart:20:20: Error: Can't have modifier 'covariant' in a primary constructor.
// Try removing 'covariant'.
// extension type ET4(covariant num id) /* Error */ {}
// ^^^^^^^^^
//
// pkg/front_end/testcases/extension_types/issue53324.dart:22:20: Error: Can't have modifier 'required' here.
// Try removing 'required'.
// extension type ET5(required num id) /* Error */ {}
// ^^^^^^^^
//
import self as self;
import "dart:core" as core;
extension type ET1(core::num id) {
abstract extension-type-member representation-field get id() core::num;
method method = self::ET1|method;
method tearoff method = self::ET1|get#method;
constructor = self::ET1|constructor#;
constructor tearoff = self::ET1|constructor#_#new#tearOff;
}
extension type ET2<T extends core::num>(T id) {
abstract extension-type-member representation-field get id() T;
method setter = self::ET2|setter;
method tearoff setter = self::ET2|get#setter;
constructor = self::ET2|constructor#;
constructor tearoff = self::ET2|constructor#_#new#tearOff;
}
extension type ET3(core::num id) {
abstract extension-type-member representation-field get id() core::num;
operator + = self::ET3|+;
constructor = self::ET3|constructor#;
constructor tearoff = self::ET3|constructor#_#new#tearOff;
}
extension type ET4(core::num id) {
abstract extension-type-member representation-field get id() core::num;
constructor = self::ET4|constructor#;
constructor tearoff = self::ET4|constructor#_#new#tearOff;
}
extension type ET5(core::num id) {
abstract extension-type-member representation-field get id() core::num;
constructor = self::ET5|constructor#;
constructor tearoff = self::ET5|constructor#_#new#tearOff;
}
static method method(covariant-by-declaration core::int i) void {}
static method setter(covariant-by-declaration core::int x) void {}
static extension-type-member method ET1|constructor#(core::num id) → self::ET1% /* erasure=core::num, declared=! */ {
lowered final self::ET1% /* erasure=core::num, declared=! */ #this = id;
return #this;
}
static extension-type-member method ET1|constructor#_#new#tearOff(core::num id) → self::ET1% /* erasure=core::num, declared=! */
return self::ET1|constructor#(id);
static extension-type-member method ET1|method(lowered final self::ET1% /* erasure=core::num, declared=! */ #this, covariant-by-declaration core::int i) → void {}
static extension-type-member method ET1|get#method(lowered final self::ET1% /* erasure=core::num, declared=! */ #this) → (core::int) → void
return (core::int i) void => self::ET1|method(#this, i);
static extension-type-member method ET2|constructor#<T extends core::num>(self::ET2|constructor#::T id) → self::ET2<self::ET2|constructor#::T>% /* erasure=self::ET2|constructor#::T, declared=! */ {
lowered final self::ET2<self::ET2|constructor#::T>% /* erasure=self::ET2|constructor#::T, declared=! */ #this = id;
return #this;
}
static extension-type-member method ET2|constructor#_#new#tearOff<T extends core::num>(self::ET2|constructor#_#new#tearOff::T id) → self::ET2<self::ET2|constructor#_#new#tearOff::T>% /* erasure=self::ET2|constructor#_#new#tearOff::T, declared=! */
return self::ET2|constructor#<self::ET2|constructor#_#new#tearOff::T>(id);
static extension-type-member method ET2|setter<T extends core::num>(lowered final self::ET2<self::ET2|setter::T>% /* erasure=self::ET2|setter::T, declared=! */ #this, covariant-by-declaration core::int x) → void {}
static extension-type-member method ET2|get#setter<T extends core::num>(lowered final self::ET2<self::ET2|get#setter::T>% /* erasure=self::ET2|get#setter::T, declared=! */ #this) → (core::int) → void
return (core::int x) void => self::ET2|setter<self::ET2|get#setter::T>(#this, x);
static extension-type-member method ET3|constructor#(core::num id) → self::ET3% /* erasure=core::num, declared=! */ {
lowered final self::ET3% /* erasure=core::num, declared=! */ #this = id;
return #this;
}
static extension-type-member method ET3|constructor#_#new#tearOff(core::num id) → self::ET3% /* erasure=core::num, declared=! */
return self::ET3|constructor#(id);
static extension-type-member method ET3|+(lowered final self::ET3% /* erasure=core::num, declared=! */ #this, covariant-by-declaration core::int other) → core::int
return other.{core::num::+}((#this as{Unchecked} core::num).{core::num::floor}(){() core::int}){(core::num) core::int};
static extension-type-member method ET4|constructor#(covariant-by-declaration core::num id) → self::ET4% /* erasure=core::num, declared=! */ {
lowered final self::ET4% /* erasure=core::num, declared=! */ #this = id;
return #this;
}
static extension-type-member method ET4|constructor#_#new#tearOff(core::num id) → self::ET4% /* erasure=core::num, declared=! */
return self::ET4|constructor#(id);
static extension-type-member method ET5|constructor#(core::num id) → self::ET5% /* erasure=core::num, declared=! */ {
lowered final self::ET5% /* erasure=core::num, declared=! */ #this = id;
return #this;
}
static extension-type-member method ET5|constructor#_#new#tearOff(core::num id) → self::ET5% /* erasure=core::num, declared=! */
return self::ET5|constructor#(id);