@@ -481,15 +481,15 @@ object desugar {
481481    val  originalTparams  =  constr1.leadingTypeParams
482482    val  originalVparamss  =  asTermOnly(constr1.trailingParamss)
483483    lazy  val  derivedEnumParams  =  enumClass.typeParams.map(derivedTypeParamWithVariance)
484-     val  impliedTparams  = 
485-       if  ( isEnumCase) { 
484+     val  enumTParams  = 
485+       if  isEnumCase  then 
486486        val  tparamReferenced  =  typeParamIsReferenced(
487-              enumClass.typeParams, originalTparams, originalVparamss, parents)
488-         if  ( originalTparams.isEmpty &&  (parents.isEmpty ||  tparamReferenced)) 
487+           enumClass.typeParams, originalTparams, originalVparamss, parents)
488+         if  originalTparams.isEmpty &&  (parents.isEmpty ||  tparamReferenced)  then 
489489          derivedEnumParams.map(tdef =>  tdef.withFlags(tdef.mods.flags |  PrivateLocal ))
490-         else  originalTparams 
491-       } 
492-        else  originalTparams
490+         else  Nil 
491+       else   Nil 
492+     val   impliedTparams   =  enumTParams  ++  originalTparams
493493
494494    if  mods.is(Trait ) then 
495495      for  vparams <-  originalVparamss; vparam <-  vparams do 
@@ -519,6 +519,11 @@ object desugar {
519519        derivedTermParam(vparam).withAnnotations(Nil ))
520520
521521    val  constr  =  cpy.DefDef (constr1)(paramss =  joinParams(constrTparams, constrVparamss))
522+     if  enumTParams.nonEmpty then 
523+       defaultGetters =  defaultGetters.map: 
524+         case  ddef : DefDef  => 
525+           val  tParams  =  enumTParams.map(tparam =>  toMethParam(tparam, KeepAnnotations .All ))
526+           cpy.DefDef (ddef)(paramss =  joinParams(tParams, ddef.trailingParamss))
522527
523528    val  (normalizedBody, enumCases, enumCompanionRef) =  {
524529      //  Add constructor type parameters and evidence implicit parameters
0 commit comments