[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 <jensj@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
This commit is contained in:
Johnni Winther
2023-11-10 13:48:25 +00:00
committed by Commit Queue
parent e15806ae42
commit 6830cafbff
9 changed files with 229 additions and 0 deletions
@@ -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);
}
@@ -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));
}
@@ -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));
}
@@ -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() {}
@@ -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() {}
@@ -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));
}
@@ -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));
}
@@ -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
;
@@ -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));
}