Skip to content

Commit 1228f53

Browse files
committed
Add a description method to Trivia
1 parent 3dd2e2b commit 1228f53

File tree

3 files changed

+66
-19
lines changed

3 files changed

+66
-19
lines changed

Sources/SwiftSyntax/Trivia.swift.gyb

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,26 @@ extension Trivia: ExpressibleByArrayLiteral {
163163
}
164164
}
165165

166+
extension Trivia: TextOutputStreamable {
167+
/// Prints the provided trivia as they would be written in a source file.
168+
///
169+
/// - Parameter stream: The stream to which to print the trivia.
170+
public func write<Target>(to target: inout Target)
171+
where Target: TextOutputStream {
172+
for piece in pieces {
173+
piece.write(to: &target)
174+
}
175+
}
176+
}
177+
178+
extension Trivia: CustomStringConvertible {
179+
public var description: String {
180+
var description = ""
181+
self.write(to: &description)
182+
return description
183+
}
184+
}
185+
166186
/// Concatenates two collections of `Trivia` into one collection.
167187
public func +(lhs: Trivia, rhs: Trivia) -> Trivia {
168188
return Trivia(pieces: lhs.pieces + rhs.pieces)

Sources/SwiftSyntax/gyb_generated/Trivia.swift

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,26 @@ extension Trivia: ExpressibleByArrayLiteral {
289289
}
290290
}
291291

292+
extension Trivia: TextOutputStreamable {
293+
/// Prints the provided trivia as they would be written in a source file.
294+
///
295+
/// - Parameter stream: The stream to which to print the trivia.
296+
public func write<Target>(to target: inout Target)
297+
where Target: TextOutputStream {
298+
for piece in pieces {
299+
piece.write(to: &target)
300+
}
301+
}
302+
}
303+
304+
extension Trivia: CustomStringConvertible {
305+
public var description: String {
306+
var description = ""
307+
self.write(to: &description)
308+
return description
309+
}
310+
}
311+
292312
/// Concatenates two collections of `Trivia` into one collection.
293313
public func +(lhs: Trivia, rhs: Trivia) -> Trivia {
294314
return Trivia(pieces: lhs.pieces + rhs.pieces)

Tests/SwiftSyntaxTest/CustomReflectableTests.swift

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
import XCTest
22
import SwiftSyntax
33

4+
private extension String {
5+
// This implementation is really slow; to use it outside a test it should be optimized.
6+
func trimmingTrailingWhitespace() -> String {
7+
return self.replacingOccurrences(of: "[ ]+\\n", with: "\n", options: .regularExpression)
8+
}
9+
}
10+
411

512
public class CustomReflectableTests: XCTestCase {
613

@@ -23,9 +30,9 @@ public class CustomReflectableTests: XCTestCase {
2330
expectedDumped: """
2431
▿ SwiftSyntax.TokenSyntax
2532
- text: "associatedtype"
26-
▿ leadingTrivia: SwiftSyntax.Trivia
33+
▿ leadingTrivia:
2734
- pieces: 0 elements
28-
▿ trailingTrivia: SwiftSyntax.Trivia
35+
▿ trailingTrivia:
2936
- pieces: 0 elements
3037
- tokenKind: SwiftSyntax.TokenKind.associatedtypeKeyword
3138
@@ -48,16 +55,16 @@ public class CustomReflectableTests: XCTestCase {
4855
▿ SwiftSyntax.TokenSequence
4956
▿ SwiftSyntax.TokenSyntax
5057
- text: "["
51-
▿ leadingTrivia: SwiftSyntax.Trivia
58+
▿ leadingTrivia:
5259
- pieces: 0 elements
53-
▿ trailingTrivia: SwiftSyntax.Trivia
60+
▿ trailingTrivia:
5461
- pieces: 0 elements
5562
- tokenKind: SwiftSyntax.TokenKind.leftSquareBracket
5663
▿ SwiftSyntax.TokenSyntax
5764
- text: "]"
58-
▿ leadingTrivia: SwiftSyntax.Trivia
65+
▿ leadingTrivia:
5966
- pieces: 0 elements
60-
▿ trailingTrivia: SwiftSyntax.Trivia
67+
▿ trailingTrivia:
6168
- pieces: 0 elements
6269
- tokenKind: SwiftSyntax.TokenKind.rightSquareBracket
6370
@@ -81,16 +88,16 @@ public class CustomReflectableTests: XCTestCase {
8188
▿ SwiftSyntax.ReversedTokenSequence
8289
▿ SwiftSyntax.TokenSyntax
8390
- text: "]"
84-
▿ leadingTrivia: SwiftSyntax.Trivia
91+
▿ leadingTrivia:
8592
- pieces: 0 elements
86-
▿ trailingTrivia: SwiftSyntax.Trivia
93+
▿ trailingTrivia:
8794
- pieces: 0 elements
8895
- tokenKind: SwiftSyntax.TokenKind.rightSquareBracket
8996
▿ SwiftSyntax.TokenSyntax
9097
- text: "["
91-
▿ leadingTrivia: SwiftSyntax.Trivia
98+
▿ leadingTrivia:
9299
- pieces: 0 elements
93-
▿ trailingTrivia: SwiftSyntax.Trivia
100+
▿ trailingTrivia:
94101
- pieces: 0 elements
95102
- tokenKind: SwiftSyntax.TokenKind.leftSquareBracket
96103
@@ -125,9 +132,9 @@ public class CustomReflectableTests: XCTestCase {
125132
▿ expression: SwiftSyntax.IntegerLiteralExprSyntax
126133
▿ digits: SwiftSyntax.TokenSyntax
127134
- text: "1"
128-
▿ leadingTrivia: SwiftSyntax.Trivia
135+
▿ leadingTrivia:
129136
- pieces: 0 elements
130-
▿ trailingTrivia: SwiftSyntax.Trivia
137+
▿ trailingTrivia:
131138
- pieces: 0 elements
132139
▿ tokenKind: SwiftSyntax.TokenKind.integerLiteral
133140
- integerLiteral: "1"
@@ -138,9 +145,9 @@ public class CustomReflectableTests: XCTestCase {
138145
▿ expression: SwiftSyntax.IntegerLiteralExprSyntax
139146
▿ digits: SwiftSyntax.TokenSyntax
140147
- text: "2"
141-
▿ leadingTrivia: SwiftSyntax.Trivia
148+
▿ leadingTrivia:
142149
- pieces: 0 elements
143-
▿ trailingTrivia: SwiftSyntax.Trivia
150+
▿ trailingTrivia:
144151
- pieces: 0 elements
145152
▿ tokenKind: SwiftSyntax.TokenKind.integerLiteral
146153
- integerLiteral: "2"
@@ -178,9 +185,9 @@ public class CustomReflectableTests: XCTestCase {
178185
▿ expression: SwiftSyntax.IntegerLiteralExprSyntax
179186
▿ digits: SwiftSyntax.TokenSyntax
180187
- text: "1"
181-
▿ leadingTrivia: SwiftSyntax.Trivia
188+
▿ leadingTrivia:
182189
- pieces: 0 elements
183-
▿ trailingTrivia: SwiftSyntax.Trivia
190+
▿ trailingTrivia:
184191
- pieces: 0 elements
185192
▿ tokenKind: SwiftSyntax.TokenKind.integerLiteral
186193
- integerLiteral: "1"
@@ -191,9 +198,9 @@ public class CustomReflectableTests: XCTestCase {
191198
▿ expression: SwiftSyntax.IntegerLiteralExprSyntax
192199
▿ digits: SwiftSyntax.TokenSyntax
193200
- text: "2"
194-
▿ leadingTrivia: SwiftSyntax.Trivia
201+
▿ leadingTrivia:
195202
- pieces: 0 elements
196-
▿ trailingTrivia: SwiftSyntax.Trivia
203+
▿ trailingTrivia:
197204
- pieces: 0 elements
198205
▿ tokenKind: SwiftSyntax.TokenKind.integerLiteral
199206
- integerLiteral: "2"
@@ -206,7 +213,7 @@ public class CustomReflectableTests: XCTestCase {
206213
testCases.forEach { keyAndValue in
207214
let (key: line, value: testCase) = keyAndValue
208215
let actualDumped = dumped(testCase.syntax)
209-
XCTAssertEqual(testCase.expectedDumped, actualDumped, line: line)
216+
XCTAssertEqual(testCase.expectedDumped.trimmingTrailingWhitespace(), actualDumped.trimmingTrailingWhitespace(), line: line)
210217
}
211218
}
212219

0 commit comments

Comments
 (0)