broader support for AST traversal, including Attr and Attributes objects

This commit is contained in:
Vern Paxson 2022-05-04 17:07:18 -07:00 committed by Tim Wojtulewicz
parent 9a2200e60a
commit a0fc8ca5e4
10 changed files with 280 additions and 23 deletions

View file

@ -2162,22 +2162,27 @@ TraversalCode WhenStmt::Traverse(TraversalCallback* cb) const
TraversalCode tc = cb->PreStmt(this);
HANDLE_TC_STMT_PRE(tc);
tc = wi->Cond()->Traverse(cb);
HANDLE_TC_STMT_PRE(tc);
auto wl = wi->Lambda();
tc = wi->WhenBody()->Traverse(cb);
HANDLE_TC_STMT_PRE(tc);
if ( wi->TimeoutExpr() )
if ( wl )
{
tc = wi->TimeoutExpr()->Traverse(cb);
tc = wl->Traverse(cb);
HANDLE_TC_STMT_PRE(tc);
}
if ( wi->TimeoutStmt() )
else
{
tc = wi->TimeoutStmt()->Traverse(cb);
tc = wi->Cond()->Traverse(cb);
HANDLE_TC_STMT_PRE(tc);
tc = wi->WhenBody()->Traverse(cb);
HANDLE_TC_STMT_PRE(tc);
if ( wi->TimeoutStmt() )
{
tc = wi->TimeoutStmt()->Traverse(cb);
HANDLE_TC_STMT_PRE(tc);
}
}
tc = cb->PostStmt(this);