@@ -830,14 +830,14 @@ object desugar {
830
830
val impl = mdef.impl
831
831
val mods = mdef.mods
832
832
impl.constr match {
833
- case DefDef (_, tparams, (vparams @ (vparam :: Nil )) :: _ , _, _) =>
833
+ case DefDef (_, tparams, (vparams @ (vparam :: Nil )) :: givenParamss , _, _) =>
834
834
assert(mods.is(Given ))
835
835
return moduleDef(
836
836
cpy.ModuleDef (mdef)(
837
837
mdef.name,
838
838
cpy.Template (impl)(
839
839
constr = emptyConstructor,
840
- body = impl.body.map(makeExtensionDef(_, tparams, vparams)))))
840
+ body = impl.body.map(makeExtensionDef(_, tparams, vparams, givenParamss )))))
841
841
case _ =>
842
842
}
843
843
@@ -892,16 +892,19 @@ object desugar {
892
892
* If the given member `mdef` is not of this form, flag it as an error.
893
893
*/
894
894
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 = {
896
897
val allowed = " allowed here, since collective parameters are given"
897
898
mdef match {
898
899
case mdef : DefDef =>
899
900
if (mdef.mods.is(Extension )) {
900
901
ctx.error(em " No extension method $allowed" , mdef.sourcePos)
901
902
mdef
902
903
}
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 )
905
908
case mdef : Import =>
906
909
mdef
907
910
case mdef =>
0 commit comments