Skip to content

Overriding method using a wildcard type causes error in erasure #16646

Open
@hmf

Description

@hmf

Compiler version

Tested in versions 3.2.1 and 3.2.0 (Scastie)

Minimized code

The code can be found here:

https://scastie.scala-lang.org/gIlQEjxzTGenDHcDmuBh9g

The offending methods is:

  inline given IMapFromExpr[K, V, T <: IMap](using Type[K], Type[V], Type[T], FromExpr[K], FromExpr[V], FromExpr[T]): 
                    FromExpr[IMap] with {
    // Compiler crash
    inline def unapply(x: Expr[ _ <: IMap])(using Quotes) = inline x match {
    // Ok
    // def unapply(x: Expr[ _ <: IMap])(using Quotes) = x match {
      // Ok
      // case '{ IEmpT } => Some(IEmpT)
      // Ok
      case '{ $x: IEmpT.type } => x.value
      // case '{ $x: ICons[K, V, T] } => x.value
      // Ok
      case '{ ${Expr(x)}: ICons[K, V, T] } => Some(x)
      case _ => None
    }
  }

If the non-inlined version of the method is used, it compiles.

Output (click arrow to expand)

[info] compiling 1 Scala source to /home/hmf/VSCodeProjects/sploty/out/meta/compile.dest/classes ...
exception while typing given class IMapFromExpr[K, V, T <: icollectionx.From.IMap](using 
  x$1: quoted.Type[K]
, x$2: quoted.Type[V], x$3: quoted.Type[T], x$4: quoted.FromExpr[K], 
  x$5: quoted.FromExpr[V]
, x$6: quoted.FromExpr[T]) extends Object(), 
  quoted.FromExpr[icollectionx.From.IMap]
 {
  private type K
  private type V
  private type T <: icollectionx.From.IMap
  protected given def x$1: quoted.Type[K]
  protected given def x$2: quoted.Type[V]
  protected given def x$3: quoted.Type[T]
  protected given def x$4: quoted.FromExpr[K]
  protected given def x$5: quoted.FromExpr[V]
  protected given def x$6: quoted.FromExpr[T]
  def unapply(x: quoted.Expr[? <: icollectionx.From.IMap])(using 
    x$2: quoted.Quotes
  ): Option[icollectionx.From.IEmpT.type | icollectionx.From.ICons[K, V, T]] = 
    (inline x match 
      {
        case 
          x$2.asInstanceOf[scala.quoted.runtime.QuoteMatching].ExprMatch.unapply
            [
          EmptyTuple.type, 
            Tuple1[scala.quoted.Expr[icollectionx.From.IEmpT.type & Any]]
          ](
            Tuple1.unapply[scala.quoted.Expr[icollectionx.From.IEmpT.type]](
              x @ _:scala.quoted.Expr[icollectionx.From.IEmpT.type & Any]
            )
          )(
            '{
              scala.quoted.runtime.Patterns.patternHole[
                icollectionx.From.IEmpT.type & Any
              ]
            }.apply(x$2)
          )
         => 
          x$2.value[icollectionx.From.IEmpT.type](x)(
            icollectionx.From.IEmpTFromExpr
          )
        case 
          x$2.asInstanceOf[scala.quoted.runtime.QuoteMatching].ExprMatch.unapply
            [
          EmptyTuple.type, 
            Tuple1[scala.quoted.Expr[icollectionx.From.ICons[K, V, T] & Any]]
          ](
            Tuple1.unapply[scala.quoted.Expr[icollectionx.From.ICons[K, V, T]]](
              quoted.Expr.unapply[icollectionx.From.ICons[K, V, T]](x @ _)(
                icollectionx.From.IConsFromExpr[K, V, T](
                  this.icollectionx$From$IMapFromExpr$$inline$x$1
                , this.icollectionx$From$IMapFromExpr$$inline$x$4, 
                  this.icollectionx$From$IMapFromExpr$$inline$x$2
                , this.icollectionx$From$IMapFromExpr$$inline$x$5, 
                  this.icollectionx$From$IMapFromExpr$$inline$x$3
                , this.icollectionx$From$IMapFromExpr$$inline$x$6)
              , x$2):scala.quoted.Expr[icollectionx.From.ICons[K, V, T] & Any]
            )
          )(
            '{
              {
                @SplicedType type x$1$_$1 = IMapFromExpr.this.x$1.Underlying
                @SplicedType type x$2$_$1 = IMapFromExpr.this.x$2.Underlying
                @SplicedType type x$3$_$1 = IMapFromExpr.this.x$3.Underlying
                scala.quoted.runtime.Patterns.patternHole[
                  icollectionx.From.ICons[x$1$_$1, x$2$_$1, x$3$_$1]
                ]
              }
            }.apply(x$2)
          )
         => 
          Some.apply[icollectionx.From.ICons[K, V, T]](x)
        case _ => 
          None
      }
    ):Option[icollectionx.From.IEmpT.type | icollectionx.From.ICons[K, V, T]]
  def icollectionx$From$IMapFromExpr$$inline$x$1: quoted.Type[K] = 
    IMapFromExpr.this.x$1
  def icollectionx$From$IMapFromExpr$$inline$x$4: quoted.FromExpr[K] = 
    IMapFromExpr.this.x$4
  def icollectionx$From$IMapFromExpr$$inline$x$2: quoted.Type[V] = 
    IMapFromExpr.this.x$2
  def icollectionx$From$IMapFromExpr$$inline$x$5: quoted.FromExpr[V] = 
    IMapFromExpr.this.x$5
  def icollectionx$From$IMapFromExpr$$inline$x$3: quoted.Type[T] = 
    IMapFromExpr.this.x$3
  def icollectionx$From$IMapFromExpr$$inline$x$6: quoted.FromExpr[T] = 
    IMapFromExpr.this.x$6
} of class class dotty.tools.dotc.ast.Trees$TypeDef # -1
exception while typing @SourceFile("meta/src/icollection/FromExpr0.scala") final module class From()
   extends
 Object() {
  private def writeReplace(): AnyRef = 
    new scala.runtime.ModuleSerializationProxy(classOf[icollectionx.From.type])
  @Child[icollectionx.From.ICons] @Child[icollectionx.From.IEmpT.type] sealed 
    trait
   IMap() extends Object {}
  final lazy module case val IEmpT: icollectionx.From.IEmpT = 
    new icollectionx.From.IEmpT()
  final module case class IEmpT() extends Object(), icollectionx.From.IMap, 
    Product
  , Serializable, scala.deriving.Mirror.Singleton {
    private def writeReplace(): AnyRef = 
      new scala.runtime.ModuleSerializationProxy(
        classOf[icollectionx.From.IEmpT.type]
      )
    override def hashCode(): Int = 69580917
    override def toString(): String = "IEmpT"
    override def canEqual(that: Any): Boolean = 
      that.isInstanceOf[icollectionx.From.IEmpT @unchecked]
    override def productArity: Int = 0
    override def productPrefix: String = "IEmpT"
    override def productElement(n: Int): Any = 
      matchResult1[Nothing]: 
        {
          case val x1: (n : Int) = n
          throw new IndexOutOfBoundsException(n.toString())
        }
    override def productElementName(n: Int): String = 
      matchResult2[Nothing]: 
        {
          case val x2: (n : Int) = n
          throw new IndexOutOfBoundsException(n.toString())
        }
  }
  case class ICons[K, V, T <: icollectionx.From.IMap](key: K, value: V, tail: T)
     extends
   Object(), icollectionx.From.IMap, Product, Serializable {
    override def hashCode(): Int = scala.runtime.ScalaRunTime._hashCode(this)
    override def equals(x$0: Any): Boolean = 
      this.eq(x$0.$asInstanceOf[Object]).||(
        matchResult3[Boolean]: 
          {
            case val x3: (x$0 : Object) = x$0
            if x3.$isInstanceOf[icollectionx.From.ICons[K, V, T] @unchecked]
               then
             
              {
                case val x$0: icollectionx.From.ICons[K, V, T] = 
                  x3.$asInstanceOf[icollectionx.From.ICons[K, V, T] @unchecked]
                return[matchResult3] 
                  this.key.==(x$0.key).&&(this.value.==(x$0.value)).&&(
                    this.tail.==(x$0.tail)
                  ).&&(x$0.canEqual(this))
              }
             else ()
            return[matchResult3] false
          }
      )
    override def toString(): String = scala.runtime.ScalaRunTime._toString(this)
    override def canEqual(that: Any): Boolean = 
      that.isInstanceOf[icollectionx.From.ICons[K, V, T] @unchecked]
    override def productArity: Int = 3
    override def productPrefix: String = "ICons"
    override def productElement(n: Int): Any = 
      matchResult4[Object]: 
        {
          case val x5: (n : Int) = n
          x5 match 
            {
              case 0 => return[matchResult4] this._1
              case 1 => return[matchResult4] this._2
              case 2 => return[matchResult4] this._3
              case _ => throw new IndexOutOfBoundsException(n.toString())
            }
        }
    override def productElementName(n: Int): String = 
      matchResult5[String]: 
        {
          case val x6: (n : Int) = n
          x6 match 
            {
              case 0 => return[matchResult5] "key"
              case 1 => return[matchResult5] "value"
              case 2 => return[matchResult5] "tail"
              case _ => throw new IndexOutOfBoundsException(n.toString())
            }
        }
    private type K
    private type V
    private type T <: icollectionx.From.IMap
    def key: K
    def value: V
    def tail: T
    def copy[K, V, T <: icollectionx.From.IMap](key: K, value: V, tail: T): 
      icollectionx.From.ICons[K, V, T]
     = 
      new 
        
          ([K, V, T <: icollectionx.From.IMap] =>> 
            icollectionx.From.ICons[K, V, T]
          )
        
      [K, V, T](key, value, tail)
    def copy$default$1[K, V, T <: icollectionx.From.IMap]: K = ICons.this.key
    def copy$default$2[K, V, T <: icollectionx.From.IMap]: V = ICons.this.value
    def copy$default$3[K, V, T <: icollectionx.From.IMap]: T = ICons.this.tail
    def _1: K = this.key
    def _2: V = this.value
    def _3: T = this.tail
  }
  final lazy module val ICons: icollectionx.From.ICons = 
    new icollectionx.From.ICons()
  final module class ICons() extends AnyRef(), scala.deriving.Mirror.Product {
    private def writeReplace(): AnyRef = 
      new scala.runtime.ModuleSerializationProxy(
        classOf[icollectionx.From.ICons.type]
      )
    def apply[K, V, T <: icollectionx.From.IMap](key: K, value: V, tail: T): 
      icollectionx.From.ICons[K, V, T]
     = 
      new 
        
          ([K, V, T <: icollectionx.From.IMap] =>> 
            icollectionx.From.ICons[K, V, T]
          )
        
      [K, V, T](key, value, tail)
    def unapply[K, V, T <: icollectionx.From.IMap](
      x$1: icollectionx.From.ICons[K, V, T]
    ): icollectionx.From.ICons[K, V, T] = x$1
    override def toString: String = "ICons"
    type MirroredMonoType
       = icollectionx.From.ICons[? <: AnyKind, ? <: AnyKind, ? <: AnyKind]
    def fromProduct(x$0: Product): icollectionx.From.ICons.MirroredMonoType = 
      new icollectionx.From.ICons[Any, Any, icollectionx.From.IMap](
        x$0.productElement(0)
      , x$0.productElement(1), 
        x$0.productElement(2).$asInstanceOf[icollectionx.From.IMap]
      )
  }
  type IEmpT = icollectionx.From.IEmpT.type
  @showAsInfix() type -: = 
    [K, V, T <: icollectionx.From.IMap] =>> icollectionx.From.ICons[K, V, T]
  extension [K, V, T <: icollectionx.From.IMap](a: (K, V)) def -:(t: T): 
    icollectionx.From.ICons[K, V, T]
   = icollectionx.From.ICons.apply[K, V, T](a._1, a._2, t)
  final lazy module val -:: icollectionx.From.-: = new icollectionx.From.-:()
  final module class -:() extends Object() {
    private def writeReplace(): AnyRef = 
      new scala.runtime.ModuleSerializationProxy(
        classOf[icollectionx.From.-:.type]
      )
    def unapply[K, V, T <: icollectionx.From.IMap](
      x: icollectionx.From.ICons[K, V, T]
    ): (K, V, T) = Tuple3.apply[K, V, T](x.key, x.value, x.tail)
  }
  given class IMapFromExpr[K, V, T <: icollectionx.From.IMap](using 
    x$1: quoted.Type[K]
  , x$2: quoted.Type[V], x$3: quoted.Type[T], x$4: quoted.FromExpr[K], 
    x$5: quoted.FromExpr[V]
  , x$6: quoted.FromExpr[T]) extends Object(), 
    quoted.FromExpr[icollectionx.From.IMap]
   {
    private type K
    private type V
    private type T <: icollectionx.From.IMap
    protected given def x$1: quoted.Type[K]
    protected given def x$2: quoted.Type[V]
    protected given def x$3: quoted.Type[T]
    protected given def x$4: quoted.FromExpr[K]
    protected given def x$5: quoted.FromExpr[V]
    protected given def x$6: quoted.FromExpr[T]
    def unapply(x: quoted.Expr[? <: icollectionx.From.IMap])(using 
      x$2: quoted.Quotes
    ): Option[icollectionx.From.IEmpT.type | icollectionx.From.ICons[K, V, T]]
       = 
    (inline x match 
      {
        case 
          x$2.asInstanceOf[scala.quoted.runtime.QuoteMatching].ExprMatch.unapply
            [
          EmptyTuple.type, 
            Tuple1[scala.quoted.Expr[icollectionx.From.IEmpT.type & Any]]
          ](
            Tuple1.unapply[scala.quoted.Expr[icollectionx.From.IEmpT.type]](
              x @ _:scala.quoted.Expr[icollectionx.From.IEmpT.type & Any]
            )
          )(
            '{
              scala.quoted.runtime.Patterns.patternHole[
                icollectionx.From.IEmpT.type & Any
              ]
            }.apply(x$2)
          )
         => 
          x$2.value[icollectionx.From.IEmpT.type](x)(
            icollectionx.From.IEmpTFromExpr
          )
        case 
          x$2.asInstanceOf[scala.quoted.runtime.QuoteMatching].ExprMatch.unapply
            [
          EmptyTuple.type, 
            Tuple1[scala.quoted.Expr[icollectionx.From.ICons[K, V, T] & Any]]
          ](
            Tuple1.unapply[scala.quoted.Expr[icollectionx.From.ICons[K, V, T]]](
              quoted.Expr.unapply[icollectionx.From.ICons[K, V, T]](x @ _)(
                icollectionx.From.IConsFromExpr[K, V, T](
                  this.icollectionx$From$IMapFromExpr$$inline$x$1
                , this.icollectionx$From$IMapFromExpr$$inline$x$4, 
                  this.icollectionx$From$IMapFromExpr$$inline$x$2
                , this.icollectionx$From$IMapFromExpr$$inline$x$5, 
                  this.icollectionx$From$IMapFromExpr$$inline$x$3
                , this.icollectionx$From$IMapFromExpr$$inline$x$6)
              , x$2):scala.quoted.Expr[icollectionx.From.ICons[K, V, T] & Any]
            )
          )(
            '{
              {
                @SplicedType type x$1$_$1 = IMapFromExpr.this.x$1.Underlying
                @SplicedType type x$2$_$1 = IMapFromExpr.this.x$2.Underlying
                @SplicedType type x$3$_$1 = IMapFromExpr.this.x$3.Underlying
                scala.quoted.runtime.Patterns.patternHole[
                  icollectionx.From.ICons[x$1$_$1, x$2$_$1, x$3$_$1]
                ]
              }
            }.apply(x$2)
          )
         => 
          Some.apply[icollectionx.From.ICons[K, V, T]](x)
        case _ => 
          None
      }
    ):Option[icollectionx.From.IEmpT.type | icollectionx.From.ICons[K, V, T]]
    def icollectionx$From$IMapFromExpr$$inline$x$1: quoted.Type[K] = 
      IMapFromExpr.this.x$1
    def icollectionx$From$IMapFromExpr$$inline$x$4: quoted.FromExpr[K] = 
      IMapFromExpr.this.x$4
    def icollectionx$From$IMapFromExpr$$inline$x$2: quoted.Type[V] = 
      IMapFromExpr.this.x$2
    def icollectionx$From$IMapFromExpr$$inline$x$5: quoted.FromExpr[V] = 
      IMapFromExpr.this.x$5
    def icollectionx$From$IMapFromExpr$$inline$x$3: quoted.Type[T] = 
      IMapFromExpr.this.x$3
    def icollectionx$From$IMapFromExpr$$inline$x$6: quoted.FromExpr[T] = 
      IMapFromExpr.this.x$6
  }
  private final inline given def IMapFromExpr[K, V, T <: icollectionx.From.IMap]
    (
  using x$1: quoted.Type[K], x$2: quoted.Type[V], x$3: quoted.Type[T], 
    x$4: quoted.FromExpr[K]
  , x$5: quoted.FromExpr[V], x$6: quoted.FromExpr[T]): 
    icollectionx.From.IMapFromExpr[K, V, T]
   = 
    scala.compiletime.package$package.erasedValue[
      icollectionx.From.IMapFromExpr[K, V, T]
    ]
  given class IEmpTFromExpr() extends Object(), 
    quoted.FromExpr[icollectionx.From.IEmpT.type]
   {
    def unapply(x: quoted.Expr[icollectionx.From.IEmpT.type])(using 
      x$2: quoted.Quotes
    ): Option[icollectionx.From.IEmpT.type] = 
      (inline x match 
        {
          case 
            x$2.asInstanceOf[scala.quoted.runtime.QuoteMatching].ExprMatch.
              unapply
            [EmptyTuple.type, EmptyTuple.type](EmptyTuple)(
              '{icollectionx.From.IEmpT}.apply(x$2)
            )
           => 
            Some.apply[icollectionx.From.IEmpT.type](icollectionx.From.IEmpT)
          case _ => 
            None
        }
      ):Option[icollectionx.From.IEmpT.type]
    private def unapply$retainedBody(
      x: quoted.Expr[icollectionx.From.IEmpT.type]
    )(using x$2: quoted.Quotes): Option[icollectionx.From.IEmpT.type] = 
      None:Option[icollectionx.From.IEmpT.type]
  }
  private final inline given def IEmpTFromExpr: icollectionx.From.IEmpTFromExpr
     = 
  scala.compiletime.package$package.erasedValue[icollectionx.From.IEmpTFromExpr]
  given class IConsFromExpr[K, V, T <: icollectionx.From.IMap](
    implicit evidence$1: quoted.Type[K]
  , implicit evidence$2: quoted.FromExpr[K], implicit evidence$3: quoted.Type[V]
    , 
  implicit evidence$4: quoted.FromExpr[V], x$1: quoted.Type[T], 
    x$2: quoted.FromExpr[T]
  ) extends Object(), quoted.FromExpr[icollectionx.From.ICons[K, V, T]] {
    private type K
    private type V
    private type T <: icollectionx.From.IMap
    private implicit val evidence$1: quoted.Type[K]
    private implicit val evidence$2: quoted.FromExpr[K]
    private implicit val evidence$3: quoted.Type[V]
    private implicit val evidence$4: quoted.FromExpr[V]
    protected given def x$1: quoted.Type[T]
    protected given def x$2: quoted.FromExpr[T]
    def unapply(x: quoted.Expr[icollectionx.From.ICons[K, V, T]])(using 
      x$2: quoted.Quotes
    ): Option[icollectionx.From.ICons[K, V, T]] = 
      (inline x match 
        {
          case 
            x$2.asInstanceOf[scala.quoted.runtime.QuoteMatching].ExprMatch.
              unapply
            [EmptyTuple.type, 
              (scala.quoted.Expr[K], scala.quoted.Expr[V], scala.quoted.Expr[T])
            ](
              Tuple3.unapply[scala.quoted.Expr[K], scala.quoted.Expr[V], 
                scala.quoted.Expr[T]
              ](
                quoted.Expr.unapply[K](k @ _)(
                  this.icollectionx$From$IConsFromExpr$$inline$evidence$2
                , x$2)
              , 
                quoted.Expr.unapply[V](v @ _)(
                  this.icollectionx$From$IConsFromExpr$$inline$evidence$4
                , x$2)
              , 
                quoted.Expr.unapply[T](tl @ _)(
                  this.icollectionx$From$IConsFromExpr$$inline$x$2
                , x$2)
              )
            )(
              '{
                {
                  @SplicedType type evidence$1$_$1
                     = IConsFromExpr.this.evidence$1.Underlying
                  @SplicedType type evidence$3$_$1
                     = IConsFromExpr.this.evidence$3.Underlying
                  @SplicedType type x$1$_$2 = IConsFromExpr.this.x$1.Underlying
                  icollectionx.From.ICons.apply[evidence$1$_$1, evidence$3$_$1, 
                    x$1$_$2
                  ](scala.quoted.runtime.Patterns.patternHole[evidence$1$_$1], 
                    scala.quoted.runtime.Patterns.patternHole[evidence$3$_$1]
                  , scala.quoted.runtime.Patterns.patternHole[x$1$_$2])
                }
              }.apply(x$2)
            )
           => 
            Some.apply[icollectionx.From.ICons[K, V, T]](
              icollectionx.From.ICons.apply[K, V, T](k, v, tl)
            )
          case _ => 
            None
        }
      ):Option[icollectionx.From.ICons[K, V, T]]
    private def unapply$retainedBody(
      x: quoted.Expr[icollectionx.From.ICons[K, V, T]]
    )(using x$2: quoted.Quotes): Option[icollectionx.From.ICons[K, V, T]] = 
      None:Option[icollectionx.From.ICons[K, V, T]]
    final def icollectionx$From$IConsFromExpr$$inline$evidence$2: 
      quoted.FromExpr[K]
     = IConsFromExpr.this.evidence$2
    final def icollectionx$From$IConsFromExpr$$inline$evidence$4: 
      quoted.FromExpr[V]
     = IConsFromExpr.this.evidence$4
    def icollectionx$From$IConsFromExpr$$inline$x$2: quoted.FromExpr[T] = 
      IConsFromExpr.this.x$2
  }
  private final inline given def IConsFromExpr[K, V, T <: icollectionx.From.IMap
    ]
  (implicit evidence$1: quoted.Type[K], implicit evidence$2: quoted.FromExpr[K]
    , 
  implicit evidence$3: quoted.Type[V], implicit evidence$4: quoted.FromExpr[V], 
    x$1: quoted.Type[T]
  , x$2: quoted.FromExpr[T])
  : icollectionx.From.IConsFromExpr[K, V, T] = 
    scala.compiletime.package$package.erasedValue[
      icollectionx.From.IConsFromExpr[K, V, T]
    ]
  def testFromExprImpl0[K, V](x: quoted.Expr[(K, V)])(using x$2: quoted.Type[K]
    , 
  x$3: quoted.FromExpr[K], x$4: quoted.Type[V], x$5: quoted.FromExpr[V], 
    x$6: quoted.Quotes
  ): quoted.Expr[Int] = 
    {
      val v: (K, V) = 
        x$6.valueOrAbort[(K, V)](x)(
          quoted.FromExpr.Tuple2FromExpr[K, V](x$2, x$4, x$3, x$5)
        )
      scala.quoted.ToExpr.IntToExpr[Int].apply(1)(x$6)
    }
} of class class dotty.tools.dotc.ast.Trees$TypeDef # -1
exception while typing package icollectionx {
  import scala.quoted.*
  import scala.annotation.showAsInfix
  final lazy module val From: icollectionx.From = new icollectionx.From()
  @SourceFile("meta/src/icollection/FromExpr0.scala") final module class From()
     extends
   Object() {
    private def writeReplace(): AnyRef = 
      new scala.runtime.ModuleSerializationProxy(classOf[icollectionx.From.type]
        )
    @Child[icollectionx.From.ICons] @Child[icollectionx.From.IEmpT.type] sealed 
      trait
     IMap() extends Object {}
    final lazy module case val IEmpT: icollectionx.From.IEmpT = 
      new icollectionx.From.IEmpT()
    final module case class IEmpT() extends Object(), icollectionx.From.IMap, 
      Product
    , Serializable, scala.deriving.Mirror.Singleton {
      private def writeReplace(): AnyRef = 
        new scala.runtime.ModuleSerializationProxy(
          classOf[icollectionx.From.IEmpT.type]
        )
      override def hashCode(): Int = 69580917
      override def toString(): String = "IEmpT"
      override def canEqual(that: Any): Boolean = 
        that.isInstanceOf[icollectionx.From.IEmpT @unchecked]
      override def productArity: Int = 0
      override def productPrefix: String = "IEmpT"
      override def productElement(n: Int): Any = 
        matchResult1[Nothing]: 
          {
            case val x1: (n : Int) = n
            throw new IndexOutOfBoundsException(n.toString())
          }
      override def productElementName(n: Int): String = 
        matchResult2[Nothing]: 
          {
            case val x2: (n : Int) = n
            throw new IndexOutOfBoundsException(n.toString())
          }
    }
    case class ICons[K, V, T <: icollectionx.From.IMap](key: K, value: V, 
      tail: T
    ) extends Object(), icollectionx.From.IMap, Product, Serializable {
      override def hashCode(): Int = scala.runtime.ScalaRunTime._hashCode(this)
      override def equals(x$0: Any): Boolean = 
        this.eq(x$0.$asInstanceOf[Object]).||(
          matchResult3[Boolean]: 
            {
              case val x3: (x$0 : Object) = x$0
              if x3.$isInstanceOf[icollectionx.From.ICons[K, V, T] @unchecked]
                 then
               
                {
                  case val x$0: icollectionx.From.ICons[K, V, T] = 
                    x3.$asInstanceOf[icollectionx.From.ICons[K, V, T] @unchecked
                      ]
                  return[matchResult3] 
                    this.key.==(x$0.key).&&(this.value.==(x$0.value)).&&(
                      this.tail.==(x$0.tail)
                    ).&&(x$0.canEqual(this))
                }
               else ()
              return[matchResult3] false
            }
        )
      override def toString(): String = 
        scala.runtime.ScalaRunTime._toString(this)
      override def canEqual(that: Any): Boolean = 
        that.isInstanceOf[icollectionx.From.ICons[K, V, T] @unchecked]
      override def productArity: Int = 3
      override def productPrefix: String = "ICons"
      override def productElement(n: Int): Any = 
        matchResult4[Object]: 
          {
            case val x5: (n : Int) = n
            x5 match 
              {
                case 0 => return[matchResult4] this._1
                case 1 => return[matchResult4] this._2
                case 2 => return[matchResult4] this._3
                case _ => throw new IndexOutOfBoundsException(n.toString())
              }
          }
      override def productElementName(n: Int): String = 
        matchResult5[String]: 
          {
            case val x6: (n : Int) = n
            x6 match 
              {
                case 0 => return[matchResult5] "key"
                case 1 => return[matchResult5] "value"
                case 2 => return[matchResult5] "tail"
                case _ => throw new IndexOutOfBoundsException(n.toString())
              }
          }
      private type K
      private type V
      private type T <: icollectionx.From.IMap
      def key: K
      def value: V
      def tail: T
      def copy[K, V, T <: icollectionx.From.IMap](key: K, value: V, tail: T): 
        icollectionx.From.ICons[K, V, T]
       = 
        new 
          
            ([K, V, T <: icollectionx.From.IMap] =>> 
              icollectionx.From.ICons[K, V, T]
            )
          
        [K, V, T](key, value, tail)
      def copy$default$1[K, V, T <: icollectionx.From.IMap]: K = ICons.this.key
      def copy$default$2[K, V, T <: icollectionx.From.IMap]: V = 
        ICons.this.value
      def copy$default$3[K, V, T <: icollectionx.From.IMap]: T = ICons.this.tail
      def _1: K = this.key
      def _2: V = this.value
      def _3: T = this.tail
    }
    final lazy module val ICons: icollectionx.From.ICons = 
      new icollectionx.From.ICons()
    final module class ICons() extends AnyRef(), scala.deriving.Mirror.Product {
      private def writeReplace(): AnyRef = 
        new scala.runtime.ModuleSerializationProxy(
          classOf[icollectionx.From.ICons.type]
        )
      def apply[K, V, T <: icollectionx.From.IMap](key: K, value: V, tail: T): 
        icollectionx.From.ICons[K, V, T]
       = 
        new 
          
            ([K, V, T <: icollectionx.From.IMap] =>> 
              icollectionx.From.ICons[K, V, T]
            )
          
        [K, V, T](key, value, tail)
      def unapply[K, V, T <: icollectionx.From.IMap](
        x$1: icollectionx.From.ICons[K, V, T]
      ): icollectionx.From.ICons[K, V, T] = x$1
      override def toString: String = "ICons"
      type MirroredMonoType
         = icollectionx.From.ICons[? <: AnyKind, ? <: AnyKind, ? <: AnyKind]
      def fromProduct(x$0: Product): icollectionx.From.ICons.MirroredMonoType = 
        new icollectionx.From.ICons[Any, Any, icollectionx.From.IMap](
          x$0.productElement(0)
        , x$0.productElement(1), 
          x$0.productElement(2).$asInstanceOf[icollectionx.From.IMap]
        )
    }
    type IEmpT = icollectionx.From.IEmpT.type
    @showAsInfix() type -: = 
      [K, V, T <: icollectionx.From.IMap] =>> icollectionx.From.ICons[K, V, T]
    extension [K, V, T <: icollectionx.From.IMap](a: (K, V)) def -:(t: T): 
      icollectionx.From.ICons[K, V, T]
     = icollectionx.From.ICons.apply[K, V, T](a._1, a._2, t)
    final lazy module val -:: icollectionx.From.-: = new icollectionx.From.-:()
    final module class -:() extends Object() {
      private def writeReplace(): AnyRef = 
        new scala.runtime.ModuleSerializationProxy(
          classOf[icollectionx.From.-:.type]
        )
      def unapply[K, V, T <: icollectionx.From.IMap](
        x: icollectionx.From.ICons[K, V, T]
      ): (K, V, T) = Tuple3.apply[K, V, T](x.key, x.value, x.tail)
    }
    given class IMapFromExpr[K, V, T <: icollectionx.From.IMap](using 
      x$1: quoted.Type[K]
    , x$2: quoted.Type[V], x$3: quoted.Type[T], x$4: quoted.FromExpr[K], 
      x$5: quoted.FromExpr[V]
    , x$6: quoted.FromExpr[T]) extends Object(), 
      quoted.FromExpr[icollectionx.From.IMap]
     {
      private type K
      private type V
      private type T <: icollectionx.From.IMap
      protected given def x$1: quoted.Type[K]
      protected given def x$2: quoted.Type[V]
      protected given def x$3: quoted.Type[T]
      protected given def x$4: quoted.FromExpr[K]
      protected given def x$5: quoted.FromExpr[V]
      protected given def x$6: quoted.FromExpr[T]
      def unapply(x: quoted.Expr[? <: icollectionx.From.IMap])(using 
        x$2: quoted.Quotes
      ): Option[icollectionx.From.IEmpT.type | icollectionx.From.ICons[K, V, T]]
         = 
      (inline x match 
        {
          case 
            x$2.asInstanceOf[scala.quoted.runtime.QuoteMatching].ExprMatch.
              unapply
            [EmptyTuple.type, 
              Tuple1[scala.quoted.Expr[icollectionx.From.IEmpT.type & Any]]
            ](
              Tuple1.unapply[scala.quoted.Expr[icollectionx.From.IEmpT.type]](
                x @ _:scala.quoted.Expr[icollectionx.From.IEmpT.type & Any]
              )
            )(
              '{
                scala.quoted.runtime.Patterns.patternHole[
                  icollectionx.From.IEmpT.type & Any
                ]
              }.apply(x$2)
            )
           => 
            x$2.value[icollectionx.From.IEmpT.type](x)(
              icollectionx.From.IEmpTFromExpr
            )
          case 
            x$2.asInstanceOf[scala.quoted.runtime.QuoteMatching].ExprMatch.
              unapply
            [EmptyTuple.type, 
              Tuple1[scala.quoted.Expr[icollectionx.From.ICons[K, V, T] & Any]]
            ](
              Tuple1.unapply[scala.quoted.Expr[icollectionx.From.ICons[K, V, T]]
                ]
              (
                quoted.Expr.unapply[icollectionx.From.ICons[K, V, T]](x @ _)(
                  icollectionx.From.IConsFromExpr[K, V, T](
                    this.icollectionx$From$IMapFromExpr$$inline$x$1
                  , this.icollectionx$From$IMapFromExpr$$inline$x$4, 
                    this.icollectionx$From$IMapFromExpr$$inline$x$2
                  , this.icollectionx$From$IMapFromExpr$$inline$x$5, 
                    this.icollectionx$From$IMapFromExpr$$inline$x$3
                  , this.icollectionx$From$IMapFromExpr$$inline$x$6)
                , x$2):scala.quoted.Expr[icollectionx.From.ICons[K, V, T] & Any]
              )
            )(
              '{
                {
                  @SplicedType type x$1$_$1 = IMapFromExpr.this.x$1.Underlying
                  @SplicedType type x$2$_$1 = IMapFromExpr.this.x$2.Underlying
                  @SplicedType type x$3$_$1 = IMapFromExpr.this.x$3.Underlying
                  scala.quoted.runtime.Patterns.patternHole[
                    icollectionx.From.ICons[x$1$_$1, x$2$_$1, x$3$_$1]
                  ]
                }
              }.apply(x$2)
            )
           => 
            Some.apply[icollectionx.From.ICons[K, V, T]](x)
          case _ => 
            None
        }
      ):Option[icollectionx.From.IEmpT.type | icollectionx.From.ICons[K, V, T]]
      def icollectionx$From$IMapFromExpr$$inline$x$1: quoted.Type[K] = 
        IMapFromExpr.this.x$1
      def icollectionx$From$IMapFromExpr$$inline$x$4: quoted.FromExpr[K] = 
        IMapFromExpr.this.x$4
      def icollectionx$From$IMapFromExpr$$inline$x$2: quoted.Type[V] = 
        IMapFromExpr.this.x$2
      def icollectionx$From$IMapFromExpr$$inline$x$5: quoted.FromExpr[V] = 
        IMapFromExpr.this.x$5
      def icollectionx$From$IMapFromExpr$$inline$x$3: quoted.Type[T] = 
        IMapFromExpr.this.x$3
      def icollectionx$From$IMapFromExpr$$inline$x$6: quoted.FromExpr[T] = 
        IMapFromExpr.this.x$6
    }
    private final inline given def IMapFromExpr[K, V, 
      T <: icollectionx.From.IMap
    ](using x$1: quoted.Type[K], x$2: quoted.Type[V], x$3: quoted.Type[T], 
      x$4: quoted.FromExpr[K]
    , x$5: quoted.FromExpr[V], x$6: quoted.FromExpr[T]): 
      icollectionx.From.IMapFromExpr[K, V, T]
     = 
      scala.compiletime.package$package.erasedValue[
        icollectionx.From.IMapFromExpr[K, V, T]
      ]
    given class IEmpTFromExpr() extends Object(), 
      quoted.FromExpr[icollectionx.From.IEmpT.type]
     {
      def unapply(x: quoted.Expr[icollectionx.From.IEmpT.type])(using 
        x$2: quoted.Quotes
      ): Option[icollectionx.From.IEmpT.type] = 
        (inline x match 
          {
            case 
              x$2.asInstanceOf[scala.quoted.runtime.QuoteMatching].ExprMatch.
                unapply
              [EmptyTuple.type, EmptyTuple.type](EmptyTuple)(
                '{icollectionx.From.IEmpT}.apply(x$2)
              )
             => 
              Some.apply[icollectionx.From.IEmpT.type](icollectionx.From.IEmpT)
            case _ => 
              None
          }
        ):Option[icollectionx.From.IEmpT.type]
      private def unapply$retainedBody(
        x: quoted.Expr[icollectionx.From.IEmpT.type]
      )(using x$2: quoted.Quotes): Option[icollectionx.From.IEmpT.type] = 
        None:Option[icollectionx.From.IEmpT.type]
    }
    private final inline given def IEmpTFromExpr: 
      icollectionx.From.IEmpTFromExpr
     = 
      scala.compiletime.package$package.erasedValue[
        icollectionx.From.IEmpTFromExpr
      ]
    given class IConsFromExpr[K, V, T <: icollectionx.From.IMap](
      implicit evidence$1: quoted.Type[K]
    , implicit evidence$2: quoted.FromExpr[K], 
      implicit evidence$3: quoted.Type[V]
    , implicit evidence$4: quoted.FromExpr[V], x$1: quoted.Type[T], 
      x$2: quoted.FromExpr[T]
    ) extends Object(), quoted.FromExpr[icollectionx.From.ICons[K, V, T]] {
      private type K
      private type V
      private type T <: icollectionx.From.IMap
      private implicit val evidence$1: quoted.Type[K]
      private implicit val evidence$2: quoted.FromExpr[K]
      private implicit val evidence$3: quoted.Type[V]
      private implicit val evidence$4: quoted.FromExpr[V]
      protected given def x$1: quoted.Type[T]
      protected given def x$2: quoted.FromExpr[T]
      def unapply(x: quoted.Expr[icollectionx.From.ICons[K, V, T]])(using 
        x$2: quoted.Quotes
      ): Option[icollectionx.From.ICons[K, V, T]] = 
        (inline x match 
          {
            case 
              x$2.asInstanceOf[scala.quoted.runtime.QuoteMatching].ExprMatch.
                unapply
              [EmptyTuple.type, 
                (scala.quoted.Expr[K], scala.quoted.Expr[V], 
                  scala.quoted.Expr[T]
                )
              ](
                Tuple3.unapply[scala.quoted.Expr[K], scala.quoted.Expr[V], 
                  scala.quoted.Expr[T]
                ](
                  quoted.Expr.unapply[K](k @ _)(
                    this.icollectionx$From$IConsFromExpr$$inline$evidence$2
                  , x$2)
                , 
                  quoted.Expr.unapply[V](v @ _)(
                    this.icollectionx$From$IConsFromExpr$$inline$evidence$4
                  , x$2)
                , 
                  quoted.Expr.unapply[T](tl @ _)(
                    this.icollectionx$From$IConsFromExpr$$inline$x$2
                  , x$2)
                )
              )(
                '{
                  {
                    @SplicedType type evidence$1$_$1
                       = IConsFromExpr.this.evidence$1.Underlying
                    @SplicedType type evidence$3$_$1
                       = IConsFromExpr.this.evidence$3.Underlying
                    @SplicedType type x$1$_$2
                       = IConsFromExpr.this.x$1.Underlying
                    icollectionx.From.ICons.apply[evidence$1$_$1, evidence$3$_$1
                      , 
                    x$1$_$2](
                      scala.quoted.runtime.Patterns.patternHole[evidence$1$_$1]
                    , scala.quoted.runtime.Patterns.patternHole[evidence$3$_$1]
                      , 
                    scala.quoted.runtime.Patterns.patternHole[x$1$_$2])
                  }
                }.apply(x$2)
              )
             => 
              Some.apply[icollectionx.From.ICons[K, V, T]](
                icollectionx.From.ICons.apply[K, V, T](k, v, tl)
              )
            case _ => 
              None
          }
        ):Option[icollectionx.From.ICons[K, V, T]]
      private def unapply$retainedBody(
        x: quoted.Expr[icollectionx.From.ICons[K, V, T]]
      )(using x$2: quoted.Quotes): Option[icollectionx.From.ICons[K, V, T]] = 
        None:Option[icollectionx.From.ICons[K, V, T]]
      final def icollectionx$From$IConsFromExpr$$inline$evidence$2: 
        quoted.FromExpr[K]
       = IConsFromExpr.this.evidence$2
      final def icollectionx$From$IConsFromExpr$$inline$evidence$4: 
        quoted.FromExpr[V]
       = IConsFromExpr.this.evidence$4
      def icollectionx$From$IConsFromExpr$$inline$x$2: quoted.FromExpr[T] = 
        IConsFromExpr.this.x$2
    }
    private final inline given def IConsFromExpr[K, V, 
      T <: icollectionx.From.IMap
    ](implicit evidence$1: quoted.Type[K], 
      implicit evidence$2: quoted.FromExpr[K]
    , implicit evidence$3: quoted.Type[V], 
      implicit evidence$4: quoted.FromExpr[V]
    , x$1: quoted.Type[T], x$2: quoted.FromExpr[T]): 
      icollectionx.From.IConsFromExpr[K, V, T]
     = 
      scala.compiletime.package$package.erasedValue[
        icollectionx.From.IConsFromExpr[K, V, T]
      ]
    def testFromExprImpl0[K, V](x: quoted.Expr[(K, V)])(using 
      x$2: quoted.Type[K]
    , x$3: quoted.FromExpr[K], x$4: quoted.Type[V], x$5: quoted.FromExpr[V], 
      x$6: quoted.Quotes
    ): quoted.Expr[Int] = 
      {
        val v: (K, V) = 
          x$6.valueOrAbort[(K, V)](x)(
            quoted.FromExpr.Tuple2FromExpr[K, V](x$2, x$4, x$3, x$5)
          )
        scala.quoted.ToExpr.IntToExpr[Int].apply(1)(x$6)
      }
  }
} of class class dotty.tools.dotc.ast.Trees$PackageDef # -1
java.util.NoSuchElementException: key not found: method unapply while running erasure on /home/hmf/VSCodeProjects/sploty/meta/src/icollection/FromExpr0.scala
[info] exception occurred while compiling /home/hmf/VSCodeProjects/sploty/meta/src/icollection/FromExpr0.scala
java.util.NoSuchElementException: key not found: method unapply while compiling /home/hmf/VSCodeProjects/sploty/meta/src/icollection/FromExpr0.scala
[error] ## Exception when compiling 28 sources to /home/hmf/VSCodeProjects/sploty/out/meta/compile.dest/classes
[error] java.util.NoSuchElementException: key not found: method unapply
[error] scala.collection.immutable.Map$EmptyMap$.apply(Map.scala:223)
[error] scala.collection.immutable.Map$EmptyMap$.apply(Map.scala:219)
[error] dotty.tools.dotc.transform.Erasure$Typer.addRetainedInlineBodies$$anonfun$1(Erasure.scala:1004)
[error] scala.collection.immutable.List.mapConserve(List.scala:472)
[error] dotty.tools.dotc.transform.Erasure$Typer.addRetainedInlineBodies(Erasure.scala:1015)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedStats(Erasure.scala:1039)
[error] dotty.tools.dotc.typer.Typer.typedClassDef(Typer.scala:2556)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedClassDef(Erasure.scala:1032)
[error] dotty.tools.dotc.typer.Typer.typedTypeOrClassDef$1(Typer.scala:2908)
[error] dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:2912)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2982)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:126)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:3050)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:3054)
[error] dotty.tools.dotc.typer.Typer.traverse$1(Typer.scala:3076)
[error] dotty.tools.dotc.typer.Typer.typedStats(Typer.scala:3126)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedStats(Erasure.scala:1043)
[error] dotty.tools.dotc.typer.Typer.typedClassDef(Typer.scala:2556)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedClassDef(Erasure.scala:1032)
[error] dotty.tools.dotc.typer.Typer.typedTypeOrClassDef$1(Typer.scala:2908)
[error] dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:2912)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2982)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:126)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:3050)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:3054)
[error] dotty.tools.dotc.typer.Typer.traverse$1(Typer.scala:3076)
[error] dotty.tools.dotc.typer.Typer.typedStats(Typer.scala:3126)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedStats(Erasure.scala:1043)
[error] dotty.tools.dotc.typer.Typer.typedPackageDef(Typer.scala:2687)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2953)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2983)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:126)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:3050)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:3054)
[error] dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:3170)
[error] dotty.tools.dotc.transform.Erasure.run(Erasure.scala:144)
[error] dotty.tools.dotc.core.Phases$Phase.runOn$$anonfun$1(Phases.scala:316)
[error] scala.collection.immutable.List.map(List.scala:246)
[error] dotty.tools.dotc.core.Phases$Phase.runOn(Phases.scala:320)
[error] dotty.tools.dotc.Run.runPhases$1$$anonfun$1(Run.scala:233)
[error] scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
[error] scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
[error] scala.collection.ArrayOps$.foreach$extension(ArrayOps.scala:1321)
[error] dotty.tools.dotc.Run.runPhases$1(Run.scala:244)
[error] dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:252)
[error] dotty.tools.dotc.Run.compileUnits$$anonfun$adapted$1(Run.scala:261)
[error] dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:68)
[error] dotty.tools.dotc.Run.compileUnits(Run.scala:261)
[error] dotty.tools.dotc.Run.compileSources(Run.scala:185)
[error] dotty.tools.dotc.Run.compile(Run.scala:169)
[error] dotty.tools.dotc.Driver.doCompile(Driver.scala:35)
[error] dotty.tools.xsbt.CompilerBridgeDriver.run(CompilerBridgeDriver.java:88)
[error] dotty.tools.xsbt.CompilerBridge.run(CompilerBridge.java:22)
[error] sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:91)
[error] sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$7(MixedAnalyzingCompiler.scala:193)
[error] scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
[error] sbt.internal.inc.MixedAnalyzingCompiler.timed(MixedAnalyzingCompiler.scala:248)
[error] sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$4(MixedAnalyzingCompiler.scala:183)
[error] sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$4$adapted(MixedAnalyzingCompiler.scala:163)
[error] sbt.internal.inc.JarUtils$.withPreviousJar(JarUtils.scala:239)
[error] sbt.internal.inc.MixedAnalyzingCompiler.compileScala$1(MixedAnalyzingCompiler.scala:163)
[error] sbt.internal.inc.MixedAnalyzingCompiler.compile(MixedAnalyzingCompiler.scala:211)
[error] sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1(IncrementalCompilerImpl.scala:534)
[error] sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1$adapted(IncrementalCompilerImpl.scala:534)
[error] sbt.internal.inc.Incremental$.$anonfun$apply$5(Incremental.scala:179)
[error] sbt.internal.inc.Incremental$.$anonfun$apply$5$adapted(Incremental.scala:177)
[error] sbt.internal.inc.Incremental$$anon$2.run(Incremental.scala:463)
[error] sbt.internal.inc.IncrementalCommon$CycleState.next(IncrementalCommon.scala:116)
[error] sbt.internal.inc.IncrementalCommon$$anon$1.next(IncrementalCommon.scala:56)
[error] sbt.internal.inc.IncrementalCommon$$anon$1.next(IncrementalCommon.scala:52)
[error] sbt.internal.inc.IncrementalCommon.cycle(IncrementalCommon.scala:263)
[error] sbt.internal.inc.Incremental$.$anonfun$incrementalCompile$8(Incremental.scala:418)
[error] sbt.internal.inc.Incremental$.withClassfileManager(Incremental.scala:506)
[error] sbt.internal.inc.Incremental$.incrementalCompile(Incremental.scala:405)
[error] sbt.internal.inc.Incremental$.apply(Incremental.scala:171)
[error] sbt.internal.inc.IncrementalCompilerImpl.compileInternal(IncrementalCompilerImpl.scala:534)
[error] sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileIncrementally$1(IncrementalCompilerImpl.scala:488)
[error] sbt.internal.inc.IncrementalCompilerImpl.handleCompilationError(IncrementalCompilerImpl.scala:332)
[error] sbt.internal.inc.IncrementalCompilerImpl.compileIncrementally(IncrementalCompilerImpl.scala:425)
[error] sbt.internal.inc.IncrementalCompilerImpl.compile(IncrementalCompilerImpl.scala:137)
[error] mill.scalalib.worker.ZincWorkerImpl.compileInternal(ZincWorkerImpl.scala:561)
[error] mill.scalalib.worker.ZincWorkerImpl.$anonfun$compileMixed0$1(ZincWorkerImpl.scala:339)
[error] mill.api.FixSizedCache.withCachedValue(FixSizedCache.scala:66)
[error] mill.scalalib.worker.ZincWorkerImpl.withCompilers(ZincWorkerImpl.scala:421)
[error] mill.scalalib.worker.ZincWorkerImpl.compileMixed0(ZincWorkerImpl.scala:338)
[error] mill.scalalib.worker.ZincWorkerImpl.compileMixed(ZincWorkerImpl.scala:306)
[error] mill.scalalib.ScalaModule.$anonfun$compile$2(ScalaModule.scala:198)
[error] mill.define.Task$TraverseCtx.evaluate(Task.scala:380)
[error] mill.eval.Evaluator.$anonfun$evaluateGroup$13(Evaluator.scala:631)
[error] scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
[error] scala.Console$.withErr(Console.scala:193)
[error] mill.eval.Evaluator.$anonfun$evaluateGroup$12(Evaluator.scala:631)
[error] scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
[error] scala.Console$.withOut(Console.scala:164)
[error] mill.eval.Evaluator.$anonfun$evaluateGroup$11(Evaluator.scala:630)
[error] scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
[error] scala.Console$.withIn(Console.scala:227)
[error] mill.eval.Evaluator.$anonfun$evaluateGroup$8(Evaluator.scala:629)
[error] mill.eval.Evaluator.$anonfun$evaluateGroup$8$adapted(Evaluator.scala:590)
[error] scala.collection.immutable.Vector.foreach(Vector.scala:1895)
[error] mill.eval.Evaluator.evaluateGroup(Evaluator.scala:590)
[error] mill.eval.Evaluator.$anonfun$evaluateGroupCached$21(Evaluator.scala:482)
[error] scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
[error] mill.eval.Evaluator.evaluateGroupCached(Evaluator.scala:473)
[error] mill.eval.Evaluator.$anonfun$sequentialEvaluate$2(Evaluator.scala:202)
[error] scala.collection.IterableOnceOps.foreach(IterableOnce.scala:575)
[error] scala.collection.IterableOnceOps.foreach$(IterableOnce.scala:573)
[error] scala.collection.AbstractIterator.foreach(Iterator.scala:1300)
[error] mill.eval.Evaluator.sequentialEvaluate(Evaluator.scala:177)
[error] mill.eval.Evaluator.evaluate(Evaluator.scala:162)
[error] mill.main.RunScript$.evaluateNamed(RunScript.scala:363)
[error] mill.main.RunScript$.evaluate(RunScript.scala:349)
[error] mill.main.RunScript$.$anonfun$evaluateTasks$1(RunScript.scala:314)
[error] scala.util.Either.map(Either.scala:382)
[error] mill.main.RunScript$.evaluateTasks(RunScript.scala:312)
[error] mill.main.RunScript$.$anonfun$runScript$8(RunScript.scala:105)
[error] ammonite.util.Res$Success.flatMap(Res.scala:62)
[error] mill.main.RunScript$.runScript(RunScript.scala:104)
[error] mill.main.MainRunner.$anonfun$runScript$1(MainRunner.scala:119)
[error] mill.main.MainRunner.watchLoop2(MainRunner.scala:67)
[error] mill.main.MainRunner.runScript(MainRunner.scala:92)
[error] mill.MillMain$.main0(MillMain.scala:320)
[error] mill.MillMain$.main(MillMain.scala:52)
[error] mill.MillMain.main(MillMain.scala)
[error] java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[error] java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
[error] java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[error] java.base/java.lang.reflect.Method.invoke(Method.java:568)
[error] mill.main.client.IsolatedMillMainLoader.runMain(IsolatedMillMainLoader.java:58)
[error] mill.main.client.MillClientMain.main(MillClientMain.java:64)
[error]            
1 targets failed
meta.compile java.util.NoSuchElementException: key not found: method unapply
    scala.collection.immutable.Map$EmptyMap$.apply(Map.scala:223)
    scala.collection.immutable.Map$EmptyMap$.apply(Map.scala:219)
    dotty.tools.dotc.transform.Erasure$Typer.addRetainedInlineBodies$$anonfun$1(Erasure.scala:1004)
    scala.collection.immutable.List.mapConserve(List.scala:472)
    dotty.tools.dotc.transform.Erasure$Typer.addRetainedInlineBodies(Erasure.scala:1015)
    dotty.tools.dotc.transform.Erasure$Typer.typedStats(Erasure.scala:1039)
    dotty.tools.dotc.typer.Typer.typedClassDef(Typer.scala:2556)
    dotty.tools.dotc.transform.Erasure$Typer.typedClassDef(Erasure.scala:1032)
    dotty.tools.dotc.typer.Typer.typedTypeOrClassDef$1(Typer.scala:2908)
    dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:2912)
    dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2982)
    dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:126)
    dotty.tools.dotc.typer.Typer.typed(Typer.scala:3050)
    dotty.tools.dotc.typer.Typer.typed(Typer.scala:3054)
    dotty.tools.dotc.typer.Typer.traverse$1(Typer.scala:3076)
    dotty.tools.dotc.typer.Typer.typedStats(Typer.scala:3126)
    dotty.tools.dotc.transform.Erasure$Typer.typedStats(Erasure.scala:1043)
    dotty.tools.dotc.typer.Typer.typedClassDef(Typer.scala:2556)
    dotty.tools.dotc.transform.Erasure$Typer.typedClassDef(Erasure.scala:1032)
    dotty.tools.dotc.typer.Typer.typedTypeOrClassDef$1(Typer.scala:2908)
    dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:2912)
    dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2982)
    dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:126)
    dotty.tools.dotc.typer.Typer.typed(Typer.scala:3050)
    dotty.tools.dotc.typer.Typer.typed(Typer.scala:3054)
    dotty.tools.dotc.typer.Typer.traverse$1(Typer.scala:3076)
    dotty.tools.dotc.typer.Typer.typedStats(Typer.scala:3126)
    dotty.tools.dotc.transform.Erasure$Typer.typedStats(Erasure.scala:1043)
    dotty.tools.dotc.typer.Typer.typedPackageDef(Typer.scala:2687)
    dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2953)
    dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2983)
    dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:126)
    dotty.tools.dotc.typer.Typer.typed(Typer.scala:3050)
    dotty.tools.dotc.typer.Typer.typed(Typer.scala:3054)
    dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:3170)
    dotty.tools.dotc.transform.Erasure.run(Erasure.scala:144)
    dotty.tools.dotc.core.Phases$Phase.runOn$$anonfun$1(Phases.scala:316)
    scala.collection.immutable.List.map(List.scala:246)
    dotty.tools.dotc.core.Phases$Phase.runOn(Phases.scala:320)
    dotty.tools.dotc.Run.runPhases$1$$anonfun$1(Run.scala:233)
    scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
    scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
    scala.collection.ArrayOps$.foreach$extension(ArrayOps.scala:1321)
    dotty.tools.dotc.Run.runPhases$1(Run.scala:244)
    dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:252)
    dotty.tools.dotc.Run.compileUnits$$anonfun$adapted$1(Run.scala:261)
    dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:68)
    dotty.tools.dotc.Run.compileUnits(Run.scala:261)
    dotty.tools.dotc.Run.compileSources(Run.scala:185)
    dotty.tools.dotc.Run.compile(Run.scala:169)
    dotty.tools.dotc.Driver.doCompile(Driver.scala:35)
    dotty.tools.xsbt.CompilerBridgeDriver.run(CompilerBridgeDriver.java:88)
    dotty.tools.xsbt.CompilerBridge.run(CompilerBridge.java:22)
    sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:91)
    sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$7(MixedAnalyzingCompiler.scala:193)
    scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
    sbt.internal.inc.MixedAnalyzingCompiler.timed(MixedAnalyzingCompiler.scala:248)
    sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$4(MixedAnalyzingCompiler.scala:183)
    sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$4$adapted(MixedAnalyzingCompiler.scala:163)
    sbt.internal.inc.JarUtils$.withPreviousJar(JarUtils.scala:239)
    sbt.internal.inc.MixedAnalyzingCompiler.compileScala$1(MixedAnalyzingCompiler.scala:163)
    sbt.internal.inc.MixedAnalyzingCompiler.compile(MixedAnalyzingCompiler.scala:211)
    sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1(IncrementalCompilerImpl.scala:534)
    sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1$adapted(IncrementalCompilerImpl.scala:534)
    sbt.internal.inc.Incremental$.$anonfun$apply$5(Incremental.scala:179)
    sbt.internal.inc.Incremental$.$anonfun$apply$5$adapted(Incremental.scala:177)
    sbt.internal.inc.Incremental$$anon$2.run(Incremental.scala:463)
    sbt.internal.inc.IncrementalCommon$CycleState.next(IncrementalCommon.scala:116)
    sbt.internal.inc.IncrementalCommon$$anon$1.next(IncrementalCommon.scala:56)
    sbt.internal.inc.IncrementalCommon$$anon$1.next(IncrementalCommon.scala:52)
    sbt.internal.inc.IncrementalCommon.cycle(IncrementalCommon.scala:263)
    sbt.internal.inc.Incremental$.$anonfun$incrementalCompile$8(Incremental.scala:418)
    sbt.internal.inc.Incremental$.withClassfileManager(Incremental.scala:506)
    sbt.internal.inc.Incremental$.incrementalCompile(Incremental.scala:405)
    sbt.internal.inc.Incremental$.apply(Incremental.scala:171)
    sbt.internal.inc.IncrementalCompilerImpl.compileInternal(IncrementalCompilerImpl.scala:534)
    sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileIncrementally$1(IncrementalCompilerImpl.scala:488)
    sbt.internal.inc.IncrementalCompilerImpl.handleCompilationError(IncrementalCompilerImpl.scala:332)
    sbt.internal.inc.IncrementalCompilerImpl.compileIncrementally(IncrementalCompilerImpl.scala:425)
    sbt.internal.inc.IncrementalCompilerImpl.compile(IncrementalCompilerImpl.scala:137)
    mill.scalalib.worker.ZincWorkerImpl.compileInternal(ZincWorkerImpl.scala:561)
    mill.scalalib.worker.ZincWorkerImpl.$anonfun$compileMixed0$1(ZincWorkerImpl.scala:339)
    mill.api.FixSizedCache.withCachedValue(FixSizedCache.scala:66)
    mill.scalalib.worker.ZincWorkerImpl.withCompilers(ZincWorkerImpl.scala:421)
    mill.scalalib.worker.ZincWorkerImpl.compileMixed0(ZincWorkerImpl.scala:338)
    mill.scalalib.worker.ZincWorkerImpl.compileMixed(ZincWorkerImpl.scala:306)
    mill.scalalib.ScalaModule.$anonfun$compile$2(ScalaModule.scala:198)
    mill.define.Task$TraverseCtx.evaluate(Task.scala:380)

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions