@@ -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