@@ -424,17 +424,23 @@ public override async Task<SyntaxList<StatementSyntax>> VisitMultiLineIfBlock(VB
424424 var elseClause = await ConvertElseClause ( node . ElseBlock ) ;
425425 elseClause = elseClause . WithVbSourceMappingFrom ( node . ElseBlock ) ; //Special case where explicit mapping is needed since block becomes clause so cannot be easily visited
426426
427- foreach ( var elseIf in node . ElseIfBlocks . Reverse ( ) ) {
428- var elseBlock = SyntaxFactory . Block ( await ConvertStatements ( elseIf . Statements ) ) ;
429- var elseIfCondition = ( ExpressionSyntax ) await elseIf . ElseIfStatement . Condition . AcceptAsync ( _expressionVisitor ) ;
430- elseIfCondition = CommonConversions . TypeConversionAnalyzer . AddExplicitConversion ( elseIf . ElseIfStatement . Condition , elseIfCondition , forceTargetType : _vbBooleanTypeSymbol ) ;
431- var ifStmt = SyntaxFactory . IfStatement ( elseIfCondition , elseBlock , elseClause ) ;
427+ var elseIfBlocks = await node . ElseIfBlocks . SelectAsync ( async elseIf => await ConvertElseIf ( elseIf ) ) ;
428+ foreach ( var elseIf in elseIfBlocks . Reverse ( ) ) {
429+ var ifStmt = SyntaxFactory . IfStatement ( elseIf . ElseIfCondition , elseIf . ElseBlock , elseClause ) ;
432430 elseClause = SyntaxFactory . ElseClause ( ifStmt ) ;
433431 }
434432
435433 return SingleStatement ( SyntaxFactory . IfStatement ( condition , block , elseClause ) ) ;
436434 }
437435
436+ private async Task < ( ExpressionSyntax ElseIfCondition , BlockSyntax ElseBlock ) > ConvertElseIf ( VBSyntax . ElseIfBlockSyntax elseIf )
437+ {
438+ var elseBlock = SyntaxFactory . Block ( await ConvertStatements ( elseIf . Statements ) ) ;
439+ var elseIfCondition = ( ExpressionSyntax ) await elseIf . ElseIfStatement . Condition . AcceptAsync ( _expressionVisitor ) ;
440+ elseIfCondition = CommonConversions . TypeConversionAnalyzer . AddExplicitConversion ( elseIf . ElseIfStatement . Condition , elseIfCondition , forceTargetType : _vbBooleanTypeSymbol ) ;
441+ return ( elseIfCondition , elseBlock ) ;
442+ }
443+
438444 private async Task < ElseClauseSyntax > ConvertElseClause ( VBSyntax . ElseBlockSyntax elseBlock )
439445 {
440446 if ( elseBlock == null ) return null ;
0 commit comments