@@ -575,7 +575,8 @@ object Parsers {
575
575
576
576
/** Drop (...) or { ... }, replacing the closing element with `endStr` */
577
577
def dropParensOrBraces (start : Offset , endStr : String ): Unit = {
578
- patch(source, Span (start, start + 1 ), " " )
578
+ patch(source, Span (start, start + 1 ),
579
+ if (testChar(start - 1 , Chars .isIdentifierPart)) " " else " " )
579
580
val closingStartsLine = testChar(skipBlanks(in.lastOffset - 2 , - 1 ), Chars .LF )
580
581
val preFill = if (closingStartsLine || endStr.isEmpty) " " else " "
581
582
val postFill = if (in.lastOffset == in.offset) " " else " "
@@ -585,11 +586,25 @@ object Parsers {
585
586
patch(source, Span (startClosing, endClosing), s " $preFill$endStr$postFill" )
586
587
}
587
588
589
+ /** Drop current token, which is assumed to be `then` or `do`. */
590
+ def dropTerminator (): Unit = {
591
+ var startOffset = in.offset
592
+ var endOffset = in.lastCharOffset
593
+ if (in.isAfterLineEnd()) {
594
+ if (testChar(endOffset, ' ' )) endOffset += 1
595
+ }
596
+ else {
597
+ if (testChar(startOffset - 1 , ' ' )) startOffset -= 1
598
+ }
599
+ patch(source, Span (startOffset, endOffset), " " )
600
+ }
601
+
588
602
/** rewrite code with (...) around the source code of `t` */
589
603
def revertToParens (t : Tree ): Unit =
590
604
if (t.span.exists) {
591
605
patch(source, t.span.startPos, " (" )
592
- patch(source, Span (t.span.end, in.lastOffset), " )" )
606
+ patch(source, t.span.endPos, " )" )
607
+ dropTerminator()
593
608
}
594
609
595
610
/** In the tokens following the current one, does `query` precede any of the tokens that
@@ -1352,16 +1367,16 @@ object Parsers {
1352
1367
expr1Rest(postfixExprRest(simpleExprRest(t)), Location .ElseWhere )
1353
1368
}
1354
1369
if (in.token == altToken) {
1355
- in.nextToken()
1356
1370
if (in.rewriteOldSyntax) revertToParens(t)
1371
+ in.nextToken()
1357
1372
}
1358
1373
else if (in.rewriteNewSyntax)
1359
1374
dropParensOrBraces(t.span.start, s " ${tokenString(altToken)}" )
1360
1375
t
1361
1376
} else {
1362
1377
val t = inSepRegion(LPAREN , RPAREN )(expr())
1363
- accept(altToken)
1364
1378
if (in.rewriteOldSyntax) revertToParens(t)
1379
+ accept(altToken)
1365
1380
t
1366
1381
}
1367
1382
}
@@ -2027,17 +2042,7 @@ object Parsers {
2027
2042
ForYield (enums, expr())
2028
2043
}
2029
2044
else if (in.token == DO ) {
2030
- if (in.rewriteOldSyntax) {
2031
- var startOffset = in.offset
2032
- var endOffset = in.lastCharOffset
2033
- if (in.isAfterLineEnd()) {
2034
- if (testChar(endOffset, ' ' )) endOffset += 1
2035
- }
2036
- else {
2037
- if (testChar(startOffset - 1 , ' ' )) startOffset -= 1
2038
- }
2039
- patch(source, Span (startOffset, endOffset), " " )
2040
- }
2045
+ if (in.rewriteOldSyntax) dropTerminator()
2041
2046
in.nextToken()
2042
2047
ForDo (enums, expr())
2043
2048
}
0 commit comments