@@ -252,14 +252,16 @@ object Parsers {
252
252
253
253
/** Skip on error to next safe point.
254
254
*/
255
- protected def skip (stopAtComma : Boolean ): Unit =
255
+ protected def skip (): Unit =
256
256
val lastRegion = in.currentRegion
257
+ in.skipping = true
257
258
def atStop =
258
259
in.token == EOF
259
- || ((stopAtComma && in.token == COMMA ) || skipStopTokens.contains(in.token) ) && (in.currentRegion eq lastRegion)
260
+ || skipStopTokens.contains(in.token) && (in.currentRegion eq lastRegion)
260
261
while ! atStop do
261
262
in.nextToken()
262
263
lastErrorOffset = in.offset
264
+ in.skipping = false
263
265
264
266
def warning (msg : Message , sourcePos : SourcePosition ): Unit =
265
267
report.warning(msg, sourcePos)
@@ -281,13 +283,13 @@ object Parsers {
281
283
if (in.token == EOF ) incompleteInputError(msg)
282
284
else
283
285
syntaxError(msg, offset)
284
- skip(stopAtComma = true )
286
+ skip()
285
287
286
288
def syntaxErrorOrIncomplete (msg : Message , span : Span ): Unit =
287
289
if (in.token == EOF ) incompleteInputError(msg)
288
290
else
289
291
syntaxError(msg, span)
290
- skip(stopAtComma = true )
292
+ skip()
291
293
292
294
/** Consume one token of the specified type, or
293
295
* signal an error if it is not there.
@@ -355,7 +357,8 @@ object Parsers {
355
357
false // it's a statement that might be legal in an outer context
356
358
else
357
359
in.nextToken() // needed to ensure progress; otherwise we might cycle forever
358
- skip(stopAtComma= false )
360
+ lastErrorOffset = in.offset
361
+ skip()
359
362
true
360
363
361
364
in.observeOutdented()
@@ -562,18 +565,12 @@ object Parsers {
562
565
def inDefScopeBraces [T ](body : => T , rewriteWithColon : Boolean = false ): T =
563
566
inBracesOrIndented(body, rewriteWithColon)
564
567
565
- /** part { `separator` part }
566
- */
567
- def tokenSeparated [T ](separator : Int , part : () => T ): List [T ] = {
568
+ def commaSeparated [T ](part : () => T ): List [T ] =
568
569
val ts = new ListBuffer [T ] += part()
569
- while ( in.token == separator) {
570
+ while in.token == COMMA do
570
571
in.nextToken()
571
572
ts += part()
572
- }
573
573
ts.toList
574
- }
575
-
576
- def commaSeparated [T ](part : () => T ): List [T ] = tokenSeparated(COMMA , part)
577
574
578
575
def inSepRegion [T ](f : Region => Region )(op : => T ): T =
579
576
val cur = in.currentRegion
@@ -3766,7 +3763,7 @@ object Parsers {
3766
3763
val derived =
3767
3764
if (isIdent(nme.derives )) {
3768
3765
in.nextToken()
3769
- tokenSeparated( COMMA , () => convertToTypeId(qualId()))
3766
+ commaSeparated( () => convertToTypeId(qualId()))
3770
3767
}
3771
3768
else Nil
3772
3769
possibleTemplateStart()
0 commit comments