Skip to content

Commit 79e86b5

Browse files
authored
Merge pull request #612 from fwcd/tokens-plus-assign
Add `+=` operator for `Trivia`
2 parents f59948f + 3b1d6c8 commit 79e86b5

File tree

3 files changed

+28
-6
lines changed

3 files changed

+28
-6
lines changed

Sources/SwiftSyntax/Trivia.swift.gyb

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -210,9 +210,16 @@ extension Trivia: CustomStringConvertible {
210210
}
211211
}
212212

213-
/// Concatenates two collections of `Trivia` into one collection.
214-
public func +(lhs: Trivia, rhs: Trivia) -> Trivia {
215-
return Trivia(pieces: lhs.pieces + rhs.pieces)
213+
extension Trivia {
214+
/// Concatenates two collections of `Trivia` into one collection.
215+
public static func +(lhs: Trivia, rhs: Trivia) -> Trivia {
216+
return Trivia(pieces: lhs.pieces + rhs.pieces)
217+
}
218+
219+
/// Concatenates two collections of `Trivia` into the left-hand side.
220+
public static func +=(lhs: inout Trivia, rhs: Trivia) {
221+
lhs = lhs + rhs
222+
}
216223
}
217224

218225
extension TriviaPiece: Equatable {}

Sources/SwiftSyntax/gyb_generated/Trivia.swift

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -336,9 +336,16 @@ extension Trivia: CustomStringConvertible {
336336
}
337337
}
338338

339-
/// Concatenates two collections of `Trivia` into one collection.
340-
public func +(lhs: Trivia, rhs: Trivia) -> Trivia {
341-
return Trivia(pieces: lhs.pieces + rhs.pieces)
339+
extension Trivia {
340+
/// Concatenates two collections of `Trivia` into one collection.
341+
public static func +(lhs: Trivia, rhs: Trivia) -> Trivia {
342+
return Trivia(pieces: lhs.pieces + rhs.pieces)
343+
}
344+
345+
/// Concatenates two collections of `Trivia` into the left-hand side.
346+
public static func +=(lhs: inout Trivia, rhs: Trivia) {
347+
lhs = lhs + rhs
348+
}
342349
}
343350

344351
extension TriviaPiece: Equatable {}

Tests/SwiftSyntaxBuilderTest/TriviaTests.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,12 @@ final class TriviaTests: XCTestCase {
2424
/* An inline comment */ static var test: String
2525
""")
2626
}
27+
28+
func testTriviaConcatenation() {
29+
let x = Trivia.newline
30+
var y = x
31+
y += .space
32+
XCTAssertEqual(y, x + .space)
33+
XCTAssertEqual(y, [.newlines(1), .spaces(1)])
34+
}
2735
}

0 commit comments

Comments
 (0)