@@ -18,44 +18,6 @@ import SwiftIfConfig
18
18
19
19
import struct SwiftDiagnostics. Diagnostic
20
20
21
- enum ASTNode {
22
- case decl( BridgedDecl )
23
- case stmt( BridgedStmt )
24
- case expr( BridgedExpr )
25
-
26
- var castToExpr : BridgedExpr {
27
- guard case . expr( let bridged) = self else {
28
- fatalError ( " Expected an expr " )
29
- }
30
- return bridged
31
- }
32
-
33
- var castToStmt : BridgedStmt {
34
- guard case . stmt( let bridged) = self else {
35
- fatalError ( " Expected a stmt " )
36
- }
37
- return bridged
38
- }
39
-
40
- var castToDecl : BridgedDecl {
41
- guard case . decl( let bridged) = self else {
42
- fatalError ( " Expected a decl " )
43
- }
44
- return bridged
45
- }
46
-
47
- var bridged : BridgedASTNode {
48
- switch self {
49
- case . expr( let e) :
50
- return BridgedASTNode ( raw: e. raw, kind: . expr)
51
- case . stmt( let s) :
52
- return BridgedASTNode ( raw: s. raw, kind: . stmt)
53
- case . decl( let d) :
54
- return BridgedASTNode ( raw: d. raw, kind: . decl)
55
- }
56
- }
57
- }
58
-
59
21
/// Little utility wrapper that lets us have some mutable state within
60
22
/// immutable structs, and is therefore pretty evil.
61
23
@propertyWrapper
@@ -95,8 +57,8 @@ struct ASTGenVisitor {
95
57
self . configuredRegions = configuredRegions
96
58
}
97
59
98
- func generate( sourceFile node: SourceFileSyntax ) -> [ ASTNode ] {
99
- var out = [ ASTNode ] ( )
60
+ func generate( sourceFile node: SourceFileSyntax ) -> [ BridgedASTNode ] {
61
+ var out = [ BridgedASTNode ] ( )
100
62
let isTopLevel = self . declContext. isModuleScopeContext
101
63
102
64
visitIfConfigElements (
@@ -105,7 +67,7 @@ struct ASTGenVisitor {
105
67
split: Self . splitCodeBlockItemIfConfig
106
68
) { element in
107
69
108
- func generateStmtOrExpr( _ body: ( ) -> ASTNode ) -> ASTNode {
70
+ func generateStmtOrExpr( _ body: ( ) -> BridgedASTNode ) -> BridgedASTNode {
109
71
if !isTopLevel {
110
72
return body ( )
111
73
}
@@ -117,7 +79,7 @@ struct ASTGenVisitor {
117
79
118
80
// Diagnose top level code in non-script file.
119
81
if ( !declContext. parentSourceFile. isScriptMode) {
120
- switch astNode {
82
+ switch element . item {
121
83
case . stmt:
122
84
self . diagnose ( . illegalTopLevelStmt( element) )
123
85
case . expr:
@@ -131,7 +93,7 @@ struct ASTGenVisitor {
131
93
let body = BridgedBraceStmt . createImplicit (
132
94
self . ctx,
133
95
lBraceLoc: bodyRange. start,
134
- element: astNode. bridged ,
96
+ element: astNode,
135
97
rBraceLoc: bodyRange. end
136
98
)
137
99
topLevelDecl. setBody ( body: body)
@@ -147,7 +109,7 @@ struct ASTGenVisitor {
147
109
// Hoist 'VarDecl' to the top-level.
148
110
withBridgedSwiftClosure { ptr in
149
111
let hoisted = ptr!. load ( as: BridgedDecl . self)
150
- out. append ( ASTNode . decl ( hoisted) )
112
+ out. append ( . decl( hoisted) )
151
113
} call: { handle in
152
114
d. forEachDeclToHoist ( handle)
153
115
}
@@ -476,11 +438,11 @@ public func buildTopLevelASTNodes(
476
438
switch sourceFile. pointee. syntax. as ( SyntaxEnum . self) {
477
439
case . sourceFile( let node) :
478
440
for elem in visitor. generate ( sourceFile: node) {
479
- callback ( elem. bridged , outputContext)
441
+ callback ( elem, outputContext)
480
442
}
481
443
case . memberBlockItemList( let node) :
482
444
for elem in visitor. generate ( memberBlockItemList: node) {
483
- callback ( ASTNode . decl ( elem) . bridged , outputContext)
445
+ callback ( . decl( elem) , outputContext)
484
446
}
485
447
default :
486
448
fatalError ( " invalid syntax for a source file " )
0 commit comments