@@ -36,8 +36,6 @@ object Parsers {
3636
3737 import ast .untpd ._
3838
39- val AllowOldWhiteboxSyntax = true
40-
4139 case class OpInfo (operand : Tree , operator : Ident , offset : Offset )
4240
4341 class ParensCounters {
@@ -1822,16 +1820,9 @@ object Parsers {
18221820 Nil
18231821 }
18241822
1825- def typedOpt (): Tree = {
1826- if (in.token == COLONEOL ) in.token = COLON
1827- // a hack to allow
1828- //
1829- // def f():
1830- // T
1831- //
1823+ def typedOpt (): Tree =
18321824 if (in.token == COLON ) { in.nextToken(); toplevelTyp() }
18331825 else TypeTree ().withSpan(Span (in.lastOffset))
1834- }
18351826
18361827 def typeDependingOn (location : Location ): Tree =
18371828 if location.inParens then typ()
@@ -3266,7 +3257,7 @@ object Parsers {
32663257 }
32673258 }
32683259
3269- /** DefDef ::= DefSig [( ‘:’ | ‘<:’) Type] ‘=’ Expr
3260+ /** DefDef ::= DefSig [‘:’ Type] ‘=’ Expr
32703261 * | this ParamClause ParamClauses `=' ConstrExpr
32713262 * DefDcl ::= DefSig `:' Type
32723263 * DefSig ::= id [DefTypeParamClause] DefParamClauses
@@ -3342,12 +3333,13 @@ object Parsers {
33423333 case rparamss =>
33433334 leadingVparamss ::: rparamss
33443335 var tpt = fromWithinReturnType {
3345- if in.token == SUBTYPE && mods.is(Inline ) && AllowOldWhiteboxSyntax then
3346- deprecationWarning(" `<:` return type will no longer be supported. Use transparent modifier instead." )
3347- in.nextToken()
3348- mods1 = addMod(mods1, Mod .Transparent ())
3349- toplevelTyp()
3350- else typedOpt()
3336+ if in.token == COLONEOL then in.token = COLON
3337+ // a hack to allow
3338+ //
3339+ // def f():
3340+ // T
3341+ //
3342+ typedOpt()
33513343 }
33523344 if (migrateTo3) newLineOptWhenFollowedBy(LBRACE )
33533345 val rhs =
@@ -3581,7 +3573,7 @@ object Parsers {
35813573 syntaxError(i " extension clause can only define methods " , stat.span)
35823574 }
35833575
3584- /** GivenDef ::= [GivenSig] [‘_’ ‘<:’] Type ‘=’ Expr
3576+ /** GivenDef ::= [GivenSig] Type ‘=’ Expr
35853577 * | [GivenSig] ConstrApps [TemplateBody]
35863578 * GivenSig ::= [id] [DefTypeParamClause] {UsingParamClauses} ‘as’
35873579 */
@@ -3601,30 +3593,19 @@ object Parsers {
36013593 newLinesOpt()
36023594 if isIdent(nme.as) || ! name.isEmpty || ! tparams.isEmpty || ! vparamss.isEmpty then
36033595 accept(nme.as)
3604- def givenAlias (tpt : Tree ) =
3596+ val parents = constrApps(commaOK = true , templateCanFollow = true )
3597+ if in.token == EQUALS && parents.length == 1 && parents.head.isType then
36053598 accept(EQUALS )
36063599 mods1 |= Final
3607- DefDef (name, tparams, vparamss, tpt, subExpr())
3608- if in.token == USCORE && AllowOldWhiteboxSyntax then
3609- deprecationWarning(" `<:` return type will no longer be supported. Use transparent modifier instead." )
3610- if ! mods.is(Inline ) then
3611- syntaxError(" `_ <:` is only allowed for given with `inline` modifier" )
3612- in.nextToken()
3613- accept(SUBTYPE )
3614- mods1 = addMod(mods1, Mod .Transparent ())
3615- givenAlias(toplevelTyp())
3600+ DefDef (name, tparams, vparamss, parents.head, subExpr())
36163601 else
3617- val parents = constrApps(commaOK = true , templateCanFollow = true )
3618- if in.token == EQUALS && parents.length == 1 && parents.head.isType then
3619- givenAlias(parents.head)
3620- else
3621- possibleTemplateStart()
3622- val tparams1 = tparams.map(tparam => tparam.withMods(tparam.mods | PrivateLocal ))
3623- val vparamss1 = vparamss.map(_.map(vparam =>
3624- vparam.withMods(vparam.mods &~ Param | ParamAccessor | Protected )))
3625- val templ = templateBodyOpt(makeConstructor(tparams1, vparamss1), parents, Nil )
3626- if tparams.isEmpty && vparamss.isEmpty then ModuleDef (name, templ)
3627- else TypeDef (name.toTypeName, templ)
3602+ possibleTemplateStart()
3603+ val tparams1 = tparams.map(tparam => tparam.withMods(tparam.mods | PrivateLocal ))
3604+ val vparamss1 = vparamss.map(_.map(vparam =>
3605+ vparam.withMods(vparam.mods &~ Param | ParamAccessor | Protected )))
3606+ val templ = templateBodyOpt(makeConstructor(tparams1, vparamss1), parents, Nil )
3607+ if tparams.isEmpty && vparamss.isEmpty then ModuleDef (name, templ)
3608+ else TypeDef (name.toTypeName, templ)
36283609 end gdef
36293610 finalizeDef(gdef, mods1, start)
36303611 }
0 commit comments