File tree 3 files changed +38
-14
lines changed
Sources/SwiftFormatPrettyPrint
Tests/SwiftFormatPrettyPrintTests
3 files changed +38
-14
lines changed Original file line number Diff line number Diff line change @@ -71,6 +71,18 @@ private final class TokenStreamCreator: SyntaxVisitor {
71
71
}
72
72
}
73
73
74
+ private func unknownToken( _ node: Syntax ) {
75
+ if let firstToken = node. firstToken, let before = beforeMap [ firstToken] {
76
+ tokens += before
77
+ }
78
+ appendToken ( . verbatim( Verbatim ( text: node. description) ) )
79
+ if let lastToken = node. lastToken, let afterGroups = afterMap [ lastToken] {
80
+ for after in afterGroups. reversed ( ) {
81
+ tokens += after
82
+ }
83
+ }
84
+ }
85
+
74
86
override func visitPre( _ node: Syntax ) { }
75
87
76
88
override func visit( _ node: DeclNameArgumentsSyntax ) {
@@ -1308,19 +1320,13 @@ private final class TokenStreamCreator: SyntaxVisitor {
1308
1320
super. visit ( node)
1309
1321
}
1310
1322
1323
+ override func visit( _ node: UnknownDeclSyntax ) {
1324
+ unknownToken ( node)
1325
+ // Call to super.visit is not needed here.
1326
+ }
1327
+
1311
1328
override func visit( _ node: UnknownStmtSyntax ) {
1312
- if let firstToken = node. firstToken, let before = beforeMap [ firstToken] {
1313
- tokens += before
1314
- }
1315
- appendToken ( . verbatim( Verbatim ( text: node. description) ) )
1316
- if let nextToken = node. nextToken, case . eof = nextToken. tokenKind {
1317
- appendToken ( . newline)
1318
- }
1319
- if let lastToken = node. lastToken, let afterGroups = afterMap [ lastToken] {
1320
- for after in afterGroups. reversed ( ) {
1321
- tokens += after
1322
- }
1323
- }
1329
+ unknownToken ( node)
1324
1330
// Call to super.visit is not needed here.
1325
1331
}
1326
1332
Original file line number Diff line number Diff line change @@ -15,8 +15,6 @@ public class AttributeTests: PrettyPrintTestCase {
15
15
@available(*, unavailable, renamed: " MyRenamedProtocol " )
16
16
@available(iOS 10.0, macOS 10.12, *)
17
17
18
-
19
-
20
18
"""
21
19
22
20
// Do not wrap attributes
Original file line number Diff line number Diff line change
1
+ public class UnknownDeclTests : PrettyPrintTestCase {
2
+ public func testUnknownDecl( ) {
3
+ let input =
4
+ """
5
+ struct MyStruct {
6
+ let a = 123
7
+ if a > 10 {
8
+ """
9
+
10
+ let expected =
11
+ """
12
+ struct MyStruct {
13
+ let a = 123
14
+ if a > 10 {
15
+
16
+ """
17
+
18
+ assertPrettyPrintEqual ( input: input, expected: expected, linelength: 45 )
19
+ }
20
+ }
You can’t perform that action at this time.
0 commit comments