@@ -106,26 +106,25 @@ class Printer(using Raise, ShowCfg, SymbolPrinter, Config):
106106 then doc " "
107107 else doc " " :: braced(doc " ${docPrivFlds}${docPubFlds}${docCtor}${docMethods}" )
108108
109+ def printParamLists (paramss : Ls [ParamList ])(using Scope ): Document =
110+ doc " ${paramss.map(_.params.map(x => scope.allocateName(x.sym)).mkDocument(" (" , " , " , " )" )).mkDocument(" " )}"
111+
109112 def print (defn : Defn )(using Scope ): Document = defn match
110- case FunDefn (own, sym, dSym, params , body) =>
113+ case FunDefn (own, sym, dSym, paramss , body) =>
111114 scope.nest.givenIn:
112- val docParams = doc " ${
113- params.map(_.params.map(x => scope.allocateName(x.sym)).mkDocument(" (" , " , " , " )" )).mkDocument(" " )}"
115+ val docParams = printParamLists(paramss)
114116 val docBody = print(body)
115117 doc " fun ${print(dSym)}${docParams} ${bracedbk(docBody)}"
116118 case ValDefn (tsym, sym, rhs) =>
117119 doc " val ${print(tsym)} = ${print(rhs)}"
118120 case ClsLikeDefn (own, isym, sym, ctorSym, k, paramsOpt, auxParams, parentSym, methods,
119121 privateFields, publicFields, preCtor, ctor, mod, bufferable)
120122 => scope.nest.givenIn:
121- val clsParams = paramsOpt.fold(Nil )(_.paramSyms)
122- val auxClsParams = auxParams.flatMap(_.paramSyms)
123- val ctorParams = (clsParams ++ auxClsParams).map(p => scope.allocateName(p))
124- val docCtorParams = if clsParams.isEmpty then doc " " else doc " ( ${ctorParams.mkDocument(" , " )}) "
123+ val ctorParams = printParamLists(paramsOpt.toList ::: auxParams)
125124 val docStaged = if isym.defn.forall(_.hasStagedModifier.isEmpty) then doc " " else doc " staged "
126125 val docBody = print(privateFields, publicFields, methods, S (preCtor), ctor, ctorSym)
127126 val clsType = k.str
128- val docCls = doc " ${docStaged}${clsType} ${print(isym)}${docCtorParams }${docBody}"
127+ val docCls = doc " ${docStaged}${clsType} ${print(isym)}${ctorParams }${docBody}"
129128 val docModule = mod match
130129 case Some (mod) =>
131130 val docStaged = if mod.isym.defn.forall(_.hasStagedModifier.isEmpty) then doc " " else doc " staged "
0 commit comments