Skip to content

Commit 0583311

Browse files
CodaFiRobert Widmann
authored andcommitted
Remove Unknown Syntax Nodes
These were used by libSyntax to indicate that it had encountered something malformed or that it couldn't represent. This does not fit into the new parser's resilience model, so we no longer need these nodes.
1 parent 6fcc5a4 commit 0583311

31 files changed

+3467
-4559
lines changed

CodeGeneration/Sources/SyntaxSupport/gyb_generated/CommonNodes.swift

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -38,26 +38,6 @@ public let COMMON_NODES: [Node] = [
3838
kind: "Syntax",
3939
parserFunction: "parsePattern"),
4040

41-
Node(name: "UnknownDecl",
42-
nameForDiagnostics: "declaration",
43-
kind: "Decl"),
44-
45-
Node(name: "UnknownExpr",
46-
nameForDiagnostics: "expression",
47-
kind: "Expr"),
48-
49-
Node(name: "UnknownStmt",
50-
nameForDiagnostics: "statement",
51-
kind: "Stmt"),
52-
53-
Node(name: "UnknownType",
54-
nameForDiagnostics: "type",
55-
kind: "Type"),
56-
57-
Node(name: "UnknownPattern",
58-
nameForDiagnostics: "pattern",
59-
kind: "Pattern"),
60-
6141
Node(name: "Missing",
6242
nameForDiagnostics: nil,
6343
kind: "Syntax"),

Sources/SwiftSyntax/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ add_swift_host_library(SwiftSyntax
2121
SyntaxOtherNodes.swift
2222
SyntaxText.swift
2323
SyntaxTreeViewMode.swift
24-
SyntaxVerifier.swift
2524
Utils.swift
2625

2726
Raw/RawSyntax.swift

Sources/SwiftSyntax/Documentation.docc/SwiftSyntax.md.gyb

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,6 @@ allows Swift tools to parse, inspect, generate, and transform Swift source code.
4949
- <doc:SwiftSyntax/SyntaxVisitor>
5050
- <doc:SwiftSyntax/SyntaxAnyVisitor>
5151
- <doc:SwiftSyntax/SyntaxRewriter>
52-
- <doc:SwiftSyntax/SyntaxVerifier>
53-
- <doc:SwiftSyntax/SyntaxVerifierError>
5452
- <doc:SwiftSyntax/SyntaxTreeViewMode>
5553
- <doc:SwiftSyntax/SyntaxVisitorContinueKind>
5654
- <doc:SwiftSyntax/ReversedTokenSequence>

Sources/SwiftSyntax/Documentation.docc/gyb_generated/SwiftSyntax.md

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,6 @@ allows Swift tools to parse, inspect, generate, and transform Swift source code.
4242
- <doc:SwiftSyntax/SyntaxVisitor>
4343
- <doc:SwiftSyntax/SyntaxAnyVisitor>
4444
- <doc:SwiftSyntax/SyntaxRewriter>
45-
- <doc:SwiftSyntax/SyntaxVerifier>
46-
- <doc:SwiftSyntax/SyntaxVerifierError>
4745
- <doc:SwiftSyntax/SyntaxTreeViewMode>
4846
- <doc:SwiftSyntax/SyntaxVisitorContinueKind>
4947
- <doc:SwiftSyntax/ReversedTokenSequence>
@@ -52,7 +50,6 @@ allows Swift tools to parse, inspect, generate, and transform Swift source code.
5250

5351
- <doc:SwiftSyntax/DeclSyntax>
5452
- <doc:SwiftSyntax/DeclSyntaxProtocol>
55-
- <doc:SwiftSyntax/UnknownDeclSyntax>
5653
- <doc:SwiftSyntax/TypealiasDeclSyntax>
5754
- <doc:SwiftSyntax/AssociatedtypeDeclSyntax>
5855
- <doc:SwiftSyntax/IfConfigDeclSyntax>
@@ -82,7 +79,6 @@ allows Swift tools to parse, inspect, generate, and transform Swift source code.
8279

8380
- <doc:SwiftSyntax/StmtSyntax>
8481
- <doc:SwiftSyntax/StmtSyntaxProtocol>
85-
- <doc:SwiftSyntax/UnknownStmtSyntax>
8682
- <doc:SwiftSyntax/LabeledStmtSyntax>
8783
- <doc:SwiftSyntax/ContinueStmtSyntax>
8884
- <doc:SwiftSyntax/WhileStmtSyntax>
@@ -106,7 +102,6 @@ allows Swift tools to parse, inspect, generate, and transform Swift source code.
106102

107103
- <doc:SwiftSyntax/ExprSyntax>
108104
- <doc:SwiftSyntax/ExprSyntaxProtocol>
109-
- <doc:SwiftSyntax/UnknownExprSyntax>
110105
- <doc:SwiftSyntax/InOutExprSyntax>
111106
- <doc:SwiftSyntax/PoundColumnExprSyntax>
112107
- <doc:SwiftSyntax/TryExprSyntax>
@@ -156,7 +151,6 @@ allows Swift tools to parse, inspect, generate, and transform Swift source code.
156151

157152
- <doc:SwiftSyntax/TypeSyntax>
158153
- <doc:SwiftSyntax/TypeSyntaxProtocol>
159-
- <doc:SwiftSyntax/UnknownTypeSyntax>
160154
- <doc:SwiftSyntax/SimpleTypeIdentifierSyntax>
161155
- <doc:SwiftSyntax/MemberTypeIdentifierSyntax>
162156
- <doc:SwiftSyntax/ClassRestrictionTypeSyntax>
@@ -177,7 +171,6 @@ allows Swift tools to parse, inspect, generate, and transform Swift source code.
177171

178172
- <doc:SwiftSyntax/PatternSyntax>
179173
- <doc:SwiftSyntax/PatternSyntaxProtocol>
180-
- <doc:SwiftSyntax/UnknownPatternSyntax>
181174
- <doc:SwiftSyntax/EnumCasePatternSyntax>
182175
- <doc:SwiftSyntax/IsTypePatternSyntax>
183176
- <doc:SwiftSyntax/OptionalPatternSyntax>

Sources/SwiftSyntax/Raw/gyb_generated/RawSyntaxNodes.swift

Lines changed: 5 additions & 130 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public struct RawDeclSyntax: RawDeclSyntaxNodeProtocol {
3434

3535
public static func isKindOf(_ raw: RawSyntax) -> Bool {
3636
switch raw.kind {
37-
case .unknownDecl, .missingDecl, .typealiasDecl, .associatedtypeDecl, .ifConfigDecl, .poundErrorDecl, .poundWarningDecl, .poundSourceLocation, .classDecl, .actorDecl, .structDecl, .protocolDecl, .extensionDecl, .functionDecl, .initializerDecl, .deinitializerDecl, .subscriptDecl, .importDecl, .accessorDecl, .variableDecl, .enumCaseDecl, .enumDecl, .operatorDecl, .precedenceGroupDecl, .macroDecl, .macroExpansionDecl: return true
37+
case .missingDecl, .typealiasDecl, .associatedtypeDecl, .ifConfigDecl, .poundErrorDecl, .poundWarningDecl, .poundSourceLocation, .classDecl, .actorDecl, .structDecl, .protocolDecl, .extensionDecl, .functionDecl, .initializerDecl, .deinitializerDecl, .subscriptDecl, .importDecl, .accessorDecl, .variableDecl, .enumCaseDecl, .enumDecl, .operatorDecl, .precedenceGroupDecl, .macroDecl, .macroExpansionDecl: return true
3838
default: return false
3939
}
4040
}
@@ -65,7 +65,7 @@ public struct RawExprSyntax: RawExprSyntaxNodeProtocol {
6565

6666
public static func isKindOf(_ raw: RawSyntax) -> Bool {
6767
switch raw.kind {
68-
case .unknownExpr, .missingExpr, .inOutExpr, .poundColumnExpr, .tryExpr, .awaitExpr, .moveExpr, .identifierExpr, .superRefExpr, .nilLiteralExpr, .discardAssignmentExpr, .assignmentExpr, .sequenceExpr, .symbolicReferenceExpr, .prefixOperatorExpr, .binaryOperatorExpr, .arrowExpr, .infixOperatorExpr, .floatLiteralExpr, .tupleExpr, .arrayExpr, .dictionaryExpr, .integerLiteralExpr, .booleanLiteralExpr, .unresolvedTernaryExpr, .ternaryExpr, .memberAccessExpr, .unresolvedIsExpr, .isExpr, .unresolvedAsExpr, .asExpr, .typeExpr, .closureExpr, .unresolvedPatternExpr, .functionCallExpr, .subscriptExpr, .optionalChainingExpr, .forcedValueExpr, .postfixUnaryExpr, .specializeExpr, .stringLiteralExpr, .regexLiteralExpr, .keyPathExpr, .macroExpansionExpr, .postfixIfConfigExpr, .editorPlaceholderExpr: return true
68+
case .missingExpr, .inOutExpr, .poundColumnExpr, .tryExpr, .awaitExpr, .moveExpr, .identifierExpr, .superRefExpr, .nilLiteralExpr, .discardAssignmentExpr, .assignmentExpr, .sequenceExpr, .symbolicReferenceExpr, .prefixOperatorExpr, .binaryOperatorExpr, .arrowExpr, .infixOperatorExpr, .floatLiteralExpr, .tupleExpr, .arrayExpr, .dictionaryExpr, .integerLiteralExpr, .booleanLiteralExpr, .unresolvedTernaryExpr, .ternaryExpr, .memberAccessExpr, .unresolvedIsExpr, .isExpr, .unresolvedAsExpr, .asExpr, .typeExpr, .closureExpr, .unresolvedPatternExpr, .functionCallExpr, .subscriptExpr, .optionalChainingExpr, .forcedValueExpr, .postfixUnaryExpr, .specializeExpr, .stringLiteralExpr, .regexLiteralExpr, .keyPathExpr, .macroExpansionExpr, .postfixIfConfigExpr, .editorPlaceholderExpr: return true
6969
default: return false
7070
}
7171
}
@@ -96,7 +96,7 @@ public struct RawStmtSyntax: RawStmtSyntaxNodeProtocol {
9696

9797
public static func isKindOf(_ raw: RawSyntax) -> Bool {
9898
switch raw.kind {
99-
case .unknownStmt, .missingStmt, .labeledStmt, .continueStmt, .whileStmt, .deferStmt, .expressionStmt, .repeatWhileStmt, .guardStmt, .forInStmt, .switchStmt, .doStmt, .returnStmt, .yieldStmt, .fallthroughStmt, .breakStmt, .declarationStmt, .throwStmt, .ifStmt, .poundAssertStmt: return true
99+
case .missingStmt, .labeledStmt, .continueStmt, .whileStmt, .deferStmt, .expressionStmt, .repeatWhileStmt, .guardStmt, .forInStmt, .switchStmt, .doStmt, .returnStmt, .yieldStmt, .fallthroughStmt, .breakStmt, .declarationStmt, .throwStmt, .ifStmt, .poundAssertStmt: return true
100100
default: return false
101101
}
102102
}
@@ -127,7 +127,7 @@ public struct RawTypeSyntax: RawTypeSyntaxNodeProtocol {
127127

128128
public static func isKindOf(_ raw: RawSyntax) -> Bool {
129129
switch raw.kind {
130-
case .unknownType, .missingType, .simpleTypeIdentifier, .memberTypeIdentifier, .classRestrictionType, .arrayType, .dictionaryType, .metatypeType, .optionalType, .constrainedSugarType, .implicitlyUnwrappedOptionalType, .compositionType, .packExpansionType, .tupleType, .functionType, .attributedType, .namedOpaqueReturnType: return true
130+
case .missingType, .simpleTypeIdentifier, .memberTypeIdentifier, .classRestrictionType, .arrayType, .dictionaryType, .metatypeType, .optionalType, .constrainedSugarType, .implicitlyUnwrappedOptionalType, .compositionType, .packExpansionType, .tupleType, .functionType, .attributedType, .namedOpaqueReturnType: return true
131131
default: return false
132132
}
133133
}
@@ -158,7 +158,7 @@ public struct RawPatternSyntax: RawPatternSyntaxNodeProtocol {
158158

159159
public static func isKindOf(_ raw: RawSyntax) -> Bool {
160160
switch raw.kind {
161-
case .unknownPattern, .missingPattern, .enumCasePattern, .isTypePattern, .optionalPattern, .identifierPattern, .asTypePattern, .tuplePattern, .wildcardPattern, .expressionPattern, .valueBindingPattern: return true
161+
case .missingPattern, .enumCasePattern, .isTypePattern, .optionalPattern, .identifierPattern, .asTypePattern, .tuplePattern, .wildcardPattern, .expressionPattern, .valueBindingPattern: return true
162162
default: return false
163163
}
164164
}
@@ -179,131 +179,6 @@ public struct RawPatternSyntax: RawPatternSyntaxNodeProtocol {
179179
}
180180
}
181181

182-
@_spi(RawSyntax)
183-
public struct RawUnknownDeclSyntax: RawDeclSyntaxNodeProtocol {
184-
185-
@_spi(RawSyntax)
186-
public var layoutView: RawSyntaxLayoutView {
187-
return raw.layoutView!
188-
}
189-
190-
public static func isKindOf(_ raw: RawSyntax) -> Bool {
191-
return raw.kind == .unknownDecl
192-
}
193-
194-
public var raw: RawSyntax
195-
init(raw: RawSyntax) {
196-
assert(Self.isKindOf(raw))
197-
self.raw = raw
198-
}
199-
200-
public init?<Node: RawSyntaxNodeProtocol>(_ other: Node) {
201-
guard Self.isKindOf(other.raw) else { return nil }
202-
self.init(raw: other.raw)
203-
}
204-
205-
}
206-
207-
@_spi(RawSyntax)
208-
public struct RawUnknownExprSyntax: RawExprSyntaxNodeProtocol {
209-
210-
@_spi(RawSyntax)
211-
public var layoutView: RawSyntaxLayoutView {
212-
return raw.layoutView!
213-
}
214-
215-
public static func isKindOf(_ raw: RawSyntax) -> Bool {
216-
return raw.kind == .unknownExpr
217-
}
218-
219-
public var raw: RawSyntax
220-
init(raw: RawSyntax) {
221-
assert(Self.isKindOf(raw))
222-
self.raw = raw
223-
}
224-
225-
public init?<Node: RawSyntaxNodeProtocol>(_ other: Node) {
226-
guard Self.isKindOf(other.raw) else { return nil }
227-
self.init(raw: other.raw)
228-
}
229-
230-
}
231-
232-
@_spi(RawSyntax)
233-
public struct RawUnknownStmtSyntax: RawStmtSyntaxNodeProtocol {
234-
235-
@_spi(RawSyntax)
236-
public var layoutView: RawSyntaxLayoutView {
237-
return raw.layoutView!
238-
}
239-
240-
public static func isKindOf(_ raw: RawSyntax) -> Bool {
241-
return raw.kind == .unknownStmt
242-
}
243-
244-
public var raw: RawSyntax
245-
init(raw: RawSyntax) {
246-
assert(Self.isKindOf(raw))
247-
self.raw = raw
248-
}
249-
250-
public init?<Node: RawSyntaxNodeProtocol>(_ other: Node) {
251-
guard Self.isKindOf(other.raw) else { return nil }
252-
self.init(raw: other.raw)
253-
}
254-
255-
}
256-
257-
@_spi(RawSyntax)
258-
public struct RawUnknownTypeSyntax: RawTypeSyntaxNodeProtocol {
259-
260-
@_spi(RawSyntax)
261-
public var layoutView: RawSyntaxLayoutView {
262-
return raw.layoutView!
263-
}
264-
265-
public static func isKindOf(_ raw: RawSyntax) -> Bool {
266-
return raw.kind == .unknownType
267-
}
268-
269-
public var raw: RawSyntax
270-
init(raw: RawSyntax) {
271-
assert(Self.isKindOf(raw))
272-
self.raw = raw
273-
}
274-
275-
public init?<Node: RawSyntaxNodeProtocol>(_ other: Node) {
276-
guard Self.isKindOf(other.raw) else { return nil }
277-
self.init(raw: other.raw)
278-
}
279-
280-
}
281-
282-
@_spi(RawSyntax)
283-
public struct RawUnknownPatternSyntax: RawPatternSyntaxNodeProtocol {
284-
285-
@_spi(RawSyntax)
286-
public var layoutView: RawSyntaxLayoutView {
287-
return raw.layoutView!
288-
}
289-
290-
public static func isKindOf(_ raw: RawSyntax) -> Bool {
291-
return raw.kind == .unknownPattern
292-
}
293-
294-
public var raw: RawSyntax
295-
init(raw: RawSyntax) {
296-
assert(Self.isKindOf(raw))
297-
self.raw = raw
298-
}
299-
300-
public init?<Node: RawSyntaxNodeProtocol>(_ other: Node) {
301-
guard Self.isKindOf(other.raw) else { return nil }
302-
self.init(raw: other.raw)
303-
}
304-
305-
}
306-
307182
@_spi(RawSyntax)
308183
public struct RawMissingSyntax: RawSyntaxNodeProtocol {
309184

Sources/SwiftSyntax/Raw/gyb_generated/RawSyntaxValidation.swift

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -89,16 +89,6 @@ func validateLayout(layout: RawSyntaxBuffer, as kind: SyntaxKind) {
8989
break
9090
case .token:
9191
assertionFailure("validateLayout for .token kind is not supported")
92-
case .unknownDecl:
93-
break
94-
case .unknownExpr:
95-
break
96-
case .unknownStmt:
97-
break
98-
case .unknownType:
99-
break
100-
case .unknownPattern:
101-
break
10292
case .missing:
10393
assert(layout.count == 0)
10494
break

Sources/SwiftSyntax/Syntax.swift

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -272,11 +272,6 @@ public extension SyntaxProtocol {
272272
return raw.kind.isSyntaxCollection
273273
}
274274

275-
/// Whether or not this node represents an unknown node.
276-
var isUnknown: Bool {
277-
return raw.kind.isUnknown
278-
}
279-
280275
/// Whether this tree contains a missing token or unexpected node.
281276
var hasError: Bool {
282277
return raw.recursiveFlags.contains(.hasError)

Sources/SwiftSyntax/SyntaxKind.swift.gyb

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -39,18 +39,6 @@ public enum SyntaxKind {
3939
}
4040
}
4141

42-
public var isUnknown: Bool {
43-
switch self {
44-
% for name in SYNTAX_BASE_KINDS:
45-
% if name not in ["Syntax", "SyntaxCollection"]:
46-
case .unknown${name}: return true
47-
% end
48-
% end
49-
case .unknown: return true
50-
default: return false
51-
}
52-
}
53-
5442
public var isMissing: Bool {
5543
switch self {
5644
% for name in SYNTAX_BASE_KINDS:

Sources/SwiftSyntax/SyntaxRewriter.swift.gyb

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -100,24 +100,15 @@ open class SyntaxRewriter {
100100

101101
% end
102102

103-
% for node in SYNTAX_NODES:
103+
% for node in NON_BASE_SYNTAX_NODES:
104104
/// Implementation detail of visit(_:). Do not call directly.
105105
private func visitImpl${node.name}(_ data: SyntaxData) -> Syntax {
106-
% if node.is_base():
107-
let node = Unknown${node.name}(data)
108-
// Accessing _syntaxNode directly is faster than calling Syntax(node)
109-
visitPre(node._syntaxNode)
110-
defer { visitPost(node._syntaxNode) }
111-
if let newNode = visitAny(node._syntaxNode) { return newNode }
112-
return Syntax(visit(node))
113-
% else:
114-
let node = ${node.name}(data)
115-
// Accessing _syntaxNode directly is faster than calling Syntax(node)
116-
visitPre(node._syntaxNode)
117-
defer { visitPost(node._syntaxNode) }
118-
if let newNode = visitAny(node._syntaxNode) { return newNode }
119-
return Syntax(visit(node))
120-
% end
106+
let node = ${node.name}(data)
107+
// Accessing _syntaxNode directly is faster than calling Syntax(node)
108+
visitPre(node._syntaxNode)
109+
defer { visitPost(node._syntaxNode) }
110+
if let newNode = visitAny(node._syntaxNode) { return newNode }
111+
return Syntax(visit(node))
121112
}
122113

123114
% end

0 commit comments

Comments
 (0)