@@ -2904,6 +2904,10 @@ object Parsers {
2904
2904
2905
2905
/* -------- PARAMETERS ------------------------------------------- */
2906
2906
2907
+ /** DefParamClause ::= DefTypeParamClause
2908
+ * | DefTermParamClause
2909
+ * | UsingParamClause
2910
+ */
2907
2911
def typeOrTermParamClause (nparams : Int , // number of parameters preceding this clause
2908
2912
ofClass : Boolean = false , // owner is a class
2909
2913
ofCaseClass : Boolean = false , // owner is a case class
@@ -2920,7 +2924,9 @@ object Parsers {
2920
2924
Nil
2921
2925
2922
2926
end typeOrTermParamClause
2923
-
2927
+
2928
+ /** DefParamClauses ::= DefParamClause { DefParamClause }
2929
+ */
2924
2930
def typeOrTermParamClauses (
2925
2931
ownerKind : ParamOwner .Value ,
2926
2932
ofClass : Boolean = false ,
@@ -3017,11 +3023,15 @@ object Parsers {
3017
3023
* UsingClsParamClause::= ‘(’ ‘using’ [‘erased’] (ClsParams | ContextTypes) ‘)’
3018
3024
* ClsParams ::= ClsParam {‘,’ ClsParam}
3019
3025
* ClsParam ::= {Annotation}
3026
+ *
3027
+ * TypelessClause ::= DefTermParamClause
3028
+ * | UsingParamClause
3020
3029
*
3021
- * DefParamClause ::= ‘(’ [‘erased’] DefParams ‘)’ | UsingParamClause
3022
- * UsingParamClause ::= ‘(’ ‘using’ [‘erased’] (DefParams | ContextTypes) ‘)’
3023
- * DefParams ::= DefParam {‘,’ DefParam}
3024
- * DefParam ::= {Annotation} [‘inline’] Param
3030
+ * DefTermParamClause::= [nl] ‘(’ [DefTermParams] ‘)’
3031
+ * UsingParamClause ::= ‘(’ ‘using’ [‘erased’] (DefTermParams | ContextTypes) ‘)’
3032
+ * DefImplicitClause ::= [nl] ‘(’ ‘implicit’ DefTermParams ‘)’
3033
+ * DefTermParams ::= DefTermParam {‘,’ DefTermParam}
3034
+ * DefTermParam ::= {Annotation} [‘inline’] Param
3025
3035
*
3026
3036
* Param ::= id `:' ParamType [`=' Expr]
3027
3037
*
@@ -3119,7 +3129,7 @@ object Parsers {
3119
3129
}
3120
3130
3121
3131
/** ClsParamClauses ::= {ClsParamClause} [[nl] ‘(’ [‘implicit’] ClsParams ‘)’]
3122
- * DefParamClauses ::= {DefParamClause} [[nl] ‘(’ [‘implicit’] DefParams ‘)’]
3132
+ * TypelessClauses ::= TypelessClause {TypelessClause}
3123
3133
*
3124
3134
* @return The parameter definitions
3125
3135
*/
@@ -3371,9 +3381,9 @@ object Parsers {
3371
3381
}
3372
3382
3373
3383
/** DefDef ::= DefSig [‘:’ Type] ‘=’ Expr
3374
- * | this ParamClause ParamClauses `=' ConstrExpr
3384
+ * | this TypelessClauses [DefImplicitClause] `=' ConstrExpr
3375
3385
* DefDcl ::= DefSig `:' Type
3376
- * DefSig ::= id [DefTypeParamClause] DefParamClauses
3386
+ * DefSig ::= id [DefParamClauses] [DefImplicitClause]
3377
3387
* | ExtParamClause [nl] [‘.’] id DefParamClauses
3378
3388
*/
3379
3389
def defDefOrDcl (start : Offset , mods : Modifiers , numLeadParams : Int = 0 ): DefDef = atSpan(start, nameStart) {
@@ -3412,8 +3422,6 @@ object Parsers {
3412
3422
val ident = termIdent()
3413
3423
var name = ident.name.asTermName
3414
3424
val paramss = typeOrTermParamClauses(ParamOwner .Def , numLeadParams = numLeadParams)
3415
- // val tparams = typeParamClauseOpt(ParamOwner.Def)
3416
- // val vparamss = paramClauses(numLeadParams = numLeadParams)
3417
3425
var tpt = fromWithinReturnType { typedOpt() }
3418
3426
if (migrateTo3) newLineOptWhenFollowedBy(LBRACE )
3419
3427
val rhs =
@@ -3431,7 +3439,6 @@ object Parsers {
3431
3439
accept(EQUALS )
3432
3440
expr()
3433
3441
3434
- // val ddef = DefDef(name, joinParams(tparams, vparamss), tpt, rhs)
3435
3442
val ddef = DefDef (name, paramss, tpt, rhs)
3436
3443
if (isBackquoted(ident)) ddef.pushAttachment(Backquoted , ())
3437
3444
finalizeDef(ddef, mods1, start)
@@ -3694,7 +3701,7 @@ object Parsers {
3694
3701
finalizeDef(gdef, mods1, start)
3695
3702
}
3696
3703
3697
- /** Extension ::= ‘extension’ [DefTypeParamClause] {UsingParamClause} ‘(’ DefParam ‘)’
3704
+ /** Extension ::= ‘extension’ [DefTypeParamClause] {UsingParamClause} ‘(’ DefTermParam ‘)’
3698
3705
* {UsingParamClause} ExtMethods //TODO: Change to {Params} ?
3699
3706
*/
3700
3707
def extension (): ExtMethods =
0 commit comments