Skip to content

Wrong ClassTag for IArray[T] causes ClassCastException with nested IArray #27207

Description

@susliko

Compiler version

Reproduced in 3.9.0, 3.3.6

Minimized code

//> using scala 3.9.0

import scala.reflect.ClassTag

def f[T: ClassTag](xs: Vector[T]): IArray[IArray[T]] =
  IArray(IArray.from(xs))

@main def run =
  val x: IArray[IArray[String]] = f(Vector("s"))
  println(x.length)

Output

Exception in thread "main" java.lang.ClassCastException: class [Ljava.lang.Object; cannot be cast to class [[Ljava.lang.String; ([Ljava.lang.Object; and [[Ljava.lang.String; are in module java.base of loader 'bootstrap')
        at hmm$package$.run(hmm.scala:9)
        at run.main(hmm.scala:8)

Expectation

No crash. Same snippet works for Array instead of IArray.

Probably a related issue: #13144

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:transformitype:bugitype:soundnessSoundness bug (it lets us compile code that crashes at runtime with a ClassCastException)

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions