@@ -573,7 +573,7 @@ object Parsers {
573
573
def inBraces [T ](body : => T ): T = enclosed(LBRACE , body)
574
574
def inBrackets [T ](body : => T ): T = enclosed(LBRACKET , body)
575
575
576
- def inBracesOrIndented [T ](body : => T ): T =
576
+ def inBracesOrIndented [T ](body : => T , rewriteWithColon : Boolean = false ): T =
577
577
if (in.token == INDENT ) {
578
578
val rewriteToBraces =
579
579
in.rewriteNoIndent &&
@@ -582,12 +582,12 @@ object Parsers {
582
582
else enclosed(INDENT , body)
583
583
}
584
584
else
585
- if (in.rewriteToIndent) bracesToIndented(body)
585
+ if (in.rewriteToIndent) bracesToIndented(body, rewriteWithColon )
586
586
else inBraces(body)
587
587
588
- def inDefScopeBraces [T ](body : => T ): T = {
588
+ def inDefScopeBraces [T ](body : => T , rewriteWithColon : Boolean = false ): T = {
589
589
val saved = lastStatOffset
590
- try inBracesOrIndented(body)
590
+ try inBracesOrIndented(body, rewriteWithColon )
591
591
finally lastStatOffset = saved
592
592
}
593
593
@@ -775,8 +775,9 @@ object Parsers {
775
775
* rewriting back to braces does not work after `=>` (since in most cases braces are omitted
776
776
* after a `=>` it would be annoying if braces were inserted).
777
777
*/
778
- def bracesToIndented [T ](body : => T ): T = {
779
- val colonRequired = possibleColonOffset == in.lastOffset
778
+ def bracesToIndented [T ](body : => T , rewriteWithColon : Boolean ): T = {
779
+ val underColonSyntax = possibleColonOffset == in.lastOffset
780
+ val colonRequired = rewriteWithColon || underColonSyntax
780
781
val (startOpening, endOpening) = startingElimRegion(colonRequired)
781
782
val isOutermost = in.currentRegion.isOutermost
782
783
def allBraces (r : Region ): Boolean = r match {
@@ -795,10 +796,10 @@ object Parsers {
795
796
}
796
797
})
797
798
canRewrite &= (in.isAfterLineEnd || statCtdTokens.contains(in.token)) // test (5)
798
- if (canRewrite && (! colonRequired || in.colonSyntax)) {
799
+ if (canRewrite && (! underColonSyntax || in.colonSyntax)) {
799
800
val openingPatchStr =
800
- if ( ! colonRequired) " "
801
- else if ( testChar(startOpening - 1 , Chars .isOperatorPart(_))) " :"
801
+ if ! colonRequired then " "
802
+ else if testChar(startOpening - 1 , Chars .isOperatorPart(_)) then " :"
802
803
else " :"
803
804
val (startClosing, endClosing) = closingElimRegion()
804
805
patch(source, Span (startOpening, endOpening), openingPatchStr)
@@ -1736,7 +1737,8 @@ object Parsers {
1736
1737
1737
1738
/** Refinement ::= `{' RefineStatSeq `}'
1738
1739
*/
1739
- def refinement (): List [Tree ] = inBracesOrIndented(refineStatSeq())
1740
+ def refinement (): List [Tree ] =
1741
+ inBracesOrIndented(refineStatSeq(), rewriteWithColon = true )
1740
1742
1741
1743
/** TypeBounds ::= [`>:' Type] [`<:' Type]
1742
1744
*/
@@ -2469,11 +2471,10 @@ object Parsers {
2469
2471
val pos = t.sourcePos
2470
2472
pos.startLine < pos.endLine
2471
2473
}
2472
- if (rewriteToNewSyntax( Span (start)) && (leading == LBRACE || ! hasMultiLineEnum)) {
2474
+ if in.newSyntax && in.rewrite && (leading == LBRACE || ! hasMultiLineEnum) then
2473
2475
// Don't rewrite if that could change meaning of newlines
2474
2476
newLinesOpt()
2475
2477
dropParensOrBraces(start, if (in.token == YIELD || in.token == DO ) " " else " do" )
2476
- }
2477
2478
}
2478
2479
in.observeIndented()
2479
2480
res
@@ -3687,7 +3688,7 @@ object Parsers {
3687
3688
Template (constr, parents, derived, self, stats)
3688
3689
3689
3690
def templateBody (): (ValDef , List [Tree ]) =
3690
- val r = inDefScopeBraces { templateStatSeq() }
3691
+ val r = inDefScopeBraces( templateStatSeq(), rewriteWithColon = true )
3691
3692
if in.token == WITH then
3692
3693
syntaxError(EarlyDefinitionsNotSupported ())
3693
3694
in.nextToken()
@@ -3706,7 +3707,7 @@ object Parsers {
3706
3707
def packaging (start : Int ): Tree =
3707
3708
val pkg = qualId()
3708
3709
possibleTemplateStart()
3709
- val stats = inDefScopeBraces(topStatSeq())
3710
+ val stats = inDefScopeBraces(topStatSeq(), rewriteWithColon = true )
3710
3711
makePackaging(start, pkg, stats)
3711
3712
3712
3713
/** TopStatSeq ::= TopStat {semi TopStat}
@@ -3898,7 +3899,7 @@ object Parsers {
3898
3899
if in.token == EOF then
3899
3900
ts += makePackaging(start, pkg, List ())
3900
3901
else if in.isNestedStart then
3901
- ts += inDefScopeBraces(makePackaging(start, pkg, topStatSeq()))
3902
+ ts += inDefScopeBraces(makePackaging(start, pkg, topStatSeq()), rewriteWithColon = true )
3902
3903
continue = true
3903
3904
else
3904
3905
acceptStatSep()
0 commit comments