mirror of
https://github.com/dart-lang/sdk
synced 2024-09-16 04:16:51 +00:00
Issue 43151. Fix crash when a field shadows a super-interface method.
Bug: https://github.com/dart-lang/sdk/issues/43151 Change-Id: I27e78815007e12edfefc81b5e49eed30bb633229 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/159740 Commit-Queue: Konstantin Shcheglov <scheglov@google.com> Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
This commit is contained in:
parent
e7c79ae9ae
commit
e868d3076c
|
@ -117,7 +117,13 @@ class InstanceMemberInferrer {
|
|||
currentClassElement,
|
||||
getterName,
|
||||
);
|
||||
overriddenGetters ??= const [];
|
||||
if (overriddenGetters != null) {
|
||||
overriddenGetters = overriddenGetters.where((e) {
|
||||
return e is PropertyAccessorElement && e.isGetter;
|
||||
}).toList();
|
||||
} else {
|
||||
overriddenGetters = const [];
|
||||
}
|
||||
|
||||
var setterName = Name(elementLibraryUri, '$elementName=');
|
||||
var overriddenSetters = inheritance.getOverridden2(
|
||||
|
|
|
@ -386,6 +386,20 @@ class C implements A, B {
|
|||
_assertGetterTypeDynamic(foo);
|
||||
}
|
||||
|
||||
test_invalid_field_overrides_method() async {
|
||||
await resolveTestCode('''
|
||||
abstract class A {
|
||||
List<T> foo<T>() {}
|
||||
}
|
||||
|
||||
class B implements A {
|
||||
var foo = <String, int>{};
|
||||
}
|
||||
''');
|
||||
var foo = findElement.field('foo', of: 'B');
|
||||
_assertFieldType(foo, 'Map<String, int>');
|
||||
}
|
||||
|
||||
test_invalid_inheritanceCycle() async {
|
||||
await resolveTestCode('''
|
||||
class A extends C {}
|
||||
|
|
Loading…
Reference in a new issue