@@ -694,15 +694,15 @@ object desugar {
694694 val originalTparams = constr1.leadingTypeParams
695695 val originalVparamss = asTermOnly(constr1.trailingParamss)
696696 lazy val derivedEnumParams = enumClass.typeParams.map(derivedTypeParamWithVariance)
697- val impliedTparams =
698- if ( isEnumCase) {
697+ val enumTParams =
698+ if isEnumCase then
699699 val tparamReferenced = typeParamIsReferenced(
700- enumClass.typeParams, originalTparams, originalVparamss, parents)
701- if ( originalTparams.isEmpty && (parents.isEmpty || tparamReferenced))
700+ enumClass.typeParams, originalTparams, originalVparamss, parents)
701+ if originalTparams.isEmpty && (parents.isEmpty || tparamReferenced) then
702702 derivedEnumParams.map(tdef => tdef.withFlags(tdef.mods.flags | PrivateLocal ))
703- else originalTparams
704- }
705- else originalTparams
703+ else Nil
704+ else Nil
705+ val impliedTparams = enumTParams ++ originalTparams
706706
707707 if mods.is(Trait ) then
708708 for vparams <- originalVparamss; vparam <- vparams do
@@ -735,6 +735,11 @@ object desugar {
735735 derived.withAnnotations(Nil )
736736
737737 val constr = cpy.DefDef (constr1)(paramss = joinParams(constrTparams, constrVparamss))
738+ if enumTParams.nonEmpty then
739+ defaultGetters = defaultGetters.map:
740+ case ddef : DefDef =>
741+ val tParams = enumTParams.map(tparam => toMethParam(tparam, KeepAnnotations .All ))
742+ cpy.DefDef (ddef)(paramss = joinParams(tParams, ddef.trailingParamss))
738743
739744 val (normalizedBody, enumCases, enumCompanionRef) = {
740745 // Add constructor type parameters and evidence implicit parameters
0 commit comments