@@ -6,26 +6,22 @@ class _Visitor extends RecursiveAstVisitor<void> {
6
6
@override
7
7
void visitClassDeclaration (ClassDeclaration node) {
8
8
if (isWidgetStateOrSubclass (node.extendsClause? .superclass.type)) {
9
- final visitor = _AsyncSetStateVisitor ();
10
- node.visitChildren (visitor);
11
- nodes.addAll (visitor.nodes);
9
+ node.visitChildren (this );
12
10
}
13
11
}
12
+
13
+ @override
14
+ void visitBlockFunctionBody (BlockFunctionBody node) {
15
+ final visitor = _AsyncSetStateVisitor ();
16
+ node.visitChildren (visitor);
17
+ nodes.addAll (visitor.nodes);
18
+ }
14
19
}
15
20
16
21
class _AsyncSetStateVisitor extends RecursiveAstVisitor <void > {
17
22
MountedFact mounted = true .asFact ();
18
- bool inFlow = false ;
19
23
final nodes = < SimpleIdentifier > [];
20
24
21
- @override
22
- void visitBlockFunctionBody (BlockFunctionBody node) {
23
- final oldMounted = mounted;
24
- mounted = true .asFact ();
25
- node.visitChildren (this );
26
- mounted = oldMounted;
27
- }
28
-
29
25
@override
30
26
void visitAwaitExpression (AwaitExpression node) {
31
27
mounted = false .asFact ();
@@ -60,12 +56,12 @@ class _AsyncSetStateVisitor extends RecursiveAstVisitor<void> {
60
56
final elseStatement = node.elseStatement;
61
57
if (elseStatement != null ) {
62
58
elseDiverges = _blockDiverges (elseStatement);
63
- mounted = _tryInvert (newMounted);
59
+ mounted = _tryInvert (newMounted). or (mounted) ;
64
60
elseStatement.visitChildren (this );
65
61
}
66
62
67
63
if (_blockDiverges (node.thenStatement)) {
68
- mounted = _tryInvert (newMounted);
64
+ mounted = _tryInvert (newMounted). or (beforeThen) ;
69
65
} else if (elseDiverges) {
70
66
mounted = beforeThen != afterThen
71
67
? afterThen
0 commit comments