Fix unused elements when setter used
Fixes #35677 Change-Id: I2daf8b4e2cc8e1a11ed0dde730d4126154b60910 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/125620 Reviewed-by: Konstantin Shcheglov <scheglov@google.com> Commit-Queue: Samuel Rawlins <srawlins@google.com>
This commit is contained in:
committed by
commit-bot@chromium.org
parent
2c5705ad23
commit
db166e423e
@@ -2089,6 +2089,7 @@ class GatherUsedLocalElementsVisitor extends RecursiveAstVisitor {
|
||||
if (element is PropertyAccessorElement && element.isSetter) {
|
||||
element = (element as PropertyAccessorElement).correspondingGetter;
|
||||
}
|
||||
usedElements.members.add(element);
|
||||
usedElements.readMembers.add(element);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -402,6 +402,43 @@ main() {
|
||||
''');
|
||||
}
|
||||
|
||||
test_getter_isUsed_invocation_subclass_plusPlus() async {
|
||||
await assertNoErrorsInCode(r'''
|
||||
class A {
|
||||
int __a = 0;
|
||||
int get _a => __a;
|
||||
void set _a(int val) {
|
||||
__a = val;
|
||||
}
|
||||
int b() => _a++;
|
||||
}
|
||||
class B extends A {
|
||||
@override
|
||||
int get _a => 3;
|
||||
}
|
||||
''');
|
||||
}
|
||||
|
||||
test_getter_notUsed_invocation_subclass() async {
|
||||
await assertErrorsInCode(r'''
|
||||
class A {
|
||||
int __a = 0;
|
||||
int get _a => __a;
|
||||
void set _a(int val) {
|
||||
__a = val;
|
||||
}
|
||||
int b() => _a = 7;
|
||||
}
|
||||
class B extends A {
|
||||
@override
|
||||
int get _a => 3;
|
||||
}
|
||||
''', [
|
||||
error(HintCode.UNUSED_ELEMENT, 35, 2),
|
||||
error(HintCode.UNUSED_ELEMENT, 155, 2),
|
||||
]);
|
||||
}
|
||||
|
||||
test_getter_notUsed_noReference() async {
|
||||
await assertErrorsInCode(r'''
|
||||
class A {
|
||||
|
||||
@@ -106,8 +106,6 @@ class _FieldNamingScope {
|
||||
/// The number of locally used fields. Depending on the naming source
|
||||
/// (e.g. inheritance based or globally unique for mixixns) this
|
||||
/// might be different from [inheritanceBasedFieldNameCounter].
|
||||
// TODO(35677): remove
|
||||
// ignore: unused_element
|
||||
int get _localFieldNameCounter => _fieldNameCounter;
|
||||
void set _localFieldNameCounter(int val) {
|
||||
_fieldNameCounter = val;
|
||||
@@ -192,8 +190,6 @@ class _FieldNamingScope {
|
||||
/// in generated names themselves.
|
||||
class _MixinFieldNamingScope extends _FieldNamingScope {
|
||||
@override
|
||||
// TODO(35677): remove
|
||||
// ignore: unused_element
|
||||
int get _localFieldNameCounter => registry.globalCount;
|
||||
@override
|
||||
void set _localFieldNameCounter(int val) {
|
||||
|
||||
Reference in New Issue
Block a user