@@ -40,23 +40,22 @@ func isExprMigrated(_ node: ExprSyntax) -> Bool {
4040 while true {
4141 switch current. kind {
4242 // Known implemented kinds.
43- case . arrayExpr, . arrowExpr, . assignmentExpr, . awaitExpr, . binaryOperatorExpr,
43+ case . asExpr , . arrayExpr, . arrowExpr, . assignmentExpr, . awaitExpr, . binaryOperatorExpr,
4444 . booleanLiteralExpr, . borrowExpr, . closureExpr, . consumeExpr, . copyExpr,
4545 . discardAssignmentExpr, . declReferenceExpr, . dictionaryExpr, . floatLiteralExpr,
46- . functionCallExpr, . ifExpr, . integerLiteralExpr, . memberAccessExpr,
46+ . functionCallExpr, . ifExpr,
47+ . infixOperatorExpr, . inOutExpr, . integerLiteralExpr, . memberAccessExpr,
4748 . nilLiteralExpr, . packElementExpr, . packExpansionExpr, . patternExpr,
4849 . postfixOperatorExpr, . prefixOperatorExpr, . regexLiteralExpr, . sequenceExpr,
4950 . simpleStringLiteralExpr, . subscriptCallExpr, . stringLiteralExpr, . superExpr,
5051 . tryExpr, . tupleExpr, . typeExpr, . unresolvedAsExpr, . unresolvedIsExpr,
51- . unresolvedTernaryExpr:
52+ . unresolvedTernaryExpr, . ternaryExpr :
5253 break
5354
5455 // Known unimplemented kinds.
55- case . asExpr,
56- . doExpr, . editorPlaceholderExpr, . forceUnwrapExpr, . inOutExpr,
57- . infixOperatorExpr, . isExpr, . keyPathExpr, . macroExpansionExpr,
56+ case . doExpr, . editorPlaceholderExpr, . forceUnwrapExpr, . isExpr, . keyPathExpr, . macroExpansionExpr,
5857 . optionalChainingExpr, . postfixIfConfigExpr, . genericSpecializationExpr,
59- . switchExpr, . ternaryExpr :
58+ . switchExpr:
6059 return false
6160
6261 // Unknown expr kinds.
@@ -85,7 +84,7 @@ extension ASTGenVisitor {
8584 case . arrowExpr:
8685 preconditionFailure ( " should be handled in generate(sequenceExpr:) " )
8786 case . asExpr:
88- break
87+ preconditionFailure ( " AsExprSyntax expression only appear after operator folding " )
8988 case . assignmentExpr:
9089 preconditionFailure ( " should be handled in generate(sequenceExpr:) " )
9190 case . awaitExpr( let node) :
@@ -122,10 +121,10 @@ extension ASTGenVisitor {
122121 break
123122 case . ifExpr( let node) :
124123 return self . generate ( ifExpr: node) . asExpr
125- case . inOutExpr:
126- break
124+ case . inOutExpr( let node ) :
125+ return self . generate ( inOutExpr : node ) . asExpr
127126 case . infixOperatorExpr:
128- break
127+ preconditionFailure ( " InfixOperatorExprSyntax only appear after operator folding " )
129128 case . integerLiteralExpr( let node) :
130129 return self . generate ( integerLiteralExpr: node) . asExpr
131130 case . isExpr:
@@ -169,8 +168,8 @@ extension ASTGenVisitor {
169168 return self . generate ( superExpr: node) . asExpr
170169 case . switchExpr:
171170 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" )
174173 case . tryExpr( let node) :
175174 return self . generate ( tryExpr: node)
176175 case . tupleExpr( let node) :
@@ -500,6 +499,15 @@ extension ASTGenVisitor {
500499 )
501500 }
502501
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+
503511 func generate( ifExpr node: IfExprSyntax ) -> BridgedSingleValueStmtExpr {
504512 let stmt = generateIfStmt ( ifExpr: node) . asStmt
505513
0 commit comments