Skip to content

Commit 25fdf85

Browse files
committed
Add visit method for ExprSyntax.
1 parent f2f35cf commit 25fdf85

File tree

2 files changed

+186
-0
lines changed

2 files changed

+186
-0
lines changed

Sources/SwiftSyntax/SyntaxVisitor.swift.gyb

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,20 @@ extension SyntaxTransformVisitor {
204204
% end
205205
}
206206
}
207+
208+
public func visit(_ data: ExprSyntax) -> [ResultType] {
209+
switch data.raw.kind {
210+
% for node in NON_BASE_SYNTAX_NODES:
211+
% if node.base_kind == "Expr":
212+
case .${node.swift_syntax_kind}:
213+
let node = data.as(${node.name}.self)!
214+
return visit(node)
215+
% end
216+
% end
217+
default:
218+
fatalError("Not expression?")
219+
}
220+
}
207221

208222
public func visitChildren<SyntaxType: SyntaxProtocol>(_ node: SyntaxType) -> [ResultType] {
209223
let syntaxNode = Syntax(node)

Sources/SwiftSyntax/gyb_generated/SyntaxVisitor.swift

Lines changed: 172 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10721,6 +10721,178 @@ extension SyntaxTransformVisitor {
1072110721
return visit(node)
1072210722
}
1072310723
}
10724+
10725+
public func visit(_ data: ExprSyntax) -> [ResultType] {
10726+
switch data.raw.kind {
10727+
case .unknownExpr:
10728+
let node = data.as(UnknownExprSyntax.self)!
10729+
return visit(node)
10730+
case .missingExpr:
10731+
let node = data.as(MissingExprSyntax.self)!
10732+
return visit(node)
10733+
case .inOutExpr:
10734+
let node = data.as(InOutExprSyntax.self)!
10735+
return visit(node)
10736+
case .poundColumnExpr:
10737+
let node = data.as(PoundColumnExprSyntax.self)!
10738+
return visit(node)
10739+
case .tryExpr:
10740+
let node = data.as(TryExprSyntax.self)!
10741+
return visit(node)
10742+
case .awaitExpr:
10743+
let node = data.as(AwaitExprSyntax.self)!
10744+
return visit(node)
10745+
case .moveExpr:
10746+
let node = data.as(MoveExprSyntax.self)!
10747+
return visit(node)
10748+
case .identifierExpr:
10749+
let node = data.as(IdentifierExprSyntax.self)!
10750+
return visit(node)
10751+
case .superRefExpr:
10752+
let node = data.as(SuperRefExprSyntax.self)!
10753+
return visit(node)
10754+
case .nilLiteralExpr:
10755+
let node = data.as(NilLiteralExprSyntax.self)!
10756+
return visit(node)
10757+
case .discardAssignmentExpr:
10758+
let node = data.as(DiscardAssignmentExprSyntax.self)!
10759+
return visit(node)
10760+
case .assignmentExpr:
10761+
let node = data.as(AssignmentExprSyntax.self)!
10762+
return visit(node)
10763+
case .sequenceExpr:
10764+
let node = data.as(SequenceExprSyntax.self)!
10765+
return visit(node)
10766+
case .poundLineExpr:
10767+
let node = data.as(PoundLineExprSyntax.self)!
10768+
return visit(node)
10769+
case .poundFileExpr:
10770+
let node = data.as(PoundFileExprSyntax.self)!
10771+
return visit(node)
10772+
case .poundFileIDExpr:
10773+
let node = data.as(PoundFileIDExprSyntax.self)!
10774+
return visit(node)
10775+
case .poundFilePathExpr:
10776+
let node = data.as(PoundFilePathExprSyntax.self)!
10777+
return visit(node)
10778+
case .poundFunctionExpr:
10779+
let node = data.as(PoundFunctionExprSyntax.self)!
10780+
return visit(node)
10781+
case .poundDsohandleExpr:
10782+
let node = data.as(PoundDsohandleExprSyntax.self)!
10783+
return visit(node)
10784+
case .symbolicReferenceExpr:
10785+
let node = data.as(SymbolicReferenceExprSyntax.self)!
10786+
return visit(node)
10787+
case .prefixOperatorExpr:
10788+
let node = data.as(PrefixOperatorExprSyntax.self)!
10789+
return visit(node)
10790+
case .binaryOperatorExpr:
10791+
let node = data.as(BinaryOperatorExprSyntax.self)!
10792+
return visit(node)
10793+
case .arrowExpr:
10794+
let node = data.as(ArrowExprSyntax.self)!
10795+
return visit(node)
10796+
case .infixOperatorExpr:
10797+
let node = data.as(InfixOperatorExprSyntax.self)!
10798+
return visit(node)
10799+
case .floatLiteralExpr:
10800+
let node = data.as(FloatLiteralExprSyntax.self)!
10801+
return visit(node)
10802+
case .tupleExpr:
10803+
let node = data.as(TupleExprSyntax.self)!
10804+
return visit(node)
10805+
case .arrayExpr:
10806+
let node = data.as(ArrayExprSyntax.self)!
10807+
return visit(node)
10808+
case .dictionaryExpr:
10809+
let node = data.as(DictionaryExprSyntax.self)!
10810+
return visit(node)
10811+
case .integerLiteralExpr:
10812+
let node = data.as(IntegerLiteralExprSyntax.self)!
10813+
return visit(node)
10814+
case .booleanLiteralExpr:
10815+
let node = data.as(BooleanLiteralExprSyntax.self)!
10816+
return visit(node)
10817+
case .unresolvedTernaryExpr:
10818+
let node = data.as(UnresolvedTernaryExprSyntax.self)!
10819+
return visit(node)
10820+
case .ternaryExpr:
10821+
let node = data.as(TernaryExprSyntax.self)!
10822+
return visit(node)
10823+
case .memberAccessExpr:
10824+
let node = data.as(MemberAccessExprSyntax.self)!
10825+
return visit(node)
10826+
case .unresolvedIsExpr:
10827+
let node = data.as(UnresolvedIsExprSyntax.self)!
10828+
return visit(node)
10829+
case .isExpr:
10830+
let node = data.as(IsExprSyntax.self)!
10831+
return visit(node)
10832+
case .unresolvedAsExpr:
10833+
let node = data.as(UnresolvedAsExprSyntax.self)!
10834+
return visit(node)
10835+
case .asExpr:
10836+
let node = data.as(AsExprSyntax.self)!
10837+
return visit(node)
10838+
case .typeExpr:
10839+
let node = data.as(TypeExprSyntax.self)!
10840+
return visit(node)
10841+
case .closureExpr:
10842+
let node = data.as(ClosureExprSyntax.self)!
10843+
return visit(node)
10844+
case .unresolvedPatternExpr:
10845+
let node = data.as(UnresolvedPatternExprSyntax.self)!
10846+
return visit(node)
10847+
case .functionCallExpr:
10848+
let node = data.as(FunctionCallExprSyntax.self)!
10849+
return visit(node)
10850+
case .subscriptExpr:
10851+
let node = data.as(SubscriptExprSyntax.self)!
10852+
return visit(node)
10853+
case .optionalChainingExpr:
10854+
let node = data.as(OptionalChainingExprSyntax.self)!
10855+
return visit(node)
10856+
case .forcedValueExpr:
10857+
let node = data.as(ForcedValueExprSyntax.self)!
10858+
return visit(node)
10859+
case .postfixUnaryExpr:
10860+
let node = data.as(PostfixUnaryExprSyntax.self)!
10861+
return visit(node)
10862+
case .specializeExpr:
10863+
let node = data.as(SpecializeExprSyntax.self)!
10864+
return visit(node)
10865+
case .stringLiteralExpr:
10866+
let node = data.as(StringLiteralExprSyntax.self)!
10867+
return visit(node)
10868+
case .regexLiteralExpr:
10869+
let node = data.as(RegexLiteralExprSyntax.self)!
10870+
return visit(node)
10871+
case .keyPathExpr:
10872+
let node = data.as(KeyPathExprSyntax.self)!
10873+
return visit(node)
10874+
case .keyPathBaseExpr:
10875+
let node = data.as(KeyPathBaseExprSyntax.self)!
10876+
return visit(node)
10877+
case .objcKeyPathExpr:
10878+
let node = data.as(ObjcKeyPathExprSyntax.self)!
10879+
return visit(node)
10880+
case .objcSelectorExpr:
10881+
let node = data.as(ObjcSelectorExprSyntax.self)!
10882+
return visit(node)
10883+
case .postfixIfConfigExpr:
10884+
let node = data.as(PostfixIfConfigExprSyntax.self)!
10885+
return visit(node)
10886+
case .editorPlaceholderExpr:
10887+
let node = data.as(EditorPlaceholderExprSyntax.self)!
10888+
return visit(node)
10889+
case .objectLiteralExpr:
10890+
let node = data.as(ObjectLiteralExprSyntax.self)!
10891+
return visit(node)
10892+
default:
10893+
fatalError("Not expression?")
10894+
}
10895+
}
1072410896

1072510897
public func visitChildren<SyntaxType: SyntaxProtocol>(_ node: SyntaxType) -> [ResultType] {
1072610898
let syntaxNode = Syntax(node)

0 commit comments

Comments
 (0)