@@ -537,15 +537,13 @@ object Parsers {
537
537
def inBrackets [T ](body : => T ): T = enclosed(LBRACKET , body)
538
538
539
539
def inBracesOrIndented [T ](body : => T , rewriteWithColon : Boolean = false ): T =
540
- if (in.token == INDENT ) {
541
- val rewriteToBraces =
542
- in.rewriteNoIndent &&
543
- ! testChars(in.lastOffset - 3 , " =>" ) // braces are always optional after `=>` so none should be inserted
544
- if (rewriteToBraces) indentedToBraces(body)
540
+ if in.token == INDENT then
541
+ val rewriteToBraces = in.rewriteNoIndent
542
+ && ! testChars(in.lastOffset - 3 , " =>" ) // braces are always optional after `=>` so none should be inserted
543
+ if rewriteToBraces then indentedToBraces(body)
545
544
else enclosed(INDENT , body)
546
- }
547
545
else
548
- if ( in.rewriteToIndent) bracesToIndented(body, rewriteWithColon)
546
+ if in.rewriteToIndent then bracesToIndented(body, rewriteWithColon)
549
547
else inBraces(body)
550
548
551
549
def inDefScopeBraces [T ](body : => T , rewriteWithColon : Boolean = false ): T =
@@ -635,68 +633,63 @@ object Parsers {
635
633
else idx
636
634
637
635
/** Parse indentation region `body` and rewrite it to be in braces instead */
638
- def indentedToBraces [T ](body : => T ): T = {
639
- val enclRegion = in.currentRegion.enclosing
640
- def indentWidth = enclRegion.indentWidth
636
+ def indentedToBraces [T ](body : => T ): T =
637
+ val enclRegion = in.currentRegion.enclosing // capture on entry
638
+ def indentWidth = enclRegion.indentWidth
641
639
val followsColon = testChar(in.lastOffset - 1 , ':' )
642
- val startOpening =
643
- if (followsColon)
644
- if (testChar(in.lastOffset - 2 , ' ' )) in.lastOffset - 2
645
- else in.lastOffset - 1
646
- else in.lastOffset
647
- val endOpening = in.lastOffset
648
-
649
- val t = enclosed(INDENT , body)
650
640
651
641
/** Is `expr` a tree that lacks a final `else`? Put such trees in `{...}` to make
652
642
* sure we don't accidentally merge them with a following `else`.
653
643
*/
654
644
def isPartialIf (expr : Tree ): Boolean = expr match {
655
645
case If (_, _, EmptyTree ) => true
656
- case If (_, _, e) => isPartialIf(e)
657
- case _ => false
646
+ case If (_, _, e) => isPartialIf(e)
647
+ case _ => false
658
648
}
659
649
660
650
/** Is `expr` a (possibly curried) function that has a multi-statement block
661
651
* as body? Put such trees in `{...}` since we don't enclose statements following
662
652
* a `=>` in braces.
663
653
*/
664
654
def isBlockFunction [T ](expr : T ): Boolean = expr match {
665
- case Function (_, body) => isBlockFunction(body)
655
+ case Function (_, body) => isBlockFunction(body)
666
656
case Block (stats, expr) => stats.nonEmpty || isBlockFunction(expr)
667
- case _ => false
657
+ case _ => false
668
658
}
669
659
670
660
/** Start of first line after in.lastOffset that does not have a comment
671
661
* at indent width greater than the indent width of the closing brace.
672
662
*/
673
663
def closingOffset (lineStart : Offset ): Offset =
674
- if ( in.lineOffset >= 0 && lineStart >= in.lineOffset) in.lineOffset
675
- else {
676
- val candidate = source.nextLine(lineStart)
664
+ if in.lineOffset >= 0 && lineStart >= in.lineOffset then in.lineOffset
665
+ else
666
+ val candidate = source.nextLine(lineStart) // unused
677
667
val commentStart = skipBlanks(lineStart)
678
- if (testChar(commentStart, '/' ) && indentWidth < in.indentWidth(commentStart))
679
- closingOffset(source.nextLine(lineStart))
680
- else
681
- lineStart
682
- }
668
+ if testChar(commentStart, '/' ) && indentWidth < in.indentWidth(commentStart)
669
+ then closingOffset(source.nextLine(lineStart))
670
+ else lineStart
683
671
684
672
def needsBraces (t : Any ): Boolean = t match {
685
673
case Match (EmptyTree , _) => true
686
- case Block (stats, expr) =>
687
- stats.nonEmpty || needsBraces(expr)
688
- case expr : Tree =>
689
- followsColon ||
690
- isPartialIf(expr) && in.token == ELSE ||
691
- isBlockFunction(expr)
692
- case _ => true
693
- }
694
- if (needsBraces(t)) {
674
+ case Block (stats, expr) => stats.nonEmpty || needsBraces(expr)
675
+ case expr : Tree => followsColon
676
+ || isPartialIf(expr) && in.token == ELSE
677
+ || isBlockFunction(expr)
678
+ case _ => true
679
+ }
680
+ // begin indentedToBraces
681
+ val startOpening =
682
+ if followsColon then
683
+ if testChar(in.lastOffset - 2 , ' ' ) then in.lastOffset - 2
684
+ else in.lastOffset - 1
685
+ else in.lastOffset
686
+ val endOpening = in.lastOffset
687
+ val t = enclosed(INDENT , body)
688
+ if needsBraces(t) then
695
689
patch(source, Span (startOpening, endOpening), " {" )
696
690
patch(source, Span (closingOffset(source.nextLine(in.lastOffset))), indentWidth.toPrefix ++ " }\n " )
697
- }
698
691
t
699
- }
692
+ end indentedToBraces
700
693
701
694
/** The region to eliminate when replacing an opening `(` or `{` that ends a line.
702
695
* The `(` or `{` is at in.offset.
@@ -1304,12 +1297,11 @@ object Parsers {
1304
1297
case _ : (ForYield | ForDo ) => in.token == FOR
1305
1298
case _ => false
1306
1299
1307
- def matchesAndSetEnd (last : T ): Boolean = {
1300
+ def matchesAndSetEnd (last : T ): Boolean =
1308
1301
val didMatch = matches(last)
1309
1302
if didMatch then
1310
1303
updateSpanOfLast(last)
1311
1304
didMatch
1312
- }
1313
1305
1314
1306
if in.token == END then
1315
1307
val start = in.skipToken()
0 commit comments