File tree Expand file tree Collapse file tree 2 files changed +22
-2
lines changed
lib/ASTGen/Sources/ASTGen Expand file tree Collapse file tree 2 files changed +22
-2
lines changed Original file line number Diff line number Diff line change @@ -161,8 +161,8 @@ extension ASTGenVisitor {
161161 return self . generate ( subscriptCallExpr: node) . asExpr
162162 case . superExpr( let node) :
163163 return self . generate ( superExpr: node) . asExpr
164- case . switchExpr:
165- break
164+ case . switchExpr( let node ) :
165+ return self . generate ( switchExpr : node ) . asExpr
166166 case . ternaryExpr:
167167 preconditionFailure ( " TernaryExprSyntax only appear after operator folding " )
168168 case . tryExpr( let node) :
@@ -1063,6 +1063,18 @@ extension ASTGenVisitor {
10631063 return . createParsed( self . ctx, superLoc: self . generateSourceLoc ( node) )
10641064 }
10651065
1066+ func generate( switchExpr node: SwitchExprSyntax ) -> BridgedSingleValueStmtExpr {
1067+ let stmt = self . generateSwitchStmt ( switchExpr: node)
1068+
1069+ // Wrap in a SingleValueStmtExpr to embed as an expression.
1070+ return . createWithWrappedBranches(
1071+ ctx,
1072+ stmt: stmt. asStmt,
1073+ declContext: declContext,
1074+ mustBeExpr: true
1075+ )
1076+ }
1077+
10661078 func generate( tryExpr node: TryExprSyntax ) -> BridgedExpr {
10671079 let tryLoc = self . generateSourceLoc ( node. tryKeyword)
10681080 let subExpr = self . generate ( expr: node. expression)
Original file line number Diff line number Diff line change @@ -193,3 +193,11 @@ func testOptionalChain(value: TestStruct) {
193193 var value : Int ? = 1
194194 value? += 1
195195}
196+
197+ func testSwitchExpr( value: Int ) {
198+ let _ = switch value {
199+ case 0 : " foo "
200+ case ... 100 : " bar "
201+ default : " baz "
202+ }
203+ }
You can’t perform that action at this time.
0 commit comments