Skip to content

Commit 518f1d2

Browse files
authored
Merge pull request #473 from fwcd/auto-token-trivia
Automatically generate leading/trailing space trivia for tokens in `SyntaxFactory`
2 parents 26ffb45 + 94c6970 commit 518f1d2

File tree

9 files changed

+550
-402
lines changed

9 files changed

+550
-402
lines changed

Sources/SwiftSyntax/SyntaxFactory.swift.gyb

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -101,24 +101,38 @@ public enum SyntaxFactory {
101101

102102
/// MARK: Token Creation APIs
103103

104+
%{
105+
def token_trivia(requires_space):
106+
return '[.spaces(1)]' if requires_space else '[]'
107+
}%
108+
104109
% for token in SYNTAX_TOKENS:
110+
% leading_trivia = token_trivia(token.requires_leading_space)
111+
% trailing_trivia = token_trivia(token.requires_trailing_space)
105112
% if token.is_keyword:
106-
public static func make${token.name}Keyword(leadingTrivia: Trivia = [],
107-
trailingTrivia: Trivia = []) -> TokenSyntax {
113+
public static func make${token.name}Keyword(
114+
leadingTrivia: Trivia = ${leading_trivia},
115+
trailingTrivia: Trivia = ${trailing_trivia}
116+
) -> TokenSyntax {
108117
return makeToken(.${token.swift_kind()}, presence: .present,
109118
leadingTrivia: leadingTrivia,
110119
trailingTrivia: trailingTrivia)
111120
}
112121
% elif token.text:
113-
public static func make${token.name}Token(leadingTrivia: Trivia = [],
114-
trailingTrivia: Trivia = []) -> TokenSyntax {
122+
public static func make${token.name}Token(
123+
leadingTrivia: Trivia = ${leading_trivia},
124+
trailingTrivia: Trivia = ${trailing_trivia}
125+
) -> TokenSyntax {
115126
return makeToken(.${token.swift_kind()}, presence: .present,
116127
leadingTrivia: leadingTrivia,
117128
trailingTrivia: trailingTrivia)
118129
}
119130
% else:
120-
public static func make${token.name}(_ text: String,
121-
leadingTrivia: Trivia = [], trailingTrivia: Trivia = []) -> TokenSyntax {
131+
public static func make${token.name}(
132+
_ text: String,
133+
leadingTrivia: Trivia = ${leading_trivia},
134+
trailingTrivia: Trivia = ${trailing_trivia}
135+
) -> TokenSyntax {
122136
return makeToken(.${token.swift_kind()}(text), presence: .present,
123137
leadingTrivia: leadingTrivia,
124138
trailingTrivia: trailingTrivia)

0 commit comments

Comments
 (0)