From 6830cafbff96fe2f80e4b2cf4ab97e3a5133df73 Mon Sep 17 00:00:00 2001 From: Johnni Winther Date: Fri, 10 Nov 2023 13:48:25 +0000 Subject: [PATCH] [cfe] Add test for issue 53607 Closes #53607 Change-Id: I5b636d11c65b7fc9ef77a0dccbc4b44090112024 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/335466 Reviewed-by: Jens Johansen Commit-Queue: Johnni Winther --- .../testcases/extension_types/issue53607.dart | 15 ++++++++ .../issue53607.dart.strong.expect | 35 +++++++++++++++++++ .../issue53607.dart.strong.transformed.expect | 35 +++++++++++++++++++ .../issue53607.dart.textual_outline.expect | 6 ++++ ...53607.dart.textual_outline_modelled.expect | 6 ++++ .../issue53607.dart.weak.expect | 35 +++++++++++++++++++ .../issue53607.dart.weak.modular.expect | 35 +++++++++++++++++++ .../issue53607.dart.weak.outline.expect | 27 ++++++++++++++ .../issue53607.dart.weak.transformed.expect | 35 +++++++++++++++++++ 9 files changed, 229 insertions(+) create mode 100644 pkg/front_end/testcases/extension_types/issue53607.dart create mode 100644 pkg/front_end/testcases/extension_types/issue53607.dart.strong.expect create mode 100644 pkg/front_end/testcases/extension_types/issue53607.dart.strong.transformed.expect create mode 100644 pkg/front_end/testcases/extension_types/issue53607.dart.textual_outline.expect create mode 100644 pkg/front_end/testcases/extension_types/issue53607.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/extension_types/issue53607.dart.weak.expect create mode 100644 pkg/front_end/testcases/extension_types/issue53607.dart.weak.modular.expect create mode 100644 pkg/front_end/testcases/extension_types/issue53607.dart.weak.outline.expect create mode 100644 pkg/front_end/testcases/extension_types/issue53607.dart.weak.transformed.expect 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)); +}