Skip to content

findValues sometimes returns duplicate values in Scala 3 #434

@jadenPete

Description

@jadenPete

Enumeratum version: 1.9.0
Scala version: 3.6.3

In Scala 3, if the values of an enum mix in a shared trait that extends the entry type, findValues can return duplicate values.

Here's an example on Scastie:
https://scastie.scala-lang.org/fTa1qOmAQduIGTAS9XWGmg

Observe that when the program is run, Vector(Dog, Human, Dog, Human) is printed. I'll also paste the program below:

import enumeratum.values.{StringEnum, StringEnumEntry}

sealed abstract class Animal(override val value: String) extends StringEnumEntry

object Animal extends StringEnum[Animal] {
  case object Dog extends Animal("dog") with Mammal
  case object Human extends Animal("human") with Mammal

  override lazy val values: IndexedSeq[Animal] = findValues
}

sealed trait Mammal extends Animal

println(Animal.values)

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions