Skip to content

Commit 6f25a8f

Browse files
committed
Don't drop braces for pure structural types
1 parent 15acff8 commit 6f25a8f

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

compiler/src/dotty/tools/dotc/parsing/Parsers.scala

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1534,7 +1534,9 @@ object Parsers {
15341534
def refinedTypeRest(t: Tree): Tree = {
15351535
argumentStart()
15361536
if (in.isNestedStart)
1537-
refinedTypeRest(atSpan(startOffset(t)) { RefinedTypeTree(rejectWildcardType(t), refinement()) })
1537+
refinedTypeRest(atSpan(startOffset(t)) {
1538+
RefinedTypeTree(rejectWildcardType(t), refinement(indentOK = true))
1539+
})
15381540
else t
15391541
}
15401542

@@ -1631,7 +1633,7 @@ object Parsers {
16311633
makeTupleOrParens(inParens(argTypes(namedOK = false, wildOK = true)))
16321634
}
16331635
else if in.token == LBRACE then
1634-
atSpan(in.offset) { RefinedTypeTree(EmptyTree, refinement()) }
1636+
atSpan(in.offset) { RefinedTypeTree(EmptyTree, refinement(indentOK = false)) }
16351637
else if (isSplice)
16361638
splice(isType = true)
16371639
else
@@ -1775,8 +1777,11 @@ object Parsers {
17751777

17761778
/** Refinement ::= `{' RefineStatSeq `}'
17771779
*/
1778-
def refinement(): List[Tree] =
1779-
inBracesOrIndented(refineStatSeq(), rewriteWithColon = true)
1780+
def refinement(indentOK: Boolean): List[Tree] =
1781+
if indentOK then
1782+
inBracesOrIndented(refineStatSeq(), rewriteWithColon = true)
1783+
else
1784+
inBraces(refineStatSeq())
17801785

17811786
/** TypeBounds ::= [`>:' Type] [`<:' Type]
17821787
*/

0 commit comments

Comments
 (0)