diff --git a/pkg/front_end/testcases/extension_types/issue53607.dart b/pkg/front_end/testcases/extension_types/issue53607.dart new file mode 100644 index 00000000000..0b974033aa0 --- /dev/null +++ b/pkg/front_end/testcases/extension_types/issue53607.dart @@ -0,0 +1,15 @@ +// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by b +// BSD-style license that can be found in the LICENSE file. + +extension type E._(int i) { + E.foo(int i) : this._(i); + int get value => i; + int get foo => i; +} + +void main() { + E e = E.foo(1); + print(e.value); + print(e.foo); +} \ No newline at end of file diff --git a/pkg/front_end/testcases/extension_types/issue53607.dart.strong.expect b/pkg/front_end/testcases/extension_types/issue53607.dart.strong.expect new file mode 100644 index 00000000000..e3ec4ac1774 --- /dev/null +++ b/pkg/front_end/testcases/extension_types/issue53607.dart.strong.expect @@ -0,0 +1,35 @@ +library; +import self as self; +import "dart:core" as core; + +extension type E(core::int i) { + abstract extension-type-member representation-field get i() → core::int; + get value = self::E|get#value; + get foo = self::E|get#foo; + constructor _ = self::E|constructor#_; + constructor tearoff _ = self::E|constructor#_#_#tearOff; + constructor foo = self::E|constructor#foo; + constructor tearoff foo = self::E|constructor#_#foo#tearOff; +} +static extension-type-member method E|constructor#_(core::int i) → self::E /* = core::int */ { + lowered final self::E /* = core::int */ #this = i; + return #this; +} +static extension-type-member method E|constructor#_#_#tearOff(core::int i) → self::E /* = core::int */ + return self::E|constructor#_(i); +static extension-type-member method E|constructor#foo(core::int i) → self::E /* = core::int */ { + lowered final self::E /* = core::int */ #this; + #this = self::E|constructor#_(i); + return #this; +} +static extension-type-member method E|constructor#_#foo#tearOff(core::int i) → self::E /* = core::int */ + return self::E|constructor#foo(i); +static extension-type-member method E|get#value(lowered final self::E /* = core::int */ #this) → core::int + return #this as{Unchecked} core::int; +static extension-type-member method E|get#foo(lowered final self::E /* = core::int */ #this) → core::int + return #this as{Unchecked} core::int; +static method main() → void { + self::E /* = core::int */ e = self::E|constructor#foo(1); + core::print(self::E|get#value(e)); + core::print(self::E|get#foo(e)); +} diff --git a/pkg/front_end/testcases/extension_types/issue53607.dart.strong.transformed.expect b/pkg/front_end/testcases/extension_types/issue53607.dart.strong.transformed.expect new file mode 100644 index 00000000000..e3ec4ac1774 --- /dev/null +++ b/pkg/front_end/testcases/extension_types/issue53607.dart.strong.transformed.expect @@ -0,0 +1,35 @@ +library; +import self as self; +import "dart:core" as core; + +extension type E(core::int i) { + abstract extension-type-member representation-field get i() → core::int; + get value = self::E|get#value; + get foo = self::E|get#foo; + constructor _ = self::E|constructor#_; + constructor tearoff _ = self::E|constructor#_#_#tearOff; + constructor foo = self::E|constructor#foo; + constructor tearoff foo = self::E|constructor#_#foo#tearOff; +} +static extension-type-member method E|constructor#_(core::int i) → self::E /* = core::int */ { + lowered final self::E /* = core::int */ #this = i; + return #this; +} +static extension-type-member method E|constructor#_#_#tearOff(core::int i) → self::E /* = core::int */ + return self::E|constructor#_(i); +static extension-type-member method E|constructor#foo(core::int i) → self::E /* = core::int */ { + lowered final self::E /* = core::int */ #this; + #this = self::E|constructor#_(i); + return #this; +} +static extension-type-member method E|constructor#_#foo#tearOff(core::int i) → self::E /* = core::int */ + return self::E|constructor#foo(i); +static extension-type-member method E|get#value(lowered final self::E /* = core::int */ #this) → core::int + return #this as{Unchecked} core::int; +static extension-type-member method E|get#foo(lowered final self::E /* = core::int */ #this) → core::int + return #this as{Unchecked} core::int; +static method main() → void { + self::E /* = core::int */ e = self::E|constructor#foo(1); + core::print(self::E|get#value(e)); + core::print(self::E|get#foo(e)); +} diff --git a/pkg/front_end/testcases/extension_types/issue53607.dart.textual_outline.expect b/pkg/front_end/testcases/extension_types/issue53607.dart.textual_outline.expect new file mode 100644 index 00000000000..6a26370aef2 --- /dev/null +++ b/pkg/front_end/testcases/extension_types/issue53607.dart.textual_outline.expect @@ -0,0 +1,6 @@ +extension type E._(int i) { + E.foo(int i) : this._(i); + int get value => i; + int get foo => i; +} +void main() {} diff --git a/pkg/front_end/testcases/extension_types/issue53607.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extension_types/issue53607.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..539961359ed --- /dev/null +++ b/pkg/front_end/testcases/extension_types/issue53607.dart.textual_outline_modelled.expect @@ -0,0 +1,6 @@ +extension type E._(int i) { + E.foo(int i) : this._(i); + int get foo => i; + int get value => i; +} +void main() {} diff --git a/pkg/front_end/testcases/extension_types/issue53607.dart.weak.expect b/pkg/front_end/testcases/extension_types/issue53607.dart.weak.expect new file mode 100644 index 00000000000..e3ec4ac1774 --- /dev/null +++ b/pkg/front_end/testcases/extension_types/issue53607.dart.weak.expect @@ -0,0 +1,35 @@ +library; +import self as self; +import "dart:core" as core; + +extension type E(core::int i) { + abstract extension-type-member representation-field get i() → core::int; + get value = self::E|get#value; + get foo = self::E|get#foo; + constructor _ = self::E|constructor#_; + constructor tearoff _ = self::E|constructor#_#_#tearOff; + constructor foo = self::E|constructor#foo; + constructor tearoff foo = self::E|constructor#_#foo#tearOff; +} +static extension-type-member method E|constructor#_(core::int i) → self::E /* = core::int */ { + lowered final self::E /* = core::int */ #this = i; + return #this; +} +static extension-type-member method E|constructor#_#_#tearOff(core::int i) → self::E /* = core::int */ + return self::E|constructor#_(i); +static extension-type-member method E|constructor#foo(core::int i) → self::E /* = core::int */ { + lowered final self::E /* = core::int */ #this; + #this = self::E|constructor#_(i); + return #this; +} +static extension-type-member method E|constructor#_#foo#tearOff(core::int i) → self::E /* = core::int */ + return self::E|constructor#foo(i); +static extension-type-member method E|get#value(lowered final self::E /* = core::int */ #this) → core::int + return #this as{Unchecked} core::int; +static extension-type-member method E|get#foo(lowered final self::E /* = core::int */ #this) → core::int + return #this as{Unchecked} core::int; +static method main() → void { + self::E /* = core::int */ e = self::E|constructor#foo(1); + core::print(self::E|get#value(e)); + core::print(self::E|get#foo(e)); +} diff --git a/pkg/front_end/testcases/extension_types/issue53607.dart.weak.modular.expect b/pkg/front_end/testcases/extension_types/issue53607.dart.weak.modular.expect new file mode 100644 index 00000000000..e3ec4ac1774 --- /dev/null +++ b/pkg/front_end/testcases/extension_types/issue53607.dart.weak.modular.expect @@ -0,0 +1,35 @@ +library; +import self as self; +import "dart:core" as core; + +extension type E(core::int i) { + abstract extension-type-member representation-field get i() → core::int; + get value = self::E|get#value; + get foo = self::E|get#foo; + constructor _ = self::E|constructor#_; + constructor tearoff _ = self::E|constructor#_#_#tearOff; + constructor foo = self::E|constructor#foo; + constructor tearoff foo = self::E|constructor#_#foo#tearOff; +} +static extension-type-member method E|constructor#_(core::int i) → self::E /* = core::int */ { + lowered final self::E /* = core::int */ #this = i; + return #this; +} +static extension-type-member method E|constructor#_#_#tearOff(core::int i) → self::E /* = core::int */ + return self::E|constructor#_(i); +static extension-type-member method E|constructor#foo(core::int i) → self::E /* = core::int */ { + lowered final self::E /* = core::int */ #this; + #this = self::E|constructor#_(i); + return #this; +} +static extension-type-member method E|constructor#_#foo#tearOff(core::int i) → self::E /* = core::int */ + return self::E|constructor#foo(i); +static extension-type-member method E|get#value(lowered final self::E /* = core::int */ #this) → core::int + return #this as{Unchecked} core::int; +static extension-type-member method E|get#foo(lowered final self::E /* = core::int */ #this) → core::int + return #this as{Unchecked} core::int; +static method main() → void { + self::E /* = core::int */ e = self::E|constructor#foo(1); + core::print(self::E|get#value(e)); + core::print(self::E|get#foo(e)); +} diff --git a/pkg/front_end/testcases/extension_types/issue53607.dart.weak.outline.expect b/pkg/front_end/testcases/extension_types/issue53607.dart.weak.outline.expect new file mode 100644 index 00000000000..b354b09846f --- /dev/null +++ b/pkg/front_end/testcases/extension_types/issue53607.dart.weak.outline.expect @@ -0,0 +1,27 @@ +library; +import self as self; +import "dart:core" as core; + +extension type E(core::int i) { + abstract extension-type-member representation-field get i() → core::int; + get value = self::E|get#value; + get foo = self::E|get#foo; + constructor _ = self::E|constructor#_; + constructor tearoff _ = self::E|constructor#_#_#tearOff; + constructor foo = self::E|constructor#foo; + constructor tearoff foo = self::E|constructor#_#foo#tearOff; +} +static extension-type-member method E|constructor#_(core::int i) → self::E /* = core::int */ + ; +static extension-type-member method E|constructor#_#_#tearOff(core::int i) → self::E /* = core::int */ + return self::E|constructor#_(i); +static extension-type-member method E|constructor#foo(core::int i) → self::E /* = core::int */ + ; +static extension-type-member method E|constructor#_#foo#tearOff(core::int i) → self::E /* = core::int */ + return self::E|constructor#foo(i); +static extension-type-member method E|get#value(lowered final self::E /* = core::int */ #this) → core::int + ; +static extension-type-member method E|get#foo(lowered final self::E /* = core::int */ #this) → core::int + ; +static method main() → void + ; diff --git a/pkg/front_end/testcases/extension_types/issue53607.dart.weak.transformed.expect b/pkg/front_end/testcases/extension_types/issue53607.dart.weak.transformed.expect new file mode 100644 index 00000000000..e3ec4ac1774 --- /dev/null +++ b/pkg/front_end/testcases/extension_types/issue53607.dart.weak.transformed.expect @@ -0,0 +1,35 @@ +library; +import self as self; +import "dart:core" as core; + +extension type E(core::int i) { + abstract extension-type-member representation-field get i() → core::int; + get value = self::E|get#value; + get foo = self::E|get#foo; + constructor _ = self::E|constructor#_; + constructor tearoff _ = self::E|constructor#_#_#tearOff; + constructor foo = self::E|constructor#foo; + constructor tearoff foo = self::E|constructor#_#foo#tearOff; +} +static extension-type-member method E|constructor#_(core::int i) → self::E /* = core::int */ { + lowered final self::E /* = core::int */ #this = i; + return #this; +} +static extension-type-member method E|constructor#_#_#tearOff(core::int i) → self::E /* = core::int */ + return self::E|constructor#_(i); +static extension-type-member method E|constructor#foo(core::int i) → self::E /* = core::int */ { + lowered final self::E /* = core::int */ #this; + #this = self::E|constructor#_(i); + return #this; +} +static extension-type-member method E|constructor#_#foo#tearOff(core::int i) → self::E /* = core::int */ + return self::E|constructor#foo(i); +static extension-type-member method E|get#value(lowered final self::E /* = core::int */ #this) → core::int + return #this as{Unchecked} core::int; +static extension-type-member method E|get#foo(lowered final self::E /* = core::int */ #this) → core::int + return #this as{Unchecked} core::int; +static method main() → void { + self::E /* = core::int */ e = self::E|constructor#foo(1); + core::print(self::E|get#value(e)); + core::print(self::E|get#foo(e)); +}