Skip to content

Commit 40518fa

Browse files
authored
Merge pull request #640 from fwcd/fwcd/prefix-expr-convenience-init
Add convenience initializer for `PrefixOperatorExpr`
2 parents 29f9cc1 + 55c33c1 commit 40518fa

File tree

2 files changed

+52
-0
lines changed

2 files changed

+52
-0
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
//===----------------------------------------------------------------------===//
2+
//
3+
// This source file is part of the Swift.org open source project
4+
//
5+
// Copyright (c) 2014 - 2022 Apple Inc. and the Swift project authors
6+
// Licensed under Apache License v2.0 with Runtime Library Exception
7+
//
8+
// See https://swift.org/LICENSE.txt for license information
9+
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
10+
//
11+
//===----------------------------------------------------------------------===//
12+
13+
import SwiftSyntax
14+
15+
extension PrefixOperatorExpr {
16+
public init(
17+
leadingTrivia: Trivia = [],
18+
_ prefixOperator: String,
19+
_ postfixExpression: ExpressibleAsExprBuildable
20+
) {
21+
self.init(
22+
leadingTrivia: leadingTrivia,
23+
operatorToken: .prefixOperator(prefixOperator),
24+
postfixExpression: postfixExpression
25+
)
26+
}
27+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import XCTest
2+
import SwiftSyntax
3+
import SwiftSyntaxBuilder
4+
5+
final class PrefixOperatorExprTests: XCTestCase {
6+
func testPrefixOperatorExprConvenienceInitializers() {
7+
let leadingTrivia = Trivia.unexpectedText("")
8+
let testCases: [UInt: (ExpressibleAsPrefixOperatorExpr, String)] = [
9+
#line: (PrefixOperatorExpr("!", "test"), "␣!test"),
10+
#line: (PrefixOperatorExpr("!", BooleanLiteralExpr(false)), "␣!false"),
11+
#line: (PrefixOperatorExpr("~", IntegerLiteralExpr(23)), "␣~23"),
12+
]
13+
14+
for (line, testCase) in testCases {
15+
let (builder, expected) = testCase
16+
let expr = builder.createPrefixOperatorExpr()
17+
let syntax = expr.buildSyntax(format: Format(), leadingTrivia: leadingTrivia)
18+
19+
var text = ""
20+
syntax.write(to: &text)
21+
22+
XCTAssertEqual(text, expected, line: line)
23+
}
24+
}
25+
}

0 commit comments

Comments
 (0)