Open
Description
Compiler version
3.1.2
Minimized code
class Foo extends Serializable {
enum Bar {
case A
}
}
def serializeDeserialize[T <: AnyRef](obj: T): T = {
import java.io.*
val buffer = new ByteArrayOutputStream
val out = new ObjectOutputStream(buffer)
out.writeObject(obj)
val in = new ObjectInputStream(new ByteArrayInputStream(buffer.toByteArray))
in.readObject.asInstanceOf[T]
}
def test =
val foo = Foo()
serializeDeserialize(foo.Bar) // runtime err here
Output
java.util.NoSuchElementException: 0
at rs$line$16$Foo$Bar$.fromOrdinal(rs$line$16:3)
at rs$line$16$$anon$1.readResolve(rs$line$16:3)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at java.base/java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1321)
at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2251)
at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1742)
at java.base/java.io.ObjectInputStream.readArray(ObjectInputStream.java:2142)
at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1730)
at java.base/java.io.ObjectInputStream$FieldValues.<init>(ObjectInputStream.java:2584)
at java.base/java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2442)
at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2242)
at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1742)
at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:514)
at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:472)
at rs$line$3$.serializeDeserialize(rs$line$3:7)
... 39 elided
Expectation
to return foo.Bar