File tree Expand file tree Collapse file tree 2 files changed +26
-5
lines changed Expand file tree Collapse file tree 2 files changed +26
-5
lines changed Original file line number Diff line number Diff line change @@ -64,6 +64,16 @@ class _BodyVisitor extends RecursiveAstVisitor {
64
64
final ExecutableElement element;
65
65
_BodyVisitor (this .element, this .rule);
66
66
67
+ bool isSelfReference (SimpleIdentifier node) {
68
+ if (node.staticElement != element) return false ;
69
+ var parent = node.parent;
70
+ if (parent is PrefixedIdentifier ) return false ;
71
+ if (parent is PropertyAccess && parent.target is ! ThisExpression ) {
72
+ return false ;
73
+ }
74
+ return true ;
75
+ }
76
+
67
77
@override
68
78
visitListLiteral (ListLiteral node) {
69
79
if (node.isConst) return null ;
@@ -78,13 +88,11 @@ class _BodyVisitor extends RecursiveAstVisitor {
78
88
79
89
@override
80
90
visitSimpleIdentifier (SimpleIdentifier node) {
81
- if (node.staticElement == element) {
82
- if (node.parent is ! PrefixedIdentifier ) {
83
- rule.reportLint (node, arguments: [node.name]);
84
- }
91
+ if (isSelfReference (node)) {
92
+ rule.reportLint (node, arguments: [node.name]);
85
93
}
86
94
87
- return super . visitSimpleIdentifier (node);
95
+ // No need to call super visit (SimpleIdentifiers have no children).
88
96
}
89
97
}
90
98
Original file line number Diff line number Diff line change @@ -60,6 +60,19 @@ class Nested {
60
60
''' );
61
61
}
62
62
63
+ test_nestedReference_property () async {
64
+ await assertNoDiagnostics (r'''
65
+ class Nested {
66
+ final Nested target;
67
+ Nested(this.target);
68
+ bool get isFoo {
69
+ var self = this;
70
+ return self.target.isFoo;
71
+ }
72
+ }
73
+ ''' );
74
+ }
75
+
63
76
test_referenceInListLiteral () async {
64
77
await assertDiagnostics (r'''
65
78
class C {
You can’t perform that action at this time.
0 commit comments