[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:
committed by
Commit Queue
parent
3a8698a62c
commit
931c6af820
@@ -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 {}
|
||||
+20
@@ -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);
|
||||
Reference in New Issue
Block a user