@@ -481,15 +481,15 @@ object desugar {
481
481
val originalTparams = constr1.leadingTypeParams
482
482
val originalVparamss = asTermOnly(constr1.trailingParamss)
483
483
lazy val derivedEnumParams = enumClass.typeParams.map(derivedTypeParamWithVariance)
484
- val impliedTparams =
485
- if ( isEnumCase) {
484
+ val enumTParams =
485
+ if isEnumCase then
486
486
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
489
489
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
493
493
494
494
if mods.is(Trait ) then
495
495
for vparams <- originalVparamss; vparam <- vparams do
@@ -519,6 +519,11 @@ object desugar {
519
519
derivedTermParam(vparam).withAnnotations(Nil ))
520
520
521
521
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))
522
527
523
528
val (normalizedBody, enumCases, enumCompanionRef) = {
524
529
// Add constructor type parameters and evidence implicit parameters
0 commit comments