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 {
161
161
return self . generate ( subscriptCallExpr: node) . asExpr
162
162
case . superExpr( let node) :
163
163
return self . generate ( superExpr: node) . asExpr
164
- case . switchExpr:
165
- break
164
+ case . switchExpr( let node ) :
165
+ return self . generate ( switchExpr : node ) . asExpr
166
166
case . ternaryExpr:
167
167
preconditionFailure ( " TernaryExprSyntax only appear after operator folding " )
168
168
case . tryExpr( let node) :
@@ -1063,6 +1063,18 @@ extension ASTGenVisitor {
1063
1063
return . createParsed( self . ctx, superLoc: self . generateSourceLoc ( node) )
1064
1064
}
1065
1065
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
+
1066
1078
func generate( tryExpr node: TryExprSyntax ) -> BridgedExpr {
1067
1079
let tryLoc = self . generateSourceLoc ( node. tryKeyword)
1068
1080
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) {
193
193
var value : Int ? = 1
194
194
value? += 1
195
195
}
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