diff --git a/pkg/front_end/testcases/extension_types/issue53172.dart b/pkg/front_end/testcases/extension_types/issue53172.dart new file mode 100644 index 00000000000..d600822b8d4 --- /dev/null +++ b/pkg/front_end/testcases/extension_types/issue53172.dart @@ -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 */ diff --git a/pkg/front_end/testcases/extension_types/issue53172.dart.strong.expect b/pkg/front_end/testcases/extension_types/issue53172.dart.strong.expect new file mode 100644 index 00000000000..3cd63abf173 --- /dev/null +++ b/pkg/front_end/testcases/extension_types/issue53172.dart.strong.expect @@ -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); diff --git a/pkg/front_end/testcases/extension_types/issue53172.dart.strong.transformed.expect b/pkg/front_end/testcases/extension_types/issue53172.dart.strong.transformed.expect new file mode 100644 index 00000000000..3cd63abf173 --- /dev/null +++ b/pkg/front_end/testcases/extension_types/issue53172.dart.strong.transformed.expect @@ -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); diff --git a/pkg/front_end/testcases/extension_types/issue53172.dart.textual_outline.expect b/pkg/front_end/testcases/extension_types/issue53172.dart.textual_outline.expect new file mode 100644 index 00000000000..28054d54cf5 --- /dev/null +++ b/pkg/front_end/testcases/extension_types/issue53172.dart.textual_outline.expect @@ -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 {} diff --git a/pkg/front_end/testcases/extension_types/issue53172.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/extension_types/issue53172.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..28054d54cf5 --- /dev/null +++ b/pkg/front_end/testcases/extension_types/issue53172.dart.textual_outline_modelled.expect @@ -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 {} diff --git a/pkg/front_end/testcases/extension_types/issue53172.dart.weak.expect b/pkg/front_end/testcases/extension_types/issue53172.dart.weak.expect new file mode 100644 index 00000000000..3cd63abf173 --- /dev/null +++ b/pkg/front_end/testcases/extension_types/issue53172.dart.weak.expect @@ -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); diff --git a/pkg/front_end/testcases/extension_types/issue53172.dart.weak.modular.expect b/pkg/front_end/testcases/extension_types/issue53172.dart.weak.modular.expect new file mode 100644 index 00000000000..3cd63abf173 --- /dev/null +++ b/pkg/front_end/testcases/extension_types/issue53172.dart.weak.modular.expect @@ -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); diff --git a/pkg/front_end/testcases/extension_types/issue53172.dart.weak.outline.expect b/pkg/front_end/testcases/extension_types/issue53172.dart.weak.outline.expect new file mode 100644 index 00000000000..2a4c4972ccc --- /dev/null +++ b/pkg/front_end/testcases/extension_types/issue53172.dart.weak.outline.expect @@ -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); diff --git a/pkg/front_end/testcases/extension_types/issue53172.dart.weak.transformed.expect b/pkg/front_end/testcases/extension_types/issue53172.dart.weak.transformed.expect new file mode 100644 index 00000000000..3cd63abf173 --- /dev/null +++ b/pkg/front_end/testcases/extension_types/issue53172.dart.weak.transformed.expect @@ -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);