mirror of
https://github.com/dart-lang/sdk
synced 2024-09-16 00:19:48 +00:00
Extension type. Overrides notification.
Change-Id: I1865e0d44093c1501b422d1b6d34fbc1e9612db8 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/323943 Commit-Queue: Konstantin Shcheglov <scheglov@google.com> Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
This commit is contained in:
parent
234c129a81
commit
49f5312fed
|
@ -31,6 +31,8 @@ class DartUnitOverridesComputer {
|
|||
_classMembers(unitMember.members);
|
||||
} else if (unitMember is EnumDeclaration) {
|
||||
_classMembers(unitMember.members);
|
||||
} else if (unitMember is ExtensionTypeDeclaration) {
|
||||
_classMembers(unitMember.members);
|
||||
} else if (unitMember is MixinDeclaration) {
|
||||
_classMembers(unitMember.members);
|
||||
}
|
||||
|
|
|
@ -909,6 +909,102 @@ enum E with M {
|
|||
assertNoInterfaceMembers();
|
||||
}
|
||||
|
||||
Future<void> test_extensionType_class_getterByGetter() async {
|
||||
addTestFile('''
|
||||
class A {
|
||||
int get foo => 0; // A
|
||||
}
|
||||
|
||||
extension type B(A it) implements A {
|
||||
int get foo => 0; // B
|
||||
}
|
||||
''');
|
||||
await prepareOverrides();
|
||||
assertHasOverride('foo => 0; // B');
|
||||
assertNoSuperMember();
|
||||
assertHasInterfaceMember('foo => 0; // A');
|
||||
}
|
||||
|
||||
Future<void> test_extensionType_class_methodByMethod() async {
|
||||
addTestFile('''
|
||||
class A {
|
||||
void foo() {} // A
|
||||
}
|
||||
|
||||
extension type B(A it) implements A {
|
||||
void foo() {} // B
|
||||
}
|
||||
''');
|
||||
await prepareOverrides();
|
||||
assertHasOverride('foo() {} // B');
|
||||
assertNoSuperMember();
|
||||
assertHasInterfaceMember('foo() {} // A');
|
||||
}
|
||||
|
||||
Future<void> test_extensionType_class_setterBySetter() async {
|
||||
addTestFile('''
|
||||
class A {
|
||||
set foo(int _) {} // A
|
||||
}
|
||||
|
||||
extension type B(A it) implements A {
|
||||
set foo(int _) {} // B
|
||||
}
|
||||
''');
|
||||
await prepareOverrides();
|
||||
assertHasOverride('foo(int _) {} // B');
|
||||
assertNoSuperMember();
|
||||
assertHasInterfaceMember('foo(int _) {} // A');
|
||||
}
|
||||
|
||||
Future<void> test_extensionType_extensionType_getterByGetter() async {
|
||||
addTestFile('''
|
||||
extension type A(int it) {
|
||||
int get foo => 0; // A
|
||||
}
|
||||
|
||||
extension type B(int it) implements A {
|
||||
int get foo => 0; // B
|
||||
}
|
||||
''');
|
||||
await prepareOverrides();
|
||||
assertHasOverride('foo => 0; // B');
|
||||
assertNoSuperMember();
|
||||
assertHasInterfaceMember('foo => 0; // A');
|
||||
}
|
||||
|
||||
Future<void> test_extensionType_extensionType_methodByMethod() async {
|
||||
addTestFile('''
|
||||
extension type A(int it) {
|
||||
void foo() {} // A
|
||||
}
|
||||
|
||||
extension type B(int it) implements A {
|
||||
void foo() {} // B
|
||||
}
|
||||
''');
|
||||
await prepareOverrides();
|
||||
assertHasOverride('foo() {} // B');
|
||||
assertNoSuperMember();
|
||||
assertHasInterfaceMember('foo() {} // A');
|
||||
}
|
||||
|
||||
Future<void> test_extensionType_extensionType_setterBySetter() async {
|
||||
addTestFile('''
|
||||
extension type A(int it) {
|
||||
set foo(int _) {} // A
|
||||
}
|
||||
|
||||
extension type B(int it) implements A {
|
||||
set foo(int _) {} // B
|
||||
}
|
||||
''');
|
||||
await prepareOverrides();
|
||||
assertHasOverride('foo(int _) {} // B');
|
||||
assertNoSuperMember();
|
||||
assertHasInterfaceMember('foo(int _) {} // A');
|
||||
}
|
||||
|
||||
Future<void> test_mixin_interface_method_direct_single() async {
|
||||
addTestFile('''
|
||||
class A {
|
||||
|
|
Loading…
Reference in a new issue