@@ -40,23 +40,22 @@ func isExprMigrated(_ node: ExprSyntax) -> Bool {
40
40
while true {
41
41
switch current. kind {
42
42
// Known implemented kinds.
43
- case . arrayExpr, . arrowExpr, . assignmentExpr, . awaitExpr, . binaryOperatorExpr,
43
+ case . asExpr , . arrayExpr, . arrowExpr, . assignmentExpr, . awaitExpr, . binaryOperatorExpr,
44
44
. booleanLiteralExpr, . borrowExpr, . closureExpr, . consumeExpr, . copyExpr,
45
45
. discardAssignmentExpr, . declReferenceExpr, . dictionaryExpr, . floatLiteralExpr,
46
- . functionCallExpr, . ifExpr, . integerLiteralExpr, . memberAccessExpr,
46
+ . functionCallExpr, . ifExpr,
47
+ . infixOperatorExpr, . inOutExpr, . integerLiteralExpr, . memberAccessExpr,
47
48
. nilLiteralExpr, . packElementExpr, . packExpansionExpr, . patternExpr,
48
49
. postfixOperatorExpr, . prefixOperatorExpr, . regexLiteralExpr, . sequenceExpr,
49
50
. simpleStringLiteralExpr, . subscriptCallExpr, . stringLiteralExpr, . superExpr,
50
51
. tryExpr, . tupleExpr, . typeExpr, . unresolvedAsExpr, . unresolvedIsExpr,
51
- . unresolvedTernaryExpr:
52
+ . unresolvedTernaryExpr, . ternaryExpr :
52
53
break
53
54
54
55
// Known unimplemented kinds.
55
- case . asExpr,
56
- . doExpr, . editorPlaceholderExpr, . forceUnwrapExpr, . inOutExpr,
57
- . infixOperatorExpr, . isExpr, . keyPathExpr, . macroExpansionExpr,
56
+ case . doExpr, . editorPlaceholderExpr, . forceUnwrapExpr, . isExpr, . keyPathExpr, . macroExpansionExpr,
58
57
. optionalChainingExpr, . postfixIfConfigExpr, . genericSpecializationExpr,
59
- . switchExpr, . ternaryExpr :
58
+ . switchExpr:
60
59
return false
61
60
62
61
// Unknown expr kinds.
@@ -85,7 +84,7 @@ extension ASTGenVisitor {
85
84
case . arrowExpr:
86
85
preconditionFailure ( " should be handled in generate(sequenceExpr:) " )
87
86
case . asExpr:
88
- break
87
+ preconditionFailure ( " AsExprSyntax expression only appear after operator folding " )
89
88
case . assignmentExpr:
90
89
preconditionFailure ( " should be handled in generate(sequenceExpr:) " )
91
90
case . awaitExpr( let node) :
@@ -122,10 +121,10 @@ extension ASTGenVisitor {
122
121
break
123
122
case . ifExpr( let node) :
124
123
return self . generate ( ifExpr: node) . asExpr
125
- case . inOutExpr:
126
- break
124
+ case . inOutExpr( let node ) :
125
+ return self . generate ( inOutExpr : node ) . asExpr
127
126
case . infixOperatorExpr:
128
- break
127
+ preconditionFailure ( " InfixOperatorExprSyntax only appear after operator folding " )
129
128
case . integerLiteralExpr( let node) :
130
129
return self . generate ( integerLiteralExpr: node) . asExpr
131
130
case . isExpr:
@@ -169,8 +168,8 @@ extension ASTGenVisitor {
169
168
return self . generate ( superExpr: node) . asExpr
170
169
case . switchExpr:
171
170
break
172
- case . ternaryExpr( let node ) :
173
- preconditionFailure ( " Ternary expression only appear after operator folding" )
171
+ case . ternaryExpr:
172
+ preconditionFailure ( " TernaryExprSyntax only appear after operator folding" )
174
173
case . tryExpr( let node) :
175
174
return self . generate ( tryExpr: node)
176
175
case . tupleExpr( let node) :
@@ -500,6 +499,15 @@ extension ASTGenVisitor {
500
499
)
501
500
}
502
501
502
+ func generate( inOutExpr node: InOutExprSyntax ) -> BridgedInOutExpr {
503
+ let subExpr = self . generate ( expr: node. expression)
504
+ return . createParsed(
505
+ self . ctx,
506
+ loc: self . generateSourceLoc ( node. ampersand) ,
507
+ subExpr: subExpr
508
+ )
509
+ }
510
+
503
511
func generate( ifExpr node: IfExprSyntax ) -> BridgedSingleValueStmtExpr {
504
512
let stmt = generateIfStmt ( ifExpr: node) . asStmt
505
513
0 commit comments