@@ -694,15 +694,15 @@ object desugar {
694
694
val originalTparams = constr1.leadingTypeParams
695
695
val originalVparamss = asTermOnly(constr1.trailingParamss)
696
696
lazy val derivedEnumParams = enumClass.typeParams.map(derivedTypeParamWithVariance)
697
- val impliedTparams =
698
- if ( isEnumCase) {
697
+ val enumTParams =
698
+ if isEnumCase then
699
699
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
702
702
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
706
706
707
707
if mods.is(Trait ) then
708
708
for vparams <- originalVparamss; vparam <- vparams do
@@ -735,6 +735,11 @@ object desugar {
735
735
derived.withAnnotations(Nil )
736
736
737
737
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))
738
743
739
744
val (normalizedBody, enumCases, enumCompanionRef) = {
740
745
// Add constructor type parameters and evidence implicit parameters
0 commit comments