@@ -18,44 +18,6 @@ import SwiftIfConfig
1818
1919import struct SwiftDiagnostics. Diagnostic
2020
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-
5921/// Little utility wrapper that lets us have some mutable state within
6022/// immutable structs, and is therefore pretty evil.
6123@propertyWrapper
@@ -95,8 +57,8 @@ struct ASTGenVisitor {
9557 self . configuredRegions = configuredRegions
9658 }
9759
98- func generate( sourceFile node: SourceFileSyntax ) -> [ ASTNode ] {
99- var out = [ ASTNode ] ( )
60+ func generate( sourceFile node: SourceFileSyntax ) -> [ BridgedASTNode ] {
61+ var out = [ BridgedASTNode ] ( )
10062 let isTopLevel = self . declContext. isModuleScopeContext
10163
10264 visitIfConfigElements (
@@ -105,7 +67,7 @@ struct ASTGenVisitor {
10567 split: Self . splitCodeBlockItemIfConfig
10668 ) { element in
10769
108- func generateStmtOrExpr( _ body: ( ) -> ASTNode ) -> ASTNode {
70+ func generateStmtOrExpr( _ body: ( ) -> BridgedASTNode ) -> BridgedASTNode {
10971 if !isTopLevel {
11072 return body ( )
11173 }
@@ -117,7 +79,7 @@ struct ASTGenVisitor {
11779
11880 // Diagnose top level code in non-script file.
11981 if ( !declContext. parentSourceFile. isScriptMode) {
120- switch astNode {
82+ switch element . item {
12183 case . stmt:
12284 self . diagnose ( . illegalTopLevelStmt( element) )
12385 case . expr:
@@ -131,7 +93,7 @@ struct ASTGenVisitor {
13193 let body = BridgedBraceStmt . createImplicit (
13294 self . ctx,
13395 lBraceLoc: bodyRange. start,
134- element: astNode. bridged ,
96+ element: astNode,
13597 rBraceLoc: bodyRange. end
13698 )
13799 topLevelDecl. setBody ( body: body)
@@ -147,7 +109,7 @@ struct ASTGenVisitor {
147109 // Hoist 'VarDecl' to the top-level.
148110 withBridgedSwiftClosure { ptr in
149111 let hoisted = ptr!. load ( as: BridgedDecl . self)
150- out. append ( ASTNode . decl ( hoisted) )
112+ out. append ( . decl( hoisted) )
151113 } call: { handle in
152114 d. forEachDeclToHoist ( handle)
153115 }
@@ -476,11 +438,11 @@ public func buildTopLevelASTNodes(
476438 switch sourceFile. pointee. syntax. as ( SyntaxEnum . self) {
477439 case . sourceFile( let node) :
478440 for elem in visitor. generate ( sourceFile: node) {
479- callback ( elem. bridged , outputContext)
441+ callback ( elem, outputContext)
480442 }
481443 case . memberBlockItemList( let node) :
482444 for elem in visitor. generate ( memberBlockItemList: node) {
483- callback ( ASTNode . decl ( elem) . bridged , outputContext)
445+ callback ( . decl( elem) , outputContext)
484446 }
485447 default :
486448 fatalError ( " invalid syntax for a source file " )
0 commit comments