Add regression test for CFE extension type bug.
Bug: https://dartbug.com/53607
Change-Id: I4db4ac2354dac96174207f9b59c066ec0ff5f140
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/327861
Reviewed-by: Erik Ernst <eernst@google.com>
Commit-Queue: Lasse Nielsen <lrn@google.com>
diff --git a/tests/language/extension_type/regress_53607_test.dart b/tests/language/extension_type/regress_53607_test.dart
new file mode 100644
index 0000000..30eebe1
--- /dev/null
+++ b/tests/language/extension_type/regress_53607_test.dart
@@ -0,0 +1,76 @@
+// 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 a
+// BSD-style license that can be found in the LICENSE file.
+
+// SharedOptions=--enable-experiment=inline-class
+
+// Test for issue https://github.com/dart-lang/sdk/issues/53607
+
+// All kinds of named constructors, including a primary constructor,
+// and getters "conflicting" with them.
+extension type const Ext1.name0(int i) {
+ Ext1.name1(this.i);
+ Ext1.name2(int i): this.name0(i);
+ factory Ext1.name3(int i) = Ext1.name0;
+ factory Ext1.name4(int i) => Ext1.name0(i);
+
+ const Ext1.name5(this.i);
+ const Ext1.name6(int i): this.name0(i);
+ const factory Ext1.name7(int i) = Ext1.name0;
+
+ int get name0 => i;
+ int get name1 => i;
+ int get name2 => i;
+ int get name3 => i;
+ int get name4 => i;
+ int get name5 => i;
+ int get name6 => i;
+ int get name7 => i;
+}
+
+class C {
+ int get name3 => 0;
+ set name4(int i) {}
+ int name5() => 0;
+}
+
+// Other instance members with same name as constructors,
+// both extension and interface members.
+extension type const Ext2.name0(C _) implements C {
+ Ext2.name1(): this.name0(C());
+ Ext2.name2(): this.name0(C());
+ Ext2.name3(): this.name0(C());
+ Ext2.name4(): this.name0(C());
+ Ext2.name5(): this.name0(C());
+
+ int get name0 => 0;
+ set name1(int i) {}
+ int name2() => 0;
+}
+
+
+void main() {
+ Ext1 e = Ext1.name0(0);
+ var res = [
+ e.name0,
+ e.name1,
+ e.name2,
+ e.name3,
+ e.name4,
+ e.name5,
+ e.name6,
+ e.name7,
+ ];
+ if (res.length != 8) throw AssertionError("Sanity check failed");
+
+ Ext2 c = Ext2.name0(C());
+ var res2 = [
+ c.name0,
+ c.name1 = 0,
+ c.name2(),
+ c.name3,
+ c.name4 = 0,
+ c.name5(),
+ ];
+ if (res2.length != 6) throw AssertionError("Sanity check failed");
+}