@@ -66,7 +66,7 @@ extension Parser {
66
66
/// into a syntax collection.
67
67
@_spi ( RawSyntax)
68
68
public mutating func parsePoundIfDirective< Element: RawSyntaxNodeProtocol > (
69
- _ parseElement: ( inout Parser ) -> Element ? ,
69
+ _ parseElement: ( _ parser : inout Parser , _ isFirstElement : Bool ) -> Element ? ,
70
70
addSemicolonIfNeeded: ( _ lastElement: Element , _ newItemAtStartOfLine: Bool , _ parser: inout Parser ) -> Element ? = { _, _, _ in nil } ,
71
71
syntax: ( inout Parser , [ Element ] ) -> RawIfConfigClauseSyntax . Elements ?
72
72
) -> RawIfConfigDeclSyntax {
@@ -83,7 +83,7 @@ extension Parser {
83
83
do {
84
84
var firstIteration = true
85
85
var loopProgress = LoopProgressCondition ( )
86
- while let poundIfHandle = self . canRecoverTo ( any: firstIteration ? [ . poundIfKeyword] : [ . poundIfKeyword , . poundElseifKeyword, . poundElseKeyword] ) ,
86
+ while let poundIfHandle = self . canRecoverTo ( any: firstIteration ? [ . poundIfKeyword] : [ . poundElseifKeyword, . poundElseKeyword] ) ,
87
87
loopProgress. evaluate ( self . currentToken)
88
88
{
89
89
let ( unexpectedBeforePoundIf, poundIf) = self . eat ( poundIfHandle)
@@ -104,7 +104,7 @@ extension Parser {
104
104
var elementsProgress = LoopProgressCondition ( )
105
105
while !self . at ( any: [ . eof, . poundElseKeyword, . poundElseifKeyword, . poundEndifKeyword] ) && elementsProgress. evaluate ( currentToken) {
106
106
let newItemAtStartOfLine = self . currentToken. isAtStartOfLine
107
- guard let element = parseElement ( & self ) , !element. isEmpty else {
107
+ guard let element = parseElement ( & self , elements . isEmpty ) , !element. isEmpty else {
108
108
break
109
109
}
110
110
if let lastElement = elements. last, let fixedUpLastItem = addSemicolonIfNeeded ( lastElement, newItemAtStartOfLine, & self ) {
0 commit comments