Skip to content

Commit 9fb11fc

Browse files
committed
Add ExtensionDecl test
1 parent 8b60985 commit 9fb11fc

12 files changed

+55
-43
lines changed

Sources/SwiftSyntaxBuilder/FunctionCallExprConvenienceInitializers.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ extension FunctionCallExpr {
1919
leftParen: TokenSyntax? = nil,
2020
rightParen: TokenSyntax? = nil,
2121
trailingClosure: ExpressibleAsClosureExpr? = nil,
22-
@TupleExprElementListBuilder argumentListBuilder: () -> TupleExprElementList = { .empty },
22+
@TupleExprElementListBuilder argumentListBuilder: () -> ExpressibleAsTupleExprElementList = { TupleExprElementList.empty },
2323
@MultipleTrailingClosureElementListBuilder additionalTrailingClosuresBuilder: () -> MultipleTrailingClosureElementList? = { nil }
2424
) {
2525
self.init(

Sources/SwiftSyntaxBuilder/IdentifierExprConvenienceInitializers.swift

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,3 @@ extension IdentifierExpr {
1515
self.init(identifier: .identifier(identifier))
1616
}
1717
}
18-
19-
extension IdentifierExpr: ExpressibleByStringLiteral {
20-
public init(stringLiteral value: String) {
21-
self.init(value)
22-
}
23-
}

Sources/SwiftSyntaxBuilder/IdentifierPatternConvenienceInitializers.swift

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,3 @@ extension IdentifierPattern {
1515
self.init(identifier: .identifier(identifier))
1616
}
1717
}
18-
19-
extension IdentifierPattern: ExpressibleByStringLiteral {
20-
public init(stringLiteral value: String) {
21-
self.init(value)
22-
}
23-
}

Sources/SwiftSyntaxBuilder/SimpleTypeIdentifierConvenienceInitializers.swift

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,7 @@ import SwiftSyntax
1414

1515
extension SimpleTypeIdentifier {
1616
public init(_ name: String) {
17-
self.init(name: SyntaxFactory.makeIdentifier(name),
17+
self.init(name: .identifier(name),
1818
genericArgumentClause: nil)
1919
}
2020
}
21-
22-
extension SimpleTypeIdentifier: ExpressibleByStringLiteral {
23-
public init(stringLiteral value: String) {
24-
self.init(value)
25-
}
26-
}

Sources/SwiftSyntaxBuilder/StringLiteralExprConvenienceInitializers.swift

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,3 @@ extension StringLiteralExpr {
2323
closeQuote: closeQuote)
2424
}
2525
}
26-
27-
extension StringLiteralExpr: ExpressibleByStringLiteral {
28-
public init(stringLiteral value: String) {
29-
self.init(value)
30-
}
31-
}

Sources/SwiftSyntaxBuilder/TypeAnnotationConvenienceInitializers.swift

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,3 @@ extension TypeAnnotation {
1515
self.init(type: SimpleTypeIdentifier(type))
1616
}
1717
}
18-
19-
extension TypeAnnotation: ExpressibleByStringLiteral {
20-
public init(stringLiteral value: String) {
21-
self.init(value)
22-
}
23-
}

Tests/SwiftSyntaxBuilderTest/BinaryOperatorExprTests.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ final class BinaryOperatorExprTests: XCTestCase {
1515
let (builder, expected) = testCase
1616
let binaryOperatorExpr = builder.createBinaryOperatorExpr()
1717
let syntax = binaryOperatorExpr.buildSyntax(format: Format(), leadingTrivia: leadingTrivia)
18-
18+
1919
var text = ""
2020
syntax.write(to: &text)
21-
21+
2222
XCTAssertEqual(text, expected, line: line)
2323
}
2424
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import XCTest
2+
import SwiftSyntax
3+
import SwiftSyntaxBuilder
4+
5+
final class ExtensionDeclTests: XCTestCase {
6+
func testExtensionDecl() {
7+
let leadingTrivia = Trivia.garbageText("")
8+
9+
let keywords = ["associatedtype", "class"].map { keyword -> VariableDecl in
10+
// We need to use `CodeBlock` here to ensure there is braces around.
11+
let body = CodeBlock(statementsBuilder: {
12+
FunctionCallExpr("SyntaxFactory.make\(keyword)Keyword",
13+
leftParen: .leftParen,
14+
rightParen: .rightParen)
15+
})
16+
17+
return VariableDecl(letOrVarKeyword: .var,
18+
modifiersBuilder: { TokenSyntax.public },
19+
bindingsBuilder: {
20+
PatternBinding(pattern: "`\(keyword)`",
21+
typeAnnotation: "TokenSyntax",
22+
initializer: nil,
23+
accessor: body)
24+
25+
})
26+
}
27+
let members = MemberDeclList(keywords)
28+
let buildable = ExtensionDecl(modifiers: nil,
29+
extendedType: "TokenSyntax",
30+
members: members)
31+
32+
let syntax = buildable.buildSyntax(format: Format(), leadingTrivia: leadingTrivia)
33+
34+
var text = ""
35+
syntax.write(to: &text)
36+
37+
XCTAssertEqual(text, """
38+
␣extension TokenSyntax{
39+
public var `associatedtype`: TokenSyntax{
40+
SyntaxFactory.makeassociatedtypeKeyword()
41+
}
42+
public var `class`: TokenSyntax{
43+
SyntaxFactory.makeclassKeyword()
44+
}
45+
}
46+
""")
47+
}
48+
}

Tests/SwiftSyntaxBuilderTest/FunctionTests.swift

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,17 @@ import SwiftSyntax
33
import SwiftSyntaxBuilder
44

55
final class FunctionTests: XCTestCase {
6-
func testEmptyStruct() {
6+
func testFibonacci() {
77
let leadingTrivia = Trivia.garbageText("")
88

99
let input = ParameterClause(parameterListBuilder: {
1010
FunctionParameter(firstName: .wildcard, secondName: .identifier("n"), colon: .colon, type: "Int", attributesBuilder: {})
1111
})
1212

13-
let ifCodeBlock = CodeBlock(statementsBuilder: {
14-
ReturnStmt(expression: IntegerLiteralExpr(digits: "n"))
15-
})
16-
13+
let ifCodeBlock = ReturnStmt(expression: IntegerLiteralExpr(digits: "n"))
14+
1715
let signature = FunctionSignature(input: input, output: "Int")
1816

19-
2017
let codeBlock = CodeBlock(statementsBuilder: {
2118
IfStmt(conditions: ExprList([
2219
IntegerLiteralExpr(digits: "n"),

Tests/SwiftSyntaxBuilderTest/IdentifierExprTests.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ final class IdentifierExprTests: XCTestCase {
88

99
let testCases: [UInt: (ExpressibleAsIdentifierExpr, String)] = [
1010
#line: (IdentifierExpr(identifier: .identifier("Test")), "␣Test"),
11-
#line: (IdentifierExpr(stringLiteral: "Test"), "␣Test"),
1211
#line: (IdentifierExpr("Test"), "␣Test"),
1312
#line: ("Test", "␣Test")
1413
]

Tests/SwiftSyntaxBuilderTest/IdentifierPatternTests.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ final class IdentifierPatternTests: XCTestCase {
88

99
let testCases: [UInt: (ExpressibleAsIdentifierPattern, String)] = [
1010
#line: (IdentifierPattern(identifier: .identifier("Test")), "␣Test"),
11-
#line: (IdentifierPattern(stringLiteral: "Test"), "␣Test"),
1211
#line: (IdentifierPattern("Test"), "␣Test"),
1312
#line: ("Test", "␣Test")
1413
]

Tests/SwiftSyntaxBuilderTest/TypeAnnotationTests.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ final class TypeAnnotationTests: XCTestCase {
99
let testCases: [UInt: (ExpressibleAsTypeAnnotation, String)] = [
1010
#line: (TypeAnnotation(type: "Test"), "␣: Test"),
1111
#line: (TypeAnnotation(type: SimpleTypeIdentifier("Test")), "␣: Test"),
12-
#line: (TypeAnnotation(stringLiteral: "Test"), "␣: Test"),
1312
#line: (TypeAnnotation("Test"), "␣: Test"),
1413
#line: (SimpleTypeIdentifier("Test"), "␣: Test"),
1514
#line: ("Test", "␣: Test")

0 commit comments

Comments
 (0)