@@ -830,14 +830,14 @@ object desugar {
830830 val impl = mdef.impl
831831 val mods = mdef.mods
832832 impl.constr match {
833- case DefDef (_, tparams, (vparams @ (vparam :: Nil )) :: _ , _, _) =>
833+ case DefDef (_, tparams, (vparams @ (vparam :: Nil )) :: givenParamss , _, _) =>
834834 assert(mods.is(Given ))
835835 return moduleDef(
836836 cpy.ModuleDef (mdef)(
837837 mdef.name,
838838 cpy.Template (impl)(
839839 constr = emptyConstructor,
840- body = impl.body.map(makeExtensionDef(_, tparams, vparams)))))
840+ body = impl.body.map(makeExtensionDef(_, tparams, vparams, givenParamss )))))
841841 case _ =>
842842 }
843843
@@ -892,16 +892,19 @@ object desugar {
892892 * If the given member `mdef` is not of this form, flag it as an error.
893893 */
894894
895- def makeExtensionDef (mdef : Tree , tparams : List [TypeDef ], leadingParams : List [ValDef ])(given ctx : Context ): Tree = {
895+ def makeExtensionDef (mdef : Tree , tparams : List [TypeDef ], leadingParams : List [ValDef ],
896+ givenParamss : List [List [ValDef ]])(given ctx : Context ): Tree = {
896897 val allowed = " allowed here, since collective parameters are given"
897898 mdef match {
898899 case mdef : DefDef =>
899900 if (mdef.mods.is(Extension )) {
900901 ctx.error(em " No extension method $allowed" , mdef.sourcePos)
901902 mdef
902903 }
903- else cpy.DefDef (mdef)(tparams = tparams ++ mdef.tparams, vparamss = leadingParams :: mdef.vparamss)
904- .withFlags(Extension )
904+ else cpy.DefDef (mdef)(
905+ tparams = tparams ++ mdef.tparams,
906+ vparamss = leadingParams :: givenParamss ::: mdef.vparamss
907+ ).withFlags(Extension )
905908 case mdef : Import =>
906909 mdef
907910 case mdef =>
0 commit comments