Skip to content

accessing values of the Enumeration leads to unexpected behaviour #6094

Open
@scabug

Description

@scabug

A simple example of enumeration

object Test {
  object MyEnum extends Enumeration {
    val Z = Value(12)
  }

  import MyEnum._
  def main(args: Array[String]) {
    println(MyEnum.values)
  }
}

produces (as expected):

MyEnum.ValueSet(Z)

Add another value to the enumeration:

  val Foo = Value(2000000000)

produces:

MyEnum.ValueSet()

But this gets even better when you add

  val Bar = Value(-2000000000)

because it gives you

java.lang.IllegalArgumentException: requirement failed
	at scala.Predef$.require(Predef.scala:204)
	at scala.collection.mutable.BitSet.add(BitSet.scala:74)
	at scala.collection.mutable.BitSet.$plus$eq(BitSet.scala:92)
	at scala.Enumeration$ValueSet$$anon$1.$plus$eq(Enumeration.scala:283)
	at scala.Enumeration$ValueSet$$anon$1.$plus$eq(Enumeration.scala:281)
	at scala.collection.generic.Growable$$anonfun$$plus$plus$eq$1.apply(Growable.scala:48)
	at scala.collection.generic.Growable$$anonfun$$plus$plus$eq$1.apply(Growable.scala:48)
	at scala.collection.mutable.HashMap$$anon$2$$anonfun$foreach$3.apply(HashMap.scala:107)
	at scala.collection.mutable.HashMap$$anon$2$$anonfun$foreach$3.apply(HashMap.scala:107)
	at scala.collection.mutable.HashTable$class.foreachEntry(HashTable.scala:204)
	at scala.collection.mutable.HashMap.foreachEntry(HashMap.scala:39)
	at scala.collection.mutable.HashMap$$anon$2.foreach(HashMap.scala:107)
	at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48)
	at scala.Enumeration$ValueSet$$anon$1.$plus$plus$eq(Enumeration.scala:281)
	at scala.Enumeration.values(Enumeration.scala:93)
	at Test$.main(t5588.scala:10)
	at Test.main(t5588.scala)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions