1
1
import SwiftSyntax
2
2
import _SwiftSyntaxTestSupport
3
+ import SwiftSyntaxParser
3
4
import XCTest
4
5
6
+ private func parse( source: String ) throws -> Syntax {
7
+ return try Syntax ( SyntaxParser . parse ( source: source) )
8
+ }
9
+
5
10
public class SyntaxComparisonTests : XCTestCase {
6
11
public func testSame( ) throws {
7
12
let expected = Syntax ( makeFunc ( identifier: SyntaxFactory . makeIdentifier ( " f " ) ) )
8
13
9
14
let actual = Syntax ( makeFunc ( identifier: SyntaxFactory . makeIdentifier ( " f " ) ) )
10
15
XCTAssertNil ( actual. findFirstDifference ( baseline: expected) )
11
16
12
- let matcher = try SubtreeMatcher ( " struct A { func f() { } } " )
17
+ let matcher = try SubtreeMatcher ( " struct A { func f() { } } " , parse : parse )
13
18
try XCTAssertNil ( matcher. findFirstDifference ( baseline: expected) )
14
19
}
15
20
@@ -36,7 +41,7 @@ public class SyntaxComparisonTests: XCTestCase {
36
41
let actual = Syntax ( makeFunc ( identifier: SyntaxFactory . makeIdentifier ( " f " ) ) )
37
42
try expectations ( actual. findFirstDifference ( baseline: expected) )
38
43
39
- let matcher = try SubtreeMatcher ( " struct A { #^FUNC^#func f() { } } " )
44
+ let matcher = try SubtreeMatcher ( " struct A { #^FUNC^#func f() { } } " , parse : parse )
40
45
try expectations ( matcher. findFirstDifference ( baseline: expected) )
41
46
}
42
47
@@ -52,7 +57,7 @@ public class SyntaxComparisonTests: XCTestCase {
52
57
let actual = Syntax ( makeFunc ( identifier: SyntaxFactory . makeIdentifier ( " g " ) ) )
53
58
try expectations ( actual. findFirstDifference ( baseline: expected) )
54
59
55
- let matcher = try SubtreeMatcher ( " struct A { #^FUNC^#func g() { } } " )
60
+ let matcher = try SubtreeMatcher ( " struct A { #^FUNC^#func g() { } } " , parse : parse )
56
61
try expectations ( matcher. findFirstDifference ( afterMarker: " FUNC " , baseline: expected) )
57
62
}
58
63
@@ -69,7 +74,7 @@ public class SyntaxComparisonTests: XCTestCase {
69
74
XCTAssertNil ( actual. findFirstDifference ( baseline: expected) )
70
75
try expectations ( actual. findFirstDifference ( baseline: expected, includeTrivia: true ) )
71
76
72
- let matcher = try SubtreeMatcher ( " struct A {func f() { }} " )
77
+ let matcher = try SubtreeMatcher ( " struct A {func f() { }} " , parse : parse )
73
78
try XCTAssertNil ( matcher. findFirstDifference ( baseline: expected) )
74
79
try expectations ( matcher. findFirstDifference ( baseline: expected, includeTrivia: true ) )
75
80
}
@@ -86,7 +91,7 @@ public class SyntaxComparisonTests: XCTestCase {
86
91
let actual = Syntax ( makeFunc ( identifier: SyntaxFactory . makeIdentifier ( " f " ) ) )
87
92
try expectations ( actual. findFirstDifference ( baseline: expected) )
88
93
89
- let matcher = try SubtreeMatcher ( " struct A { func f() { } } " )
94
+ let matcher = try SubtreeMatcher ( " struct A { func f() { } } " , parse : parse )
90
95
try expectations ( matcher. findFirstDifference ( baseline: expected) )
91
96
}
92
97
@@ -100,7 +105,7 @@ public class SyntaxComparisonTests: XCTestCase {
100
105
let actual = Syntax ( makeFunc ( identifier: SyntaxFactory . makeIdentifier ( " f " ) ) )
101
106
try expectations ( actual. findFirstDifference ( baseline: expected) )
102
107
103
- let matcher = try SubtreeMatcher ( " struct A { func f() { } } " )
108
+ let matcher = try SubtreeMatcher ( " struct A { func f() { } } " , parse : parse )
104
109
try expectations ( matcher. findFirstDifference ( baseline: expected) )
105
110
}
106
111
@@ -120,7 +125,7 @@ public class SyntaxComparisonTests: XCTestCase {
120
125
0
121
126
}
122
127
}
123
- """ )
128
+ """ , parse : parse )
124
129
try expectations ( matcher. findFirstDifference ( baseline: expected) )
125
130
}
126
131
@@ -137,7 +142,7 @@ public class SyntaxComparisonTests: XCTestCase {
137
142
0
138
143
}
139
144
}
140
- """ )
145
+ """ , parse : parse )
141
146
let funcDiff = try XCTUnwrap ( matcher. findFirstDifference ( afterMarker: " FUNC " , baseline: expectedFunc) )
142
147
XCTAssertEqual ( funcDiff. reason, . additionalNode)
143
148
0 commit comments