[cfe] Add tests for issue 53172

Closes https://github.com/dart-lang/sdk/issues/53172

Change-Id: I95a39a1fd6e5701f21b92cca3d63a7948ae79690
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/341661
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Auto-Submit: Chloe Stefantsova <cstefantsova@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Chloe Stefantsova <cstefantsova@google.com>
This commit is contained in:
Chloe Stefantsova
2023-12-14 12:10:53 +00:00
committed by Commit Queue
parent 3a8698a62c
commit 931c6af820
9 changed files with 1018 additions and 0 deletions
@@ -0,0 +1,33 @@
// 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.
extension type E11(num it) {
void foo() {}
}
extension type E12(num it) {
void set foo(String value) {}
}
extension type E13(num it) implements E11, E12 {} /* Error */
extension type E21(bool it) {
void bar() {}
}
extension type E22(bool it) {
void bar() {}
}
extension type E23(bool it) implements E21, E22 {} /* Error */
extension type E31(String it) {
void baz() {}
}
extension type E32(String it) implements E31 {}
extension type E33(String it) implements E31 {}
extension type E34(String it) implements E32, E33 {} /* Ok */
@@ -0,0 +1,160 @@
library;
//
// Problems in library:
//
// pkg/front_end/testcases/extension_types/issue53172.dart:13:16: Error: Can't inherit members that conflict with each other.
// extension type E13(num it) implements E11, E12 {} /* Error */
// ^^^
// pkg/front_end/testcases/extension_types/issue53172.dart:6:8: Context: This is one inherited member.
// void foo() {}
// ^^^
// pkg/front_end/testcases/extension_types/issue53172.dart:10:12: Context: This is the other inherited member.
// void set foo(String value) {}
// ^^^
//
// pkg/front_end/testcases/extension_types/issue53172.dart:23:16: Error: The extension type 'E23' can't inherit the member 'bar' from more than one extension type.
// Try declaring a member 'bar' in 'E23' to resolve the conflict.
// extension type E23(bool it) implements E21, E22 {} /* Error */
// ^^^
// pkg/front_end/testcases/extension_types/issue53172.dart:16:8: Context: This is one of the inherited extension type members.
// void bar() {}
// ^^^
// pkg/front_end/testcases/extension_types/issue53172.dart:20:8: Context: This is one of the inherited extension type members.
// void bar() {}
// ^^^
//
import self as self;
import "dart:core" as core;
extension type E11(core::num it) {
abstract extension-type-member representation-field get it() → core::num;
method foo = self::E11|foo;
method tearoff foo = self::E11|get#foo;
constructor • = self::E11|constructor#;
constructor tearoff • = self::E11|constructor#_#new#tearOff;
}
extension type E12(core::num it) {
abstract extension-type-member representation-field get it() → core::num;
set foo = self::E12|set#foo;
constructor • = self::E12|constructor#;
constructor tearoff • = self::E12|constructor#_#new#tearOff;
}
extension type E13(core::num it) implements self::E11 /* = core::num */, self::E12 /* = core::num */ {
abstract extension-type-member representation-field get it() → core::num;
constructor • = self::E13|constructor#;
constructor tearoff • = self::E13|constructor#_#new#tearOff;
}
extension type E21(core::bool it) {
abstract extension-type-member representation-field get it() → core::bool;
method bar = self::E21|bar;
method tearoff bar = self::E21|get#bar;
constructor • = self::E21|constructor#;
constructor tearoff • = self::E21|constructor#_#new#tearOff;
}
extension type E22(core::bool it) {
abstract extension-type-member representation-field get it() → core::bool;
method bar = self::E22|bar;
method tearoff bar = self::E22|get#bar;
constructor • = self::E22|constructor#;
constructor tearoff • = self::E22|constructor#_#new#tearOff;
}
extension type E23(core::bool it) implements self::E21 /* = core::bool */, self::E22 /* = core::bool */ {
abstract extension-type-member representation-field get it() → core::bool;
constructor • = self::E23|constructor#;
constructor tearoff • = self::E23|constructor#_#new#tearOff;
}
extension type E31(core::String it) {
abstract extension-type-member representation-field get it() → core::String;
method baz = self::E31|baz;
method tearoff baz = self::E31|get#baz;
constructor • = self::E31|constructor#;
constructor tearoff • = self::E31|constructor#_#new#tearOff;
}
extension type E32(core::String it) implements self::E31 /* = core::String */ {
abstract extension-type-member representation-field get it() → core::String;
constructor • = self::E32|constructor#;
constructor tearoff • = self::E32|constructor#_#new#tearOff;
}
extension type E33(core::String it) implements self::E31 /* = core::String */ {
abstract extension-type-member representation-field get it() → core::String;
constructor • = self::E33|constructor#;
constructor tearoff • = self::E33|constructor#_#new#tearOff;
}
extension type E34(core::String it) implements self::E32 /* = core::String */, self::E33 /* = core::String */ {
abstract extension-type-member representation-field get it() → core::String;
constructor • = self::E34|constructor#;
constructor tearoff • = self::E34|constructor#_#new#tearOff;
}
static extension-type-member method E11|constructor#(core::num it) → self::E11 /* = core::num */ {
lowered final self::E11 /* = core::num */ #this = it;
return #this;
}
static extension-type-member method E11|constructor#_#new#tearOff(core::num it) → self::E11 /* = core::num */
return self::E11|constructor#(it);
static extension-type-member method E11|foo(lowered final self::E11 /* = core::num */ #this) → void {}
static extension-type-member method E11|get#foo(lowered final self::E11 /* = core::num */ #this) → () → void
return () → void => self::E11|foo(#this);
static extension-type-member method E12|constructor#(core::num it) → self::E12 /* = core::num */ {
lowered final self::E12 /* = core::num */ #this = it;
return #this;
}
static extension-type-member method E12|constructor#_#new#tearOff(core::num it) → self::E12 /* = core::num */
return self::E12|constructor#(it);
static extension-type-member method E12|set#foo(lowered final self::E12 /* = core::num */ #this, core::String value) → void {}
static extension-type-member method E13|constructor#(core::num it) → self::E13 /* = core::num */ {
lowered final self::E13 /* = core::num */ #this = it;
return #this;
}
static extension-type-member method E13|constructor#_#new#tearOff(core::num it) → self::E13 /* = core::num */
return self::E13|constructor#(it);
static extension-type-member method E21|constructor#(core::bool it) → self::E21 /* = core::bool */ {
lowered final self::E21 /* = core::bool */ #this = it;
return #this;
}
static extension-type-member method E21|constructor#_#new#tearOff(core::bool it) → self::E21 /* = core::bool */
return self::E21|constructor#(it);
static extension-type-member method E21|bar(lowered final self::E21 /* = core::bool */ #this) → void {}
static extension-type-member method E21|get#bar(lowered final self::E21 /* = core::bool */ #this) → () → void
return () → void => self::E21|bar(#this);
static extension-type-member method E22|constructor#(core::bool it) → self::E22 /* = core::bool */ {
lowered final self::E22 /* = core::bool */ #this = it;
return #this;
}
static extension-type-member method E22|constructor#_#new#tearOff(core::bool it) → self::E22 /* = core::bool */
return self::E22|constructor#(it);
static extension-type-member method E22|bar(lowered final self::E22 /* = core::bool */ #this) → void {}
static extension-type-member method E22|get#bar(lowered final self::E22 /* = core::bool */ #this) → () → void
return () → void => self::E22|bar(#this);
static extension-type-member method E23|constructor#(core::bool it) → self::E23 /* = core::bool */ {
lowered final self::E23 /* = core::bool */ #this = it;
return #this;
}
static extension-type-member method E23|constructor#_#new#tearOff(core::bool it) → self::E23 /* = core::bool */
return self::E23|constructor#(it);
static extension-type-member method E31|constructor#(core::String it) → self::E31 /* = core::String */ {
lowered final self::E31 /* = core::String */ #this = it;
return #this;
}
static extension-type-member method E31|constructor#_#new#tearOff(core::String it) → self::E31 /* = core::String */
return self::E31|constructor#(it);
static extension-type-member method E31|baz(lowered final self::E31 /* = core::String */ #this) → void {}
static extension-type-member method E31|get#baz(lowered final self::E31 /* = core::String */ #this) → () → void
return () → void => self::E31|baz(#this);
static extension-type-member method E32|constructor#(core::String it) → self::E32 /* = core::String */ {
lowered final self::E32 /* = core::String */ #this = it;
return #this;
}
static extension-type-member method E32|constructor#_#new#tearOff(core::String it) → self::E32 /* = core::String */
return self::E32|constructor#(it);
static extension-type-member method E33|constructor#(core::String it) → self::E33 /* = core::String */ {
lowered final self::E33 /* = core::String */ #this = it;
return #this;
}
static extension-type-member method E33|constructor#_#new#tearOff(core::String it) → self::E33 /* = core::String */
return self::E33|constructor#(it);
static extension-type-member method E34|constructor#(core::String it) → self::E34 /* = core::String */ {
lowered final self::E34 /* = core::String */ #this = it;
return #this;
}
static extension-type-member method E34|constructor#_#new#tearOff(core::String it) → self::E34 /* = core::String */
return self::E34|constructor#(it);
@@ -0,0 +1,160 @@
library;
//
// Problems in library:
//
// pkg/front_end/testcases/extension_types/issue53172.dart:13:16: Error: Can't inherit members that conflict with each other.
// extension type E13(num it) implements E11, E12 {} /* Error */
// ^^^
// pkg/front_end/testcases/extension_types/issue53172.dart:6:8: Context: This is one inherited member.
// void foo() {}
// ^^^
// pkg/front_end/testcases/extension_types/issue53172.dart:10:12: Context: This is the other inherited member.
// void set foo(String value) {}
// ^^^
//
// pkg/front_end/testcases/extension_types/issue53172.dart:23:16: Error: The extension type 'E23' can't inherit the member 'bar' from more than one extension type.
// Try declaring a member 'bar' in 'E23' to resolve the conflict.
// extension type E23(bool it) implements E21, E22 {} /* Error */
// ^^^
// pkg/front_end/testcases/extension_types/issue53172.dart:16:8: Context: This is one of the inherited extension type members.
// void bar() {}
// ^^^
// pkg/front_end/testcases/extension_types/issue53172.dart:20:8: Context: This is one of the inherited extension type members.
// void bar() {}
// ^^^
//
import self as self;
import "dart:core" as core;
extension type E11(core::num it) {
abstract extension-type-member representation-field get it() → core::num;
method foo = self::E11|foo;
method tearoff foo = self::E11|get#foo;
constructor • = self::E11|constructor#;
constructor tearoff • = self::E11|constructor#_#new#tearOff;
}
extension type E12(core::num it) {
abstract extension-type-member representation-field get it() → core::num;
set foo = self::E12|set#foo;
constructor • = self::E12|constructor#;
constructor tearoff • = self::E12|constructor#_#new#tearOff;
}
extension type E13(core::num it) implements self::E11 /* = core::num */, self::E12 /* = core::num */ {
abstract extension-type-member representation-field get it() → core::num;
constructor • = self::E13|constructor#;
constructor tearoff • = self::E13|constructor#_#new#tearOff;
}
extension type E21(core::bool it) {
abstract extension-type-member representation-field get it() → core::bool;
method bar = self::E21|bar;
method tearoff bar = self::E21|get#bar;
constructor • = self::E21|constructor#;
constructor tearoff • = self::E21|constructor#_#new#tearOff;
}
extension type E22(core::bool it) {
abstract extension-type-member representation-field get it() → core::bool;
method bar = self::E22|bar;
method tearoff bar = self::E22|get#bar;
constructor • = self::E22|constructor#;
constructor tearoff • = self::E22|constructor#_#new#tearOff;
}
extension type E23(core::bool it) implements self::E21 /* = core::bool */, self::E22 /* = core::bool */ {
abstract extension-type-member representation-field get it() → core::bool;
constructor • = self::E23|constructor#;
constructor tearoff • = self::E23|constructor#_#new#tearOff;
}
extension type E31(core::String it) {
abstract extension-type-member representation-field get it() → core::String;
method baz = self::E31|baz;
method tearoff baz = self::E31|get#baz;
constructor • = self::E31|constructor#;
constructor tearoff • = self::E31|constructor#_#new#tearOff;
}
extension type E32(core::String it) implements self::E31 /* = core::String */ {
abstract extension-type-member representation-field get it() → core::String;
constructor • = self::E32|constructor#;
constructor tearoff • = self::E32|constructor#_#new#tearOff;
}
extension type E33(core::String it) implements self::E31 /* = core::String */ {
abstract extension-type-member representation-field get it() → core::String;
constructor • = self::E33|constructor#;
constructor tearoff • = self::E33|constructor#_#new#tearOff;
}
extension type E34(core::String it) implements self::E32 /* = core::String */, self::E33 /* = core::String */ {
abstract extension-type-member representation-field get it() → core::String;
constructor • = self::E34|constructor#;
constructor tearoff • = self::E34|constructor#_#new#tearOff;
}
static extension-type-member method E11|constructor#(core::num it) → self::E11 /* = core::num */ {
lowered final self::E11 /* = core::num */ #this = it;
return #this;
}
static extension-type-member method E11|constructor#_#new#tearOff(core::num it) → self::E11 /* = core::num */
return self::E11|constructor#(it);
static extension-type-member method E11|foo(lowered final self::E11 /* = core::num */ #this) → void {}
static extension-type-member method E11|get#foo(lowered final self::E11 /* = core::num */ #this) → () → void
return () → void => self::E11|foo(#this);
static extension-type-member method E12|constructor#(core::num it) → self::E12 /* = core::num */ {
lowered final self::E12 /* = core::num */ #this = it;
return #this;
}
static extension-type-member method E12|constructor#_#new#tearOff(core::num it) → self::E12 /* = core::num */
return self::E12|constructor#(it);
static extension-type-member method E12|set#foo(lowered final self::E12 /* = core::num */ #this, core::String value) → void {}
static extension-type-member method E13|constructor#(core::num it) → self::E13 /* = core::num */ {
lowered final self::E13 /* = core::num */ #this = it;
return #this;
}
static extension-type-member method E13|constructor#_#new#tearOff(core::num it) → self::E13 /* = core::num */
return self::E13|constructor#(it);
static extension-type-member method E21|constructor#(core::bool it) → self::E21 /* = core::bool */ {
lowered final self::E21 /* = core::bool */ #this = it;
return #this;
}
static extension-type-member method E21|constructor#_#new#tearOff(core::bool it) → self::E21 /* = core::bool */
return self::E21|constructor#(it);
static extension-type-member method E21|bar(lowered final self::E21 /* = core::bool */ #this) → void {}
static extension-type-member method E21|get#bar(lowered final self::E21 /* = core::bool */ #this) → () → void
return () → void => self::E21|bar(#this);
static extension-type-member method E22|constructor#(core::bool it) → self::E22 /* = core::bool */ {
lowered final self::E22 /* = core::bool */ #this = it;
return #this;
}
static extension-type-member method E22|constructor#_#new#tearOff(core::bool it) → self::E22 /* = core::bool */
return self::E22|constructor#(it);
static extension-type-member method E22|bar(lowered final self::E22 /* = core::bool */ #this) → void {}
static extension-type-member method E22|get#bar(lowered final self::E22 /* = core::bool */ #this) → () → void
return () → void => self::E22|bar(#this);
static extension-type-member method E23|constructor#(core::bool it) → self::E23 /* = core::bool */ {
lowered final self::E23 /* = core::bool */ #this = it;
return #this;
}
static extension-type-member method E23|constructor#_#new#tearOff(core::bool it) → self::E23 /* = core::bool */
return self::E23|constructor#(it);
static extension-type-member method E31|constructor#(core::String it) → self::E31 /* = core::String */ {
lowered final self::E31 /* = core::String */ #this = it;
return #this;
}
static extension-type-member method E31|constructor#_#new#tearOff(core::String it) → self::E31 /* = core::String */
return self::E31|constructor#(it);
static extension-type-member method E31|baz(lowered final self::E31 /* = core::String */ #this) → void {}
static extension-type-member method E31|get#baz(lowered final self::E31 /* = core::String */ #this) → () → void
return () → void => self::E31|baz(#this);
static extension-type-member method E32|constructor#(core::String it) → self::E32 /* = core::String */ {
lowered final self::E32 /* = core::String */ #this = it;
return #this;
}
static extension-type-member method E32|constructor#_#new#tearOff(core::String it) → self::E32 /* = core::String */
return self::E32|constructor#(it);
static extension-type-member method E33|constructor#(core::String it) → self::E33 /* = core::String */ {
lowered final self::E33 /* = core::String */ #this = it;
return #this;
}
static extension-type-member method E33|constructor#_#new#tearOff(core::String it) → self::E33 /* = core::String */
return self::E33|constructor#(it);
static extension-type-member method E34|constructor#(core::String it) → self::E34 /* = core::String */ {
lowered final self::E34 /* = core::String */ #this = it;
return #this;
}
static extension-type-member method E34|constructor#_#new#tearOff(core::String it) → self::E34 /* = core::String */
return self::E34|constructor#(it);
@@ -0,0 +1,20 @@
extension type E11(num it) {
void foo() {}
}
extension type E12(num it) {
void set foo(String value) {}
}
extension type E13(num it) implements E11, E12 {}
extension type E21(bool it) {
void bar() {}
}
extension type E22(bool it) {
void bar() {}
}
extension type E23(bool it) implements E21, E22 {}
extension type E31(String it) {
void baz() {}
}
extension type E32(String it) implements E31 {}
extension type E33(String it) implements E31 {}
extension type E34(String it) implements E32, E33 {}
@@ -0,0 +1,20 @@
extension type E11(num it) {
void foo() {}
}
extension type E12(num it) {
void set foo(String value) {}
}
extension type E13(num it) implements E11, E12 {}
extension type E21(bool it) {
void bar() {}
}
extension type E22(bool it) {
void bar() {}
}
extension type E23(bool it) implements E21, E22 {}
extension type E31(String it) {
void baz() {}
}
extension type E32(String it) implements E31 {}
extension type E33(String it) implements E31 {}
extension type E34(String it) implements E32, E33 {}
@@ -0,0 +1,160 @@
library;
//
// Problems in library:
//
// pkg/front_end/testcases/extension_types/issue53172.dart:13:16: Error: Can't inherit members that conflict with each other.
// extension type E13(num it) implements E11, E12 {} /* Error */
// ^^^
// pkg/front_end/testcases/extension_types/issue53172.dart:6:8: Context: This is one inherited member.
// void foo() {}
// ^^^
// pkg/front_end/testcases/extension_types/issue53172.dart:10:12: Context: This is the other inherited member.
// void set foo(String value) {}
// ^^^
//
// pkg/front_end/testcases/extension_types/issue53172.dart:23:16: Error: The extension type 'E23' can't inherit the member 'bar' from more than one extension type.
// Try declaring a member 'bar' in 'E23' to resolve the conflict.
// extension type E23(bool it) implements E21, E22 {} /* Error */
// ^^^
// pkg/front_end/testcases/extension_types/issue53172.dart:16:8: Context: This is one of the inherited extension type members.
// void bar() {}
// ^^^
// pkg/front_end/testcases/extension_types/issue53172.dart:20:8: Context: This is one of the inherited extension type members.
// void bar() {}
// ^^^
//
import self as self;
import "dart:core" as core;
extension type E11(core::num it) {
abstract extension-type-member representation-field get it() → core::num;
method foo = self::E11|foo;
method tearoff foo = self::E11|get#foo;
constructor • = self::E11|constructor#;
constructor tearoff • = self::E11|constructor#_#new#tearOff;
}
extension type E12(core::num it) {
abstract extension-type-member representation-field get it() → core::num;
set foo = self::E12|set#foo;
constructor • = self::E12|constructor#;
constructor tearoff • = self::E12|constructor#_#new#tearOff;
}
extension type E13(core::num it) implements self::E11 /* = core::num */, self::E12 /* = core::num */ {
abstract extension-type-member representation-field get it() → core::num;
constructor • = self::E13|constructor#;
constructor tearoff • = self::E13|constructor#_#new#tearOff;
}
extension type E21(core::bool it) {
abstract extension-type-member representation-field get it() → core::bool;
method bar = self::E21|bar;
method tearoff bar = self::E21|get#bar;
constructor • = self::E21|constructor#;
constructor tearoff • = self::E21|constructor#_#new#tearOff;
}
extension type E22(core::bool it) {
abstract extension-type-member representation-field get it() → core::bool;
method bar = self::E22|bar;
method tearoff bar = self::E22|get#bar;
constructor • = self::E22|constructor#;
constructor tearoff • = self::E22|constructor#_#new#tearOff;
}
extension type E23(core::bool it) implements self::E21 /* = core::bool */, self::E22 /* = core::bool */ {
abstract extension-type-member representation-field get it() → core::bool;
constructor • = self::E23|constructor#;
constructor tearoff • = self::E23|constructor#_#new#tearOff;
}
extension type E31(core::String it) {
abstract extension-type-member representation-field get it() → core::String;
method baz = self::E31|baz;
method tearoff baz = self::E31|get#baz;
constructor • = self::E31|constructor#;
constructor tearoff • = self::E31|constructor#_#new#tearOff;
}
extension type E32(core::String it) implements self::E31 /* = core::String */ {
abstract extension-type-member representation-field get it() → core::String;
constructor • = self::E32|constructor#;
constructor tearoff • = self::E32|constructor#_#new#tearOff;
}
extension type E33(core::String it) implements self::E31 /* = core::String */ {
abstract extension-type-member representation-field get it() → core::String;
constructor • = self::E33|constructor#;
constructor tearoff • = self::E33|constructor#_#new#tearOff;
}
extension type E34(core::String it) implements self::E32 /* = core::String */, self::E33 /* = core::String */ {
abstract extension-type-member representation-field get it() → core::String;
constructor • = self::E34|constructor#;
constructor tearoff • = self::E34|constructor#_#new#tearOff;
}
static extension-type-member method E11|constructor#(core::num it) → self::E11 /* = core::num */ {
lowered final self::E11 /* = core::num */ #this = it;
return #this;
}
static extension-type-member method E11|constructor#_#new#tearOff(core::num it) → self::E11 /* = core::num */
return self::E11|constructor#(it);
static extension-type-member method E11|foo(lowered final self::E11 /* = core::num */ #this) → void {}
static extension-type-member method E11|get#foo(lowered final self::E11 /* = core::num */ #this) → () → void
return () → void => self::E11|foo(#this);
static extension-type-member method E12|constructor#(core::num it) → self::E12 /* = core::num */ {
lowered final self::E12 /* = core::num */ #this = it;
return #this;
}
static extension-type-member method E12|constructor#_#new#tearOff(core::num it) → self::E12 /* = core::num */
return self::E12|constructor#(it);
static extension-type-member method E12|set#foo(lowered final self::E12 /* = core::num */ #this, core::String value) → void {}
static extension-type-member method E13|constructor#(core::num it) → self::E13 /* = core::num */ {
lowered final self::E13 /* = core::num */ #this = it;
return #this;
}
static extension-type-member method E13|constructor#_#new#tearOff(core::num it) → self::E13 /* = core::num */
return self::E13|constructor#(it);
static extension-type-member method E21|constructor#(core::bool it) → self::E21 /* = core::bool */ {
lowered final self::E21 /* = core::bool */ #this = it;
return #this;
}
static extension-type-member method E21|constructor#_#new#tearOff(core::bool it) → self::E21 /* = core::bool */
return self::E21|constructor#(it);
static extension-type-member method E21|bar(lowered final self::E21 /* = core::bool */ #this) → void {}
static extension-type-member method E21|get#bar(lowered final self::E21 /* = core::bool */ #this) → () → void
return () → void => self::E21|bar(#this);
static extension-type-member method E22|constructor#(core::bool it) → self::E22 /* = core::bool */ {
lowered final self::E22 /* = core::bool */ #this = it;
return #this;
}
static extension-type-member method E22|constructor#_#new#tearOff(core::bool it) → self::E22 /* = core::bool */
return self::E22|constructor#(it);
static extension-type-member method E22|bar(lowered final self::E22 /* = core::bool */ #this) → void {}
static extension-type-member method E22|get#bar(lowered final self::E22 /* = core::bool */ #this) → () → void
return () → void => self::E22|bar(#this);
static extension-type-member method E23|constructor#(core::bool it) → self::E23 /* = core::bool */ {
lowered final self::E23 /* = core::bool */ #this = it;
return #this;
}
static extension-type-member method E23|constructor#_#new#tearOff(core::bool it) → self::E23 /* = core::bool */
return self::E23|constructor#(it);
static extension-type-member method E31|constructor#(core::String it) → self::E31 /* = core::String */ {
lowered final self::E31 /* = core::String */ #this = it;
return #this;
}
static extension-type-member method E31|constructor#_#new#tearOff(core::String it) → self::E31 /* = core::String */
return self::E31|constructor#(it);
static extension-type-member method E31|baz(lowered final self::E31 /* = core::String */ #this) → void {}
static extension-type-member method E31|get#baz(lowered final self::E31 /* = core::String */ #this) → () → void
return () → void => self::E31|baz(#this);
static extension-type-member method E32|constructor#(core::String it) → self::E32 /* = core::String */ {
lowered final self::E32 /* = core::String */ #this = it;
return #this;
}
static extension-type-member method E32|constructor#_#new#tearOff(core::String it) → self::E32 /* = core::String */
return self::E32|constructor#(it);
static extension-type-member method E33|constructor#(core::String it) → self::E33 /* = core::String */ {
lowered final self::E33 /* = core::String */ #this = it;
return #this;
}
static extension-type-member method E33|constructor#_#new#tearOff(core::String it) → self::E33 /* = core::String */
return self::E33|constructor#(it);
static extension-type-member method E34|constructor#(core::String it) → self::E34 /* = core::String */ {
lowered final self::E34 /* = core::String */ #this = it;
return #this;
}
static extension-type-member method E34|constructor#_#new#tearOff(core::String it) → self::E34 /* = core::String */
return self::E34|constructor#(it);
@@ -0,0 +1,160 @@
library;
//
// Problems in library:
//
// pkg/front_end/testcases/extension_types/issue53172.dart:13:16: Error: Can't inherit members that conflict with each other.
// extension type E13(num it) implements E11, E12 {} /* Error */
// ^^^
// pkg/front_end/testcases/extension_types/issue53172.dart:6:8: Context: This is one inherited member.
// void foo() {}
// ^^^
// pkg/front_end/testcases/extension_types/issue53172.dart:10:12: Context: This is the other inherited member.
// void set foo(String value) {}
// ^^^
//
// pkg/front_end/testcases/extension_types/issue53172.dart:23:16: Error: The extension type 'E23' can't inherit the member 'bar' from more than one extension type.
// Try declaring a member 'bar' in 'E23' to resolve the conflict.
// extension type E23(bool it) implements E21, E22 {} /* Error */
// ^^^
// pkg/front_end/testcases/extension_types/issue53172.dart:16:8: Context: This is one of the inherited extension type members.
// void bar() {}
// ^^^
// pkg/front_end/testcases/extension_types/issue53172.dart:20:8: Context: This is one of the inherited extension type members.
// void bar() {}
// ^^^
//
import self as self;
import "dart:core" as core;
extension type E11(core::num it) {
abstract extension-type-member representation-field get it() → core::num;
method foo = self::E11|foo;
method tearoff foo = self::E11|get#foo;
constructor • = self::E11|constructor#;
constructor tearoff • = self::E11|constructor#_#new#tearOff;
}
extension type E12(core::num it) {
abstract extension-type-member representation-field get it() → core::num;
set foo = self::E12|set#foo;
constructor • = self::E12|constructor#;
constructor tearoff • = self::E12|constructor#_#new#tearOff;
}
extension type E13(core::num it) implements self::E11 /* = core::num */, self::E12 /* = core::num */ {
abstract extension-type-member representation-field get it() → core::num;
constructor • = self::E13|constructor#;
constructor tearoff • = self::E13|constructor#_#new#tearOff;
}
extension type E21(core::bool it) {
abstract extension-type-member representation-field get it() → core::bool;
method bar = self::E21|bar;
method tearoff bar = self::E21|get#bar;
constructor • = self::E21|constructor#;
constructor tearoff • = self::E21|constructor#_#new#tearOff;
}
extension type E22(core::bool it) {
abstract extension-type-member representation-field get it() → core::bool;
method bar = self::E22|bar;
method tearoff bar = self::E22|get#bar;
constructor • = self::E22|constructor#;
constructor tearoff • = self::E22|constructor#_#new#tearOff;
}
extension type E23(core::bool it) implements self::E21 /* = core::bool */, self::E22 /* = core::bool */ {
abstract extension-type-member representation-field get it() → core::bool;
constructor • = self::E23|constructor#;
constructor tearoff • = self::E23|constructor#_#new#tearOff;
}
extension type E31(core::String it) {
abstract extension-type-member representation-field get it() → core::String;
method baz = self::E31|baz;
method tearoff baz = self::E31|get#baz;
constructor • = self::E31|constructor#;
constructor tearoff • = self::E31|constructor#_#new#tearOff;
}
extension type E32(core::String it) implements self::E31 /* = core::String */ {
abstract extension-type-member representation-field get it() → core::String;
constructor • = self::E32|constructor#;
constructor tearoff • = self::E32|constructor#_#new#tearOff;
}
extension type E33(core::String it) implements self::E31 /* = core::String */ {
abstract extension-type-member representation-field get it() → core::String;
constructor • = self::E33|constructor#;
constructor tearoff • = self::E33|constructor#_#new#tearOff;
}
extension type E34(core::String it) implements self::E32 /* = core::String */, self::E33 /* = core::String */ {
abstract extension-type-member representation-field get it() → core::String;
constructor • = self::E34|constructor#;
constructor tearoff • = self::E34|constructor#_#new#tearOff;
}
static extension-type-member method E11|constructor#(core::num it) → self::E11 /* = core::num */ {
lowered final self::E11 /* = core::num */ #this = it;
return #this;
}
static extension-type-member method E11|constructor#_#new#tearOff(core::num it) → self::E11 /* = core::num */
return self::E11|constructor#(it);
static extension-type-member method E11|foo(lowered final self::E11 /* = core::num */ #this) → void {}
static extension-type-member method E11|get#foo(lowered final self::E11 /* = core::num */ #this) → () → void
return () → void => self::E11|foo(#this);
static extension-type-member method E12|constructor#(core::num it) → self::E12 /* = core::num */ {
lowered final self::E12 /* = core::num */ #this = it;
return #this;
}
static extension-type-member method E12|constructor#_#new#tearOff(core::num it) → self::E12 /* = core::num */
return self::E12|constructor#(it);
static extension-type-member method E12|set#foo(lowered final self::E12 /* = core::num */ #this, core::String value) → void {}
static extension-type-member method E13|constructor#(core::num it) → self::E13 /* = core::num */ {
lowered final self::E13 /* = core::num */ #this = it;
return #this;
}
static extension-type-member method E13|constructor#_#new#tearOff(core::num it) → self::E13 /* = core::num */
return self::E13|constructor#(it);
static extension-type-member method E21|constructor#(core::bool it) → self::E21 /* = core::bool */ {
lowered final self::E21 /* = core::bool */ #this = it;
return #this;
}
static extension-type-member method E21|constructor#_#new#tearOff(core::bool it) → self::E21 /* = core::bool */
return self::E21|constructor#(it);
static extension-type-member method E21|bar(lowered final self::E21 /* = core::bool */ #this) → void {}
static extension-type-member method E21|get#bar(lowered final self::E21 /* = core::bool */ #this) → () → void
return () → void => self::E21|bar(#this);
static extension-type-member method E22|constructor#(core::bool it) → self::E22 /* = core::bool */ {
lowered final self::E22 /* = core::bool */ #this = it;
return #this;
}
static extension-type-member method E22|constructor#_#new#tearOff(core::bool it) → self::E22 /* = core::bool */
return self::E22|constructor#(it);
static extension-type-member method E22|bar(lowered final self::E22 /* = core::bool */ #this) → void {}
static extension-type-member method E22|get#bar(lowered final self::E22 /* = core::bool */ #this) → () → void
return () → void => self::E22|bar(#this);
static extension-type-member method E23|constructor#(core::bool it) → self::E23 /* = core::bool */ {
lowered final self::E23 /* = core::bool */ #this = it;
return #this;
}
static extension-type-member method E23|constructor#_#new#tearOff(core::bool it) → self::E23 /* = core::bool */
return self::E23|constructor#(it);
static extension-type-member method E31|constructor#(core::String it) → self::E31 /* = core::String */ {
lowered final self::E31 /* = core::String */ #this = it;
return #this;
}
static extension-type-member method E31|constructor#_#new#tearOff(core::String it) → self::E31 /* = core::String */
return self::E31|constructor#(it);
static extension-type-member method E31|baz(lowered final self::E31 /* = core::String */ #this) → void {}
static extension-type-member method E31|get#baz(lowered final self::E31 /* = core::String */ #this) → () → void
return () → void => self::E31|baz(#this);
static extension-type-member method E32|constructor#(core::String it) → self::E32 /* = core::String */ {
lowered final self::E32 /* = core::String */ #this = it;
return #this;
}
static extension-type-member method E32|constructor#_#new#tearOff(core::String it) → self::E32 /* = core::String */
return self::E32|constructor#(it);
static extension-type-member method E33|constructor#(core::String it) → self::E33 /* = core::String */ {
lowered final self::E33 /* = core::String */ #this = it;
return #this;
}
static extension-type-member method E33|constructor#_#new#tearOff(core::String it) → self::E33 /* = core::String */
return self::E33|constructor#(it);
static extension-type-member method E34|constructor#(core::String it) → self::E34 /* = core::String */ {
lowered final self::E34 /* = core::String */ #this = it;
return #this;
}
static extension-type-member method E34|constructor#_#new#tearOff(core::String it) → self::E34 /* = core::String */
return self::E34|constructor#(it);
@@ -0,0 +1,145 @@
library;
//
// Problems in library:
//
// pkg/front_end/testcases/extension_types/issue53172.dart:13:16: Error: Can't inherit members that conflict with each other.
// extension type E13(num it) implements E11, E12 {} /* Error */
// ^^^
// pkg/front_end/testcases/extension_types/issue53172.dart:6:8: Context: This is one inherited member.
// void foo() {}
// ^^^
// pkg/front_end/testcases/extension_types/issue53172.dart:10:12: Context: This is the other inherited member.
// void set foo(String value) {}
// ^^^
//
// pkg/front_end/testcases/extension_types/issue53172.dart:23:16: Error: The extension type 'E23' can't inherit the member 'bar' from more than one extension type.
// Try declaring a member 'bar' in 'E23' to resolve the conflict.
// extension type E23(bool it) implements E21, E22 {} /* Error */
// ^^^
// pkg/front_end/testcases/extension_types/issue53172.dart:16:8: Context: This is one of the inherited extension type members.
// void bar() {}
// ^^^
// pkg/front_end/testcases/extension_types/issue53172.dart:20:8: Context: This is one of the inherited extension type members.
// void bar() {}
// ^^^
//
import self as self;
import "dart:core" as core;
extension type E11(core::num it) {
abstract extension-type-member representation-field get it() → core::num;
method foo = self::E11|foo;
method tearoff foo = self::E11|get#foo;
constructor • = self::E11|constructor#;
constructor tearoff • = self::E11|constructor#_#new#tearOff;
}
extension type E12(core::num it) {
abstract extension-type-member representation-field get it() → core::num;
set foo = self::E12|set#foo;
constructor • = self::E12|constructor#;
constructor tearoff • = self::E12|constructor#_#new#tearOff;
}
extension type E13(core::num it) implements self::E11 /* = core::num */, self::E12 /* = core::num */ {
abstract extension-type-member representation-field get it() → core::num;
constructor • = self::E13|constructor#;
constructor tearoff • = self::E13|constructor#_#new#tearOff;
}
extension type E21(core::bool it) {
abstract extension-type-member representation-field get it() → core::bool;
method bar = self::E21|bar;
method tearoff bar = self::E21|get#bar;
constructor • = self::E21|constructor#;
constructor tearoff • = self::E21|constructor#_#new#tearOff;
}
extension type E22(core::bool it) {
abstract extension-type-member representation-field get it() → core::bool;
method bar = self::E22|bar;
method tearoff bar = self::E22|get#bar;
constructor • = self::E22|constructor#;
constructor tearoff • = self::E22|constructor#_#new#tearOff;
}
extension type E23(core::bool it) implements self::E21 /* = core::bool */, self::E22 /* = core::bool */ {
abstract extension-type-member representation-field get it() → core::bool;
constructor • = self::E23|constructor#;
constructor tearoff • = self::E23|constructor#_#new#tearOff;
}
extension type E31(core::String it) {
abstract extension-type-member representation-field get it() → core::String;
method baz = self::E31|baz;
method tearoff baz = self::E31|get#baz;
constructor • = self::E31|constructor#;
constructor tearoff • = self::E31|constructor#_#new#tearOff;
}
extension type E32(core::String it) implements self::E31 /* = core::String */ {
abstract extension-type-member representation-field get it() → core::String;
constructor • = self::E32|constructor#;
constructor tearoff • = self::E32|constructor#_#new#tearOff;
}
extension type E33(core::String it) implements self::E31 /* = core::String */ {
abstract extension-type-member representation-field get it() → core::String;
constructor • = self::E33|constructor#;
constructor tearoff • = self::E33|constructor#_#new#tearOff;
}
extension type E34(core::String it) implements self::E32 /* = core::String */, self::E33 /* = core::String */ {
abstract extension-type-member representation-field get it() → core::String;
constructor • = self::E34|constructor#;
constructor tearoff • = self::E34|constructor#_#new#tearOff;
}
static extension-type-member method E11|constructor#(core::num it) → self::E11 /* = core::num */
;
static extension-type-member method E11|constructor#_#new#tearOff(core::num it) → self::E11 /* = core::num */
return self::E11|constructor#(it);
static extension-type-member method E11|foo(lowered final self::E11 /* = core::num */ #this) → void
;
static extension-type-member method E11|get#foo(lowered final self::E11 /* = core::num */ #this) → () → void
return () → void => self::E11|foo(#this);
static extension-type-member method E12|constructor#(core::num it) → self::E12 /* = core::num */
;
static extension-type-member method E12|constructor#_#new#tearOff(core::num it) → self::E12 /* = core::num */
return self::E12|constructor#(it);
static extension-type-member method E12|set#foo(lowered final self::E12 /* = core::num */ #this, core::String value) → void
;
static extension-type-member method E13|constructor#(core::num it) → self::E13 /* = core::num */
;
static extension-type-member method E13|constructor#_#new#tearOff(core::num it) → self::E13 /* = core::num */
return self::E13|constructor#(it);
static extension-type-member method E21|constructor#(core::bool it) → self::E21 /* = core::bool */
;
static extension-type-member method E21|constructor#_#new#tearOff(core::bool it) → self::E21 /* = core::bool */
return self::E21|constructor#(it);
static extension-type-member method E21|bar(lowered final self::E21 /* = core::bool */ #this) → void
;
static extension-type-member method E21|get#bar(lowered final self::E21 /* = core::bool */ #this) → () → void
return () → void => self::E21|bar(#this);
static extension-type-member method E22|constructor#(core::bool it) → self::E22 /* = core::bool */
;
static extension-type-member method E22|constructor#_#new#tearOff(core::bool it) → self::E22 /* = core::bool */
return self::E22|constructor#(it);
static extension-type-member method E22|bar(lowered final self::E22 /* = core::bool */ #this) → void
;
static extension-type-member method E22|get#bar(lowered final self::E22 /* = core::bool */ #this) → () → void
return () → void => self::E22|bar(#this);
static extension-type-member method E23|constructor#(core::bool it) → self::E23 /* = core::bool */
;
static extension-type-member method E23|constructor#_#new#tearOff(core::bool it) → self::E23 /* = core::bool */
return self::E23|constructor#(it);
static extension-type-member method E31|constructor#(core::String it) → self::E31 /* = core::String */
;
static extension-type-member method E31|constructor#_#new#tearOff(core::String it) → self::E31 /* = core::String */
return self::E31|constructor#(it);
static extension-type-member method E31|baz(lowered final self::E31 /* = core::String */ #this) → void
;
static extension-type-member method E31|get#baz(lowered final self::E31 /* = core::String */ #this) → () → void
return () → void => self::E31|baz(#this);
static extension-type-member method E32|constructor#(core::String it) → self::E32 /* = core::String */
;
static extension-type-member method E32|constructor#_#new#tearOff(core::String it) → self::E32 /* = core::String */
return self::E32|constructor#(it);
static extension-type-member method E33|constructor#(core::String it) → self::E33 /* = core::String */
;
static extension-type-member method E33|constructor#_#new#tearOff(core::String it) → self::E33 /* = core::String */
return self::E33|constructor#(it);
static extension-type-member method E34|constructor#(core::String it) → self::E34 /* = core::String */
;
static extension-type-member method E34|constructor#_#new#tearOff(core::String it) → self::E34 /* = core::String */
return self::E34|constructor#(it);
@@ -0,0 +1,160 @@
library;
//
// Problems in library:
//
// pkg/front_end/testcases/extension_types/issue53172.dart:13:16: Error: Can't inherit members that conflict with each other.
// extension type E13(num it) implements E11, E12 {} /* Error */
// ^^^
// pkg/front_end/testcases/extension_types/issue53172.dart:6:8: Context: This is one inherited member.
// void foo() {}
// ^^^
// pkg/front_end/testcases/extension_types/issue53172.dart:10:12: Context: This is the other inherited member.
// void set foo(String value) {}
// ^^^
//
// pkg/front_end/testcases/extension_types/issue53172.dart:23:16: Error: The extension type 'E23' can't inherit the member 'bar' from more than one extension type.
// Try declaring a member 'bar' in 'E23' to resolve the conflict.
// extension type E23(bool it) implements E21, E22 {} /* Error */
// ^^^
// pkg/front_end/testcases/extension_types/issue53172.dart:16:8: Context: This is one of the inherited extension type members.
// void bar() {}
// ^^^
// pkg/front_end/testcases/extension_types/issue53172.dart:20:8: Context: This is one of the inherited extension type members.
// void bar() {}
// ^^^
//
import self as self;
import "dart:core" as core;
extension type E11(core::num it) {
abstract extension-type-member representation-field get it() → core::num;
method foo = self::E11|foo;
method tearoff foo = self::E11|get#foo;
constructor • = self::E11|constructor#;
constructor tearoff • = self::E11|constructor#_#new#tearOff;
}
extension type E12(core::num it) {
abstract extension-type-member representation-field get it() → core::num;
set foo = self::E12|set#foo;
constructor • = self::E12|constructor#;
constructor tearoff • = self::E12|constructor#_#new#tearOff;
}
extension type E13(core::num it) implements self::E11 /* = core::num */, self::E12 /* = core::num */ {
abstract extension-type-member representation-field get it() → core::num;
constructor • = self::E13|constructor#;
constructor tearoff • = self::E13|constructor#_#new#tearOff;
}
extension type E21(core::bool it) {
abstract extension-type-member representation-field get it() → core::bool;
method bar = self::E21|bar;
method tearoff bar = self::E21|get#bar;
constructor • = self::E21|constructor#;
constructor tearoff • = self::E21|constructor#_#new#tearOff;
}
extension type E22(core::bool it) {
abstract extension-type-member representation-field get it() → core::bool;
method bar = self::E22|bar;
method tearoff bar = self::E22|get#bar;
constructor • = self::E22|constructor#;
constructor tearoff • = self::E22|constructor#_#new#tearOff;
}
extension type E23(core::bool it) implements self::E21 /* = core::bool */, self::E22 /* = core::bool */ {
abstract extension-type-member representation-field get it() → core::bool;
constructor • = self::E23|constructor#;
constructor tearoff • = self::E23|constructor#_#new#tearOff;
}
extension type E31(core::String it) {
abstract extension-type-member representation-field get it() → core::String;
method baz = self::E31|baz;
method tearoff baz = self::E31|get#baz;
constructor • = self::E31|constructor#;
constructor tearoff • = self::E31|constructor#_#new#tearOff;
}
extension type E32(core::String it) implements self::E31 /* = core::String */ {
abstract extension-type-member representation-field get it() → core::String;
constructor • = self::E32|constructor#;
constructor tearoff • = self::E32|constructor#_#new#tearOff;
}
extension type E33(core::String it) implements self::E31 /* = core::String */ {
abstract extension-type-member representation-field get it() → core::String;
constructor • = self::E33|constructor#;
constructor tearoff • = self::E33|constructor#_#new#tearOff;
}
extension type E34(core::String it) implements self::E32 /* = core::String */, self::E33 /* = core::String */ {
abstract extension-type-member representation-field get it() → core::String;
constructor • = self::E34|constructor#;
constructor tearoff • = self::E34|constructor#_#new#tearOff;
}
static extension-type-member method E11|constructor#(core::num it) → self::E11 /* = core::num */ {
lowered final self::E11 /* = core::num */ #this = it;
return #this;
}
static extension-type-member method E11|constructor#_#new#tearOff(core::num it) → self::E11 /* = core::num */
return self::E11|constructor#(it);
static extension-type-member method E11|foo(lowered final self::E11 /* = core::num */ #this) → void {}
static extension-type-member method E11|get#foo(lowered final self::E11 /* = core::num */ #this) → () → void
return () → void => self::E11|foo(#this);
static extension-type-member method E12|constructor#(core::num it) → self::E12 /* = core::num */ {
lowered final self::E12 /* = core::num */ #this = it;
return #this;
}
static extension-type-member method E12|constructor#_#new#tearOff(core::num it) → self::E12 /* = core::num */
return self::E12|constructor#(it);
static extension-type-member method E12|set#foo(lowered final self::E12 /* = core::num */ #this, core::String value) → void {}
static extension-type-member method E13|constructor#(core::num it) → self::E13 /* = core::num */ {
lowered final self::E13 /* = core::num */ #this = it;
return #this;
}
static extension-type-member method E13|constructor#_#new#tearOff(core::num it) → self::E13 /* = core::num */
return self::E13|constructor#(it);
static extension-type-member method E21|constructor#(core::bool it) → self::E21 /* = core::bool */ {
lowered final self::E21 /* = core::bool */ #this = it;
return #this;
}
static extension-type-member method E21|constructor#_#new#tearOff(core::bool it) → self::E21 /* = core::bool */
return self::E21|constructor#(it);
static extension-type-member method E21|bar(lowered final self::E21 /* = core::bool */ #this) → void {}
static extension-type-member method E21|get#bar(lowered final self::E21 /* = core::bool */ #this) → () → void
return () → void => self::E21|bar(#this);
static extension-type-member method E22|constructor#(core::bool it) → self::E22 /* = core::bool */ {
lowered final self::E22 /* = core::bool */ #this = it;
return #this;
}
static extension-type-member method E22|constructor#_#new#tearOff(core::bool it) → self::E22 /* = core::bool */
return self::E22|constructor#(it);
static extension-type-member method E22|bar(lowered final self::E22 /* = core::bool */ #this) → void {}
static extension-type-member method E22|get#bar(lowered final self::E22 /* = core::bool */ #this) → () → void
return () → void => self::E22|bar(#this);
static extension-type-member method E23|constructor#(core::bool it) → self::E23 /* = core::bool */ {
lowered final self::E23 /* = core::bool */ #this = it;
return #this;
}
static extension-type-member method E23|constructor#_#new#tearOff(core::bool it) → self::E23 /* = core::bool */
return self::E23|constructor#(it);
static extension-type-member method E31|constructor#(core::String it) → self::E31 /* = core::String */ {
lowered final self::E31 /* = core::String */ #this = it;
return #this;
}
static extension-type-member method E31|constructor#_#new#tearOff(core::String it) → self::E31 /* = core::String */
return self::E31|constructor#(it);
static extension-type-member method E31|baz(lowered final self::E31 /* = core::String */ #this) → void {}
static extension-type-member method E31|get#baz(lowered final self::E31 /* = core::String */ #this) → () → void
return () → void => self::E31|baz(#this);
static extension-type-member method E32|constructor#(core::String it) → self::E32 /* = core::String */ {
lowered final self::E32 /* = core::String */ #this = it;
return #this;
}
static extension-type-member method E32|constructor#_#new#tearOff(core::String it) → self::E32 /* = core::String */
return self::E32|constructor#(it);
static extension-type-member method E33|constructor#(core::String it) → self::E33 /* = core::String */ {
lowered final self::E33 /* = core::String */ #this = it;
return #this;
}
static extension-type-member method E33|constructor#_#new#tearOff(core::String it) → self::E33 /* = core::String */
return self::E33|constructor#(it);
static extension-type-member method E34|constructor#(core::String it) → self::E34 /* = core::String */ {
lowered final self::E34 /* = core::String */ #this = it;
return #this;
}
static extension-type-member method E34|constructor#_#new#tearOff(core::String it) → self::E34 /* = core::String */
return self::E34|constructor#(it);