@@ -17,102 +17,113 @@ import SwiftSyntaxBuilder
1717import XCTest
1818import _SwiftSyntaxTestSupport
1919
20+ @discardableResult
21+ func testRefactorIfLet(
22+ _ syntax: ExprSyntax ,
23+ expected: ExprSyntax ,
24+ file: StaticString = #file,
25+ line: UInt = #line
26+ ) throws -> ExprSyntax {
27+ let ifExpr = try XCTUnwrap (
28+ syntax. as ( IfExprSyntax . self) ,
29+ file: file,
30+ line: line
31+ )
32+
33+ let refactored = try XCTUnwrap (
34+ MigrateToNewIfLetSyntax . refactor ( syntax: ifExpr) ,
35+ file: file,
36+ line: line
37+ )
38+
39+ AssertStringsEqualWithDiff ( expected. description, refactored. description)
40+ return ExprSyntax ( refactored)
41+ }
42+
2043final class MigrateToNewIfLetSyntaxTest : XCTestCase {
2144 func testRefactoring( ) throws {
22- let baselineSyntax : StmtSyntax = """
45+ let baselineSyntax : ExprSyntax = """
2346 if let x = x {}
2447 """
2548
26- let expectedSyntax : StmtSyntax = """
49+ let expectedSyntax : ExprSyntax = """
2750 if let x {}
2851 """
2952
30- let baseline = try XCTUnwrap ( baselineSyntax. as ( IfStmtSyntax . self) )
31- let expected = try XCTUnwrap ( expectedSyntax. as ( IfStmtSyntax . self) )
32-
33- let refactored = try XCTUnwrap ( MigrateToNewIfLetSyntax . refactor ( syntax: baseline) )
34-
35- AssertStringsEqualWithDiff ( expected. description, refactored. description)
53+ try testRefactorIfLet ( baselineSyntax, expected: expectedSyntax)
3654 }
3755
3856 func testIdempotence( ) throws {
39- let baselineSyntax : StmtSyntax = """
57+ let baselineSyntax : ExprSyntax = """
4058 if let x = x {}
4159 """
4260
43- let baseline = try XCTUnwrap ( baselineSyntax. as ( IfStmtSyntax . self) )
44-
45- let refactored = try XCTUnwrap ( MigrateToNewIfLetSyntax . refactor ( syntax: baseline) )
46- let refactoredAgain = try XCTUnwrap ( MigrateToNewIfLetSyntax . refactor ( syntax: baseline) )
61+ let expectedSyntax : ExprSyntax = """
62+ if let x {}
63+ """
4764
48- AssertStringsEqualWithDiff ( refactored. description, refactoredAgain. description)
65+ let refactored = try testRefactorIfLet ( baselineSyntax, expected: expectedSyntax)
66+ try testRefactorIfLet ( refactored, expected: expectedSyntax)
4967 }
5068
5169 func testMultiBinding( ) throws {
52- let baselineSyntax : StmtSyntax = """
70+ let baselineSyntax : ExprSyntax = """
5371 if let x = x, var y = y, let z = z {}
5472 """
5573
56- let expectedSyntax : StmtSyntax = """
74+ let expectedSyntax : ExprSyntax = """
5775 if let x, var y, let z {}
5876 """
5977
60- let baseline = try XCTUnwrap ( baselineSyntax. as ( IfStmtSyntax . self) )
61- let expected = try XCTUnwrap ( expectedSyntax. as ( IfStmtSyntax . self) )
62-
63- let refactored = try XCTUnwrap ( MigrateToNewIfLetSyntax . refactor ( syntax: baseline) )
64-
65- AssertStringsEqualWithDiff ( expected. description, refactored. description)
78+ try testRefactorIfLet ( baselineSyntax, expected: expectedSyntax)
6679 }
6780
6881 func testMixedBinding( ) throws {
69- let baselineSyntax : StmtSyntax = """
82+ let baselineSyntax : ExprSyntax = """
7083 if let x = x, var y = x, let z = y.w {}
7184 """
7285
73- let expectedSyntax : StmtSyntax = """
86+ let expectedSyntax : ExprSyntax = """
7487 if let x, var y = x, let z = y.w {}
7588 """
7689
77- let baseline = try XCTUnwrap ( baselineSyntax. as ( IfStmtSyntax . self) )
78- let expected = try XCTUnwrap ( expectedSyntax. as ( IfStmtSyntax . self) )
79-
80- let refactored = try XCTUnwrap ( MigrateToNewIfLetSyntax . refactor ( syntax: baseline) )
81-
82- AssertStringsEqualWithDiff ( expected. description, refactored. description)
90+ try testRefactorIfLet ( baselineSyntax, expected: expectedSyntax)
8391 }
8492
8593 func testConditions( ) throws {
86- let baselineSyntax : StmtSyntax = """
94+ let baselineSyntax : ExprSyntax = """
8795 if let x = x + 1, x == x, !x {}
8896 """
8997
90- let expectedSyntax : StmtSyntax = """
98+ let expectedSyntax : ExprSyntax = """
9199 if let x = x + 1, x == x, !x {}
92100 """
93101
94- let baseline = try XCTUnwrap ( baselineSyntax. as ( IfStmtSyntax . self) )
95- let expected = try XCTUnwrap ( expectedSyntax. as ( IfStmtSyntax . self) )
96-
97- let refactored = try XCTUnwrap ( MigrateToNewIfLetSyntax . refactor ( syntax: baseline) )
98-
99- AssertStringsEqualWithDiff ( expected. description, refactored. description)
102+ try testRefactorIfLet ( baselineSyntax, expected: expectedSyntax)
100103 }
101104
102105 func testWhitespaceNormalization( ) throws {
103- let baselineSyntax : StmtSyntax = """
106+ let baselineSyntax : ExprSyntax = """
104107 if let x = x , let y = y {}
105108 """
106109
107- let expectedSyntax : StmtSyntax = """
110+ let expectedSyntax : ExprSyntax = """
108111 if let x, let y {}
109112 """
110113
111- let baseline = try XCTUnwrap ( baselineSyntax. as ( IfStmtSyntax . self ) )
112- let expected = try XCTUnwrap ( expectedSyntax . as ( IfStmtSyntax . self ) )
114+ try testRefactorIfLet ( baselineSyntax, expected : expectedSyntax )
115+ }
113116
114- let refactored = try XCTUnwrap ( MigrateToNewIfLetSyntax . refactor ( syntax: baseline) )
117+ func testIfStmt( ) throws {
118+ let baselineSyntax : StmtSyntax = """
119+ if let x = x {}
120+ """
121+
122+ let expectedSyntax : ExprSyntax = """
123+ if let x {}
124+ """
115125
116- AssertStringsEqualWithDiff ( expected. description, refactored. description)
126+ let exprStmt = try XCTUnwrap ( baselineSyntax. as ( ExpressionStmtSyntax . self) )
127+ try testRefactorIfLet ( exprStmt. expression, expected: expectedSyntax)
117128 }
118129}
0 commit comments