@@ -1566,32 +1566,33 @@ object Parsers {
15661566 def infixTypeRest (t : Tree ): Tree =
15671567 infixOps(t, canStartTypeTokens, refinedType, isType = true , isOperator = ! isPostfixStar)
15681568
1569- /** RefinedType ::= WithType {[nl | ‘with’ ] Refinement}
1569+ /** RefinedType ::= WithType {[nl] Refinement}
15701570 */
15711571 val refinedType : () => Tree = () => refinedTypeRest(withType())
15721572
1573- def refinedTypeRest (t : Tree ): Tree =
1573+ def refinedTypeRest (t : Tree ): Tree = {
15741574 argumentStart()
1575- if isTemplateBodyStart then
1576- if in.token == WITH then in.nextToken()
1575+ if (in.isNestedStart)
15771576 refinedTypeRest(atSpan(startOffset(t)) {
15781577 RefinedTypeTree (rejectWildcardType(t), refinement(indentOK = true ))
15791578 })
15801579 else t
1580+ }
15811581
15821582 /** WithType ::= AnnotType {`with' AnnotType} (deprecated)
15831583 */
15841584 def withType (): Tree = withTypeRest(annotType())
15851585
15861586 def withTypeRest (t : Tree ): Tree =
1587- def isRefinementStart =
1588- val la = in.lookahead
1589- la.isAfterLineEnd || la.token == LBRACE
1590- if in.token == WITH && ! isRefinementStart then
1587+ if in.token == WITH then
1588+ val withOffset = in.offset
15911589 in.nextToken()
1592- if sourceVersion.isAtLeast(`3.1`) then
1593- deprecationWarning(DeprecatedWithOperator ())
1594- atSpan(startOffset(t)) { makeAndType(t, withType()) }
1590+ if in.token == LBRACE || in.token == INDENT then
1591+ t
1592+ else
1593+ if sourceVersion.isAtLeast(`3.1`) then
1594+ deprecationWarning(DeprecatedWithOperator (), withOffset)
1595+ atSpan(startOffset(t)) { makeAndType(t, withType()) }
15951596 else t
15961597
15971598 /** AnnotType ::= SimpleType {Annotation}
0 commit comments