Skip to content

Commit

Permalink
Less modifying of nodes
Browse files Browse the repository at this point in the history
  • Loading branch information
grynspan committed Dec 17, 2024
1 parent 36f90b4 commit 9a3b6ce
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 16 deletions.
8 changes: 5 additions & 3 deletions Sources/TestingMacros/Support/ConditionArgumentParsing.swift
Original file line number Diff line number Diff line change
Expand Up @@ -176,16 +176,18 @@ private final class _ContextInserter<C, M>: SyntaxRewriter where C: MacroExpansi
ExprSyntax(expressionContextNameExpr)
}

var result = FunctionCallExprSyntax(calledExpression: calledExpr) {
var result = FunctionCallExprSyntax(
calledExpression: calledExpr,
leftParen: .leftParenToken(),
rightParen: .rightParenToken()
) {
LabeledExprSyntax(expression: node.trimmed)
LabeledExprSyntax(expression: originalNode.expressionID(rootedAt: effectiveRootNode))
for argument in additionalArguments {
LabeledExprSyntax(argument)
}
}

result.leftParen = .leftParenToken()
result.rightParen = .rightParenToken()
result.leadingTrivia = originalNode.leadingTrivia
result.trailingTrivia = originalNode.trailingTrivia

Expand Down
25 changes: 12 additions & 13 deletions Sources/TestingMacros/Support/EffectfulExpressionHandling.swift
Original file line number Diff line number Diff line change
Expand Up @@ -74,19 +74,18 @@ func findEffectKeywords(in node: some SyntaxProtocol) -> Set<Keyword> {
/// - Returns: An expression representing a call to the function named
/// `thunkName`, passing `expr`.
private func _makeCallToEffectfulThunk(_ thunkName: TokenSyntax, passing expr: some ExprSyntaxProtocol) -> ExprSyntax {
var result = FunctionCallExprSyntax(
calledExpression: MemberAccessExprSyntax(
base: DeclReferenceExprSyntax(baseName: .identifier("Testing")),
declName: DeclReferenceExprSyntax(baseName: thunkName)
)
) {
LabeledExprSyntax(expression: expr.trimmed)
}

result.leftParen = .leftParenToken()
result.rightParen = .rightParenToken()

return ExprSyntax(result)
ExprSyntax(
FunctionCallExprSyntax(
calledExpression: MemberAccessExprSyntax(
base: DeclReferenceExprSyntax(baseName: .identifier("Testing")),
declName: DeclReferenceExprSyntax(baseName: thunkName)
),
leftParen: .leftParenToken(),
rightParen: .rightParenToken()
) {
LabeledExprSyntax(expression: expr.trimmed)
}
)
}

/// Apply the given effectful keywords (i.e. `try` and `await`) to an expression
Expand Down

0 comments on commit 9a3b6ce

Please sign in to comment.