mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
[AST] Avoid walking macro expanded bodies in non-expanded mode
Make sure we don't walk into the expansion of a body macro if the AST walker is configured not to walk macro expansions.
This commit is contained in:
@@ -558,7 +558,12 @@ class Traversal : public ASTVisitor<Traversal, Expr*, Stmt*,
|
||||
if (WalkGenerics && visitTrailingRequirements(AFD))
|
||||
return true;
|
||||
|
||||
if (AFD->getBody(/*canSynthesize=*/false)) {
|
||||
// If we're not walking macro expansions, avoid walking into a body if it
|
||||
// was expanded from a macro.
|
||||
auto SkipBody = !Walker.shouldWalkMacroArgumentsAndExpansion().second &&
|
||||
AFD->isBodyMacroExpanded();
|
||||
|
||||
if (!SkipBody && AFD->getBody(/*canSynthesize=*/false)) {
|
||||
AbstractFunctionDecl::BodyKind PreservedKind = AFD->getBodyKind();
|
||||
if (BraceStmt *S = cast_or_null<BraceStmt>(doIt(AFD->getBody())))
|
||||
AFD->setBody(S, PreservedKind);
|
||||
|
||||
Reference in New Issue
Block a user