Skip to content

producing tree with incorrect owner in quotations API #13809

Closed
@rssh

Description

@rssh

Compiler version

3.1.0
Minimization is still big, but self-contained.

Note, that code above create new scopes only via quotation API.

Minimized code

File1 (macroses)

package x

import scala.annotation._
import scala.quoted._

trait CB[+T]

object CBM:
  def pure[T](t:T):CB[T] = ???
  def map[A,B](fa:CB[A])(f: A=>B):CB[B] = ???
  def flatMap[A,B](fa:CB[A])(f: A=>CB[B]):CB[B] = ???
  def spawn[A](op: =>CB[A]): CB[A] = ???
  

@compileTimeOnly("await should be inside async block")
def await[T](f: CB[T]): T = ???


trait CpsExpr[T:Type](prev: Seq[Expr[?]]):

   def fLast(using Quotes): Expr[CB[T]]
   def prependExprs(exprs: Seq[Expr[?]]): CpsExpr[T] 
   def append[A:Type](chunk: CpsExpr[A])(using Quotes): CpsExpr[A]
   def syncOrigin(using Quotes): Option[Expr[T]]
   def map[A:Type](f: Expr[T => A])(using Quotes): CpsExpr[A] =
           MappedCpsExpr[T,A](Seq(),this,f)
   def flatMap[A:Type](f: Expr[T => CB[A]])(using Quotes): CpsExpr[A] =
           FlatMappedCpsExpr[T,A](Seq(),this,f)
 
   def transformed(using Quotes): Expr[CB[T]] =
      import quotes.reflect._
      Block(prev.toList.map(_.asTerm), fLast.asTerm).asExprOf[CB[T]]
        
 
case class GenericSyncCpsExpr[T:Type](prev: Seq[Expr[?]],last: Expr[T]) extends CpsExpr[T](prev):
 
       override def fLast(using Quotes): Expr[CB[T]] =
         '{  CBM.pure(${last}:T) }
 
       override def prependExprs(exprs: Seq[Expr[?]]): CpsExpr[T] =
         copy(prev = exprs ++: prev)
       
       override def syncOrigin(using Quotes): Option[Expr[T]] = 
         import quotes.reflect._
         Some(Block(prev.toList.map(_.asTerm), last.asTerm).asExprOf[T])  
 
       override def append[A:Type](e: CpsExpr[A])(using Quotes) =
         e.prependExprs(Seq(last)).prependExprs(prev)
 
       override def map[A:Type](f: Expr[T => A])(using Quotes): CpsExpr[A] =
         copy(last = '{ $f($last) })
 
       override def flatMap[A:Type](f: Expr[T => CB[A]])(using Quotes): CpsExpr[A] =
         GenericAsyncCpsExpr[A](prev, '{ CBM.flatMap(CBM.pure($last))($f) } )
 
 
abstract class AsyncCpsExpr[T:Type](
                               prev: Seq[Expr[?]]
                             ) extends CpsExpr[T](prev):
 
   override def append[A:Type](e: CpsExpr[A])(using Quotes): CpsExpr[A] =
            flatMap( '{ (x:T) => ${e.transformed} })
 
   override def syncOrigin(using Quotes): Option[Expr[T]] = None
 
 
 
case class GenericAsyncCpsExpr[T:Type](
                             prev: Seq[Expr[?]],
                             fLastExpr: Expr[CB[T]]
                             ) extends AsyncCpsExpr[T](prev):
 
   override def fLast(using Quotes): Expr[CB[T]] = fLastExpr

   override def prependExprs(exprs: Seq[Expr[?]]): CpsExpr[T] =
         copy(prev = exprs ++: prev)
 
   override def map[A:Type](f: Expr[T => A])(using Quotes): CpsExpr[A] =
            MappedCpsExpr(Seq(),this,f)
 
   override def flatMap[A:Type](f: Expr[T => CB[A]])(using Quotes): CpsExpr[A] =
            FlatMappedCpsExpr(Seq(),this,f)
 

 
case class MappedCpsExpr[S:Type, T:Type](
                               prev: Seq[Expr[?]],
                               point: CpsExpr[S],
                               mapping: Expr[S=>T]
                               ) extends AsyncCpsExpr[T](prev):
 
   override def fLast(using Quotes): Expr[CB[T]] =
            '{ CBM.map(${point.transformed})($mapping) }
 
   override def prependExprs(exprs: Seq[Expr[?]]): CpsExpr[T] =
           copy(prev = exprs ++: prev)
                     

 
case class FlatMappedCpsExpr[S:Type, T:Type](
                               prev: Seq[Expr[?]],
                               point: CpsExpr[S],
                               mapping: Expr[S => CB[T]]
                              ) extends AsyncCpsExpr[T](prev):
 
     override def fLast(using Quotes): Expr[CB[T]] =
                   '{ CBM.flatMap(${point.transformed})($mapping) }
 
     override def prependExprs(exprs: Seq[Expr[?]]): CpsExpr[T] =
           copy(prev = exprs ++: prev)
 
 
class ValRhsFlatMappedCpsExpr[T:Type, V:Type](using thisQuotes: Quotes)
                                      (
                                       prev: Seq[Expr[?]],
                                       oldValDef: quotes.reflect.ValDef,
                                       cpsRhs: CpsExpr[V],
                                       next: CpsExpr[T]
                                      )
                                     extends AsyncCpsExpr[T](prev) {
 
      override def fLast(using Quotes):Expr[CB[T]] =
           import quotes.reflect._
           next.syncOrigin match
             case Some(nextOrigin) =>
               // owner of this block is incorrect
              '{
                 CBM.map(${cpsRhs.transformed})((vx:V) =>
                           ${buildAppendBlockExpr('vx, nextOrigin)})
               }
             case  None =>
              '{
                CBM.flatMap(${cpsRhs.transformed})((v:V)=>
                           ${buildAppendBlockExpr('v, next.transformed)})
              }
            
 
      override def prependExprs(exprs: Seq[Expr[?]]): CpsExpr[T] =
           ValRhsFlatMappedCpsExpr(using thisQuotes)(exprs ++: prev,oldValDef,cpsRhs,next)
 
      override def append[A:quoted.Type](e: CpsExpr[A])(using Quotes) =
           ValRhsFlatMappedCpsExpr(using thisQuotes)(prev,oldValDef,cpsRhs,next.append(e))
 
 
      private def buildAppendBlock(using Quotes)(rhs:quotes.reflect.Term,
                                                     exprTerm:quotes.reflect.Term): quotes.reflect.Term =
           import quotes.reflect._
           import scala.quoted.Expr
 
           val castedOldValDef = oldValDef.asInstanceOf[quotes.reflect.ValDef]
           val valDef = ValDef(castedOldValDef.symbol, Some(rhs.changeOwner(castedOldValDef.symbol)))
           exprTerm match 
               case Block(stats,last) =>
                     Block(valDef::stats, last)
               case other =>
                     Block(valDef::Nil,other)
 
      private def buildAppendBlockExpr[A:Type](using Quotes)(rhs: Expr[V], expr:Expr[A]):Expr[A] =
           import quotes.reflect._
           buildAppendBlock(rhs.asTerm,expr.asTerm).asExprOf[A]
 
}
 
 
object CpsExpr:
 
    def sync[T:Type](f: Expr[T]): CpsExpr[T] =
      GenericSyncCpsExpr[T](Seq(), f)
 
    def async[T:Type](f: Expr[CB[T]]): CpsExpr[T] =
      GenericAsyncCpsExpr[T](Seq(), f)
 
 
object Async:

   transparent inline def transform[T](inline expr: T) =  ${
      Async.transformImpl[T]('expr)
   }
      
   def transformImpl[T:Type](f: Expr[T])(using Quotes): Expr[CB[T]] =
      import quotes.reflect._
      println(s"before transformed: ${f.show}")
      val cpsExpr = rootTransform[T](f)
      val r = '{ CBM.spawn(${cpsExpr.transformed}) }               
      println(s"transformed value: ${r.show}")
      r
    
   def rootTransform[T:Type](f: Expr[T])(using Quotes): CpsExpr[T] = {
      import quotes.reflect._
      f match 
         case '{ while ($cond) { $repeat }  } =>
            val cpsRepeat = rootTransform(repeat.asExprOf[Unit])
            CpsExpr.async('{
                   def _whilefun():CB[Unit] =
                      if ($cond) {
                         ${cpsRepeat.flatMap('{(x:Unit) => _whilefun()}).transformed}
                      } else {
                         CBM.pure(())
                      }
                   _whilefun()
            }.asExprOf[CB[T]])
         case _ =>
            val fTree = f.asTerm
            fTree match {
               case fun@Apply(fun1@TypeApply(obj2,targs2), args1) =>
                      if (obj2.symbol.name == "await") {
                         val awaitArg = args1.head
                         CpsExpr.async(awaitArg.asExprOf[CB[T]])
                      } else {
                         ???
                      }
               case Assign(left,right) =>
                       left match
                         case id@Ident(x) =>
                            right.tpe.widen.asType match
                               case '[r] =>
                                  val cpsRight = rootTransform(right.asExprOf[r])
                                  CpsExpr.async(
                                     cpsRight.map[T]( 
                                       '{ (x:r) => ${Assign(left,'x.asTerm).asExprOf[T] } 
                                        }).transformed )
                         case _ => ???
               case Block(prevs,last) =>
                      val rPrevs = prevs.map{ p =>
                         p match
                            case v@ValDef(vName,vtt,optRhs) =>
                              optRhs.get.tpe.widen.asType match
                                case '[l] =>
                                  val cpsRight = rootTransform(optRhs.get.asExprOf[l])
                                  ValRhsFlatMappedCpsExpr(using quotes)(Seq(), v, cpsRight, CpsExpr.sync('{}))
                            case t: Term =>
                             // TODO: rootTransform
                             t.asExpr match
                                  case '{ $p: tp } =>
                                         rootTransform(p)
                                  case other =>
                                         printf(other.show)
                                         throw RuntimeException(s"can't handle term in block: $other")
                            case other =>
                              printf(other.show)
                              throw RuntimeException(s"unknown tree type in block: $other")
                       }
                       val rLast = rootTransform(last.asExprOf[T])
                       val blockResult = rPrevs.foldRight(rLast)((e,s) => e.append(s))
                       val retval = CpsExpr.async(blockResult.transformed)
                       retval
                       //BlockTransform(cpsCtx).run(prevs,last)
               case id@Ident(name) =>
                       CpsExpr.sync(id.asExprOf[T]) 
               case tid@Typed(Ident(name), tp) =>
                      CpsExpr.sync(tid.asExprOf[T])
               case matchTerm@Match(scrutinee, caseDefs) =>
                      val nCases = caseDefs.map{ old => 
                         CaseDef.copy(old)(old.pattern, old.guard, rootTransform(old.rhs.asExprOf[T]).transformed.asTerm) 
                      }
                      CpsExpr.async(Match(scrutinee, nCases).asExprOf[CB[T]])
               case inlinedTerm@ Inlined(call,List(),body) =>
                         rootTransform(body.asExprOf[T])
               case constTerm@Literal(_)=>  
                       CpsExpr.sync(constTerm.asExprOf[T]) 
               case _ =>
                       throw RuntimeException(s"language construction is not supported: ${fTree}")
            }
   }

File2:

package x

object VP1:

   ///*
   def allocateServiceOperator(optInUsername: Option[String]): CB[Unit] = Async.transform {
      val username = optInUsername match
         case None =>
            while(false) {
               val nextResult = await(op1())
               val countResult = await(op1())
            }
         case Some(inUsername) =>
            val x = await(op1())
            inUsername
   }
   //*/

   def op1(): CB[String] = ???

Output (click arrow to expand)

``` [info] welcome to sbt 1.5.5 (Homebrew Java 17) [info] loading global plugins from /Users/rssh/.sbt/1.0/plugins [info] loading settings for project dotty-cps-async-build from plugins.sbt ... [info] loading project definition from /Users/rssh/work/oss/dotty-cps/dotty-cps-async/project [info] loading settings for project root from build.sbt,publish.sbt ... [info] set current project to root (in build file:/Users/rssh/work/oss/dotty-cps/dotty-cps-async/) [success] Total time: 0 s, completed 25 Oct 2021, 09:08:39 [info] compiling 1 Scala source to /Users/rssh/work/oss/dotty-cps/dotty-cps-async/jvm/target/scala-3.1.0/classes ... [success] Total time: 7 s, completed 25 Oct 2021, 09:08:46 [info] compiling 1 Scala source to /Users/rssh/work/oss/dotty-cps/dotty-cps-async/jvm/target/scala-3.1.0/test-classes ... before transformed: { val username: scala.Matchable = optInUsername match { case scala.None => while (false) { val nextResult: java.lang.String = x.Async$package.await[java.lang.String](x.VP1.op1()) val countResult: java.lang.String = x.Async$package.await[java.lang.String](x.VP1.op1()) () } case scala.Some(inUsername) => val x: java.lang.String = x.Async$package.await[java.lang.String](x.VP1.op1())
  (inUsername: java.lang.String)

}
()
}
transformed value: x.CBM.spawn[scala.Unit](x.CBM.map[scala.Unit | java.lang.String, scala.Unit](optInUsername match {
case scala.None =>
{
def _whilefun(): x.CB[scala.Unit] = if (false) x.CBM.flatMap[scala.Unit, scala.Unit](x.CBM.flatMapjava.lang.String, scala.Unit(((v: java.lang.String) => {
val nextResult: java.lang.String = v
x.CBM.mapjava.lang.String, scala.Unit(((vx: java.lang.String) => {
val countResult: java.lang.String = vx
()
}))
})))(((x: scala.Unit) => _whilefun())) else x.CBM.purescala.Unit
_whilefun()
}
case scala.Some(inUsername) =>
x.CBM.mapjava.lang.String, scala.Unit | java.lang.String(((vx₂: java.lang.String) => {
val x₂: java.lang.String = vx₂

  (inUsername: java.lang.String)
}))

})(((vx₃: scala.Unit | java.lang.String) => {
val username: scala.Matchable = vx₃
()
})))
[warn] -- [E129] Potential Issue Warning: /Users/rssh/work/oss/dotty-cps/dotty-cps-async/shared/src/test/scala/cps/vp/VP1.scala:6:90
[warn] 6 | def allocateServiceOperator(optInUsername: Option[String]): CB[Unit] = Async.transform {
[warn] | ^
[warn] |A pure expression does nothing in statement position; you may be omitting necessary parentheses
[warn] | This location contains code that was inlined from VP1.scala:6
[warn] 7 | val username = optInUsername match
[warn] 8 | case None =>
[warn] 9 | while(false) {
[warn] 10 | val nextResult = await(op1())
[warn] 11 | val countResult = await(op1())
[warn] 12 | }
[warn] 13 | case Some(inUsername) =>
[warn] 14 | val x = await(op1())
[warn] 15 | inUsername
[warn] 16 | }
java.util.NoSuchElementException: key not found: method $anonfun while traversing <inUsername#9650:String/T#819>
java.util.NoSuchElementException: key not found: method $anonfun while traversing <<inUsername#9650:String/T#819> :String/T#819:String/T#819>
java.util.NoSuchElementException: key not found: method $anonfun while traversing <
{
val x#11356: String/T#819
<<inUsername#9650:String/T#819> :String/T#819:String/T#819>
}
:String/T#819>
java.util.NoSuchElementException: key not found: method $anonfun while traversing def $anonfun#11353(vx#862275614: String/T#819): Object/T
java.util.NoSuchElementException: key not found: method $anonfun while traversing <
{
def $anonfun#11353(vx#862275614: String/T#819): Object/T
<closure(<$anonfun#11353:(vx#862275614: String/T#819): Object/T>):
Function1/T#217
>
}
:Function1/T#217>
java.util.NoSuchElementException: key not found: method $anonfun while traversing <
<<x#25.CBM#3997:x#25.CBM/T#3998>.map#11257:
((fa#1425139597: x#25.CB/T#3993, f#1425139597: Function1/T#217):
x#25.CB/T#3993
)

(<<x#25.VP1#4020.op1#6134:((): x#25.CB/T#3993)>():x#25.CB/T#3993>,
<
{
def $anonfun#11353(vx#862275614: String/T#819): Object/T
<closure(<$anonfun#11353:(vx#862275614: String/T#819): Object/T>):
Function1/T#217
>
}
:Function1/T#217>
):x#25.CB/T#3993>
java.util.NoSuchElementException: key not found: method $anonfun while traversing <
{
<
<<x#25.CBM#3997:x#25.CBM/T#3998>.map#11257:
((fa#1425139597: x#25.CB/T#3993, f#1425139597: Function1/T#217):
x#25.CB/T#3993
)
>
(<<x#25.VP1#4020.op1#6134:((): x#25.CB/T#3993)>():x#25.CB/T#3993>,
<
{
def $anonfun#11353(vx#862275614: String/T#819): Object/T
<closure(<$anonfun#11353:(vx#862275614: String/T#819): Object/T>):
Function1/T#217
>
}
:Function1/T#217>
):x#25.CB/T#3993>
}
:x#25.CB/T#3993>
java.util.NoSuchElementException: key not found: method $anonfun while traversing <return[[Unique matchResult 1]]
<
{
<
<<x#25.CBM#3997:x#25.CBM/T#3998>.map#11257:
((fa#1425139597: x#25.CB/T#3993, f#1425139597: Function1/T#217):
x#25.CB/T#3993
)
>
(<<x#25.VP1#4020.op1#6134:((): x#25.CB/T#3993)>():x#25.CB/T#3993>,
<
{
def $anonfun#11353(vx#862275614: String/T#819): Object/T
<closure(<$anonfun#11353:(vx#862275614: String/T#819): Object/T>):
Function1/T#217
>
}
:Function1/T#217>
):x#25.CB/T#3993>
}
:x#25.CB/T#3993>
:Nothing/T#1314>
java.util.NoSuchElementException: key not found: method $anonfun while traversing <
{
case val inUsername#9650: String/T#819
<return[[Unique matchResult 1]]
<
{
<
<<x#25.CBM#3997:x#25.CBM/T#3998>.map#11257:
((fa#1425139597: x#25.CB/T#3993, f#1425139597: Function1/T#217):
x#25.CB/T#3993
)
>
(<<x#25.VP1#4020.op1#6134:((): x#25.CB/T#3993)>():x#25.CB/T#3993>,
<
{
def $anonfun#11353(vx#862275614: String/T#819): Object/T
<closure(<$anonfun#11353:(vx#862275614: String/T#819): Object/T>
)
:Function1/T#217>
}
:Function1/T#217>
):x#25.CB/T#3993>
}
:x#25.CB/T#3993>
:Nothing/T#1314>
}
:Nothing/T#1314>
java.util.NoSuchElementException: key not found: method $anonfun while traversing <if
<
<<[Unique x 1]#11848:Option/T#82>.isInstanceOf#3815:
([X0/T#1581425209 <: Object/T]#1581425209 => Boolean/T#94)
>
[Some/T#328]:Boolean/T#94>
then
<
{
case val inUsername#9650: String/T#819
<return[[Unique matchResult 1]]
<
{
<
<<x#25.CBM#3997:x#25.CBM/T#3998>.map#11257:
((fa#1425139597: x#25.CB/T#3993, f#1425139597: Function1/T#217
):
x#25.CB/T#3993)
>
(<<x#25.VP1#4020.op1#6134:((): x#25.CB/T#3993)>():x#25.CB/T#3993>,
<
{
def $anonfun#11353(vx#862275614: String/T#819): Object/T
<closure(
<$anonfun#11353:(vx#862275614: String/T#819): Object/T>
):Function1/T#217>
}
:Function1/T#217>
):x#25.CB/T#3993>
}
:x#25.CB/T#3993>
:Nothing/T#1314>
}
:Nothing/T#1314>
else <():Unit/T#157>:Unit/T#157>
java.util.NoSuchElementException: key not found: method $anonfun while traversing <
{
case val [Unique x 1]#11848: Option/T#82
<if
<<<None#257:None/T#258>.==#1867:((x$0#478617181: Object/T): Boolean/T#94)>
(
<[Unique x 1]#11848:Option/T#82>):Boolean/T#94>
then
<return[[Unique matchResult 1]]
<
{
def _whilefun#11377(): x#25.CB/T#3993
<<_whilefun#11377:((): x#25.CB/T#3993)>():x#25.CB/T#3993>
}
:x#25.CB/T#3993>
:Nothing/T#1314>
else <():Unit/T#157>:Unit/T#157>
<if
<
<<[Unique x 1]#11848:Option/T#82>.isInstanceOf#3815:
([X0/T#1581425209 <: Object/T]#1581425209 => Boolean/T#94)
>
[Some/T#328]:Boolean/T#94>
then
<
{
case val inUsername#9650: String/T#819
<return[[Unique matchResult 1]]
<
{
<
<<x#25.CBM#3997:x#25.CBM/T#3998>.map#11257:
((fa#1425139597: x#25.CB/T#3993, f#1425139597:
Function1/T#217
): x#25.CB/T#3993)
>
(
<<x#25.VP1#4020.op1#6134:((): x#25.CB/T#3993)>():
x#25.CB/T#3993
>
,
<
{
def $anonfun#11353(vx#862275614: String/T#819): Object/T
<closure(
<$anonfun#11353:(vx#862275614: String/T#819): Object/T>
):Function1/T#217>
}
:Function1/T#217>
):x#25.CB/T#3993>
}
:x#25.CB/T#3993>
:Nothing/T#1314>
}
:Nothing/T#1314>
else <():Unit/T#157>:Unit/T#157>
<throw
<
<<new MatchError/T#331:MatchError/T#331>:
((obj#138727514: Object/T): MatchError/T#331)
>
(<[Unique x 1]#11848:Option/T#82>):MatchError/T#331>
:Nothing/T#1314>
}
:Nothing/T#1314>
java.util.NoSuchElementException: key not found: method $anonfun while traversing <[Unique matchResult 1][x#25.CB/T#3993]:
<
{
case val [Unique x 1]#11848: Option/T#82
<if
<
<<None#257:None/T#258>.==#1867:
((x$0#478617181: Object/T): Boolean/T#94)
>
(<[Unique x 1]#11848:Option/T#82>):Boolean/T#94>
then
<return[[Unique matchResult 1]]
<
{
def _whilefun#11377(): x#25.CB/T#3993
<<_whilefun#11377:((): x#25.CB/T#3993)>():x#25.CB/T#3993>
}
:x#25.CB/T#3993>
:Nothing/T#1314>
else <():Unit/T#157>:Unit/T#157>
<if
<
<<[Unique x 1]#11848:Option/T#82>.isInstanceOf#3815:
([X0/T#1581425209 <: Object/T]#1581425209 => Boolean/T#94)
>
[Some/T#328]:Boolean/T#94>
then
<
{
case val inUsername#9650: String/T#819
<return[[Unique matchResult 1]]
<
{
<
<<x#25.CBM#3997:x#25.CBM/T#3998>.map#11257:
((fa#1425139597: x#25.CB/T#3993, f#1425139597:
Function1/T#217
): x#25.CB/T#3993)
>
(
<<x#25.VP1#4020.op1#6134:((): x#25.CB/T#3993)>():
x#25.CB/T#3993
>
,
<
{
def $anonfun#11353(vx#862275614: String/T#819): Object/T
<closure(
<$anonfun#11353:(vx#862275614: String/T#819): Object/T
>
):Function1/T#217>
}
:Function1/T#217>
):x#25.CB/T#3993>
}
:x#25.CB/T#3993>
:Nothing/T#1314>
}
:Nothing/T#1314>
else <():Unit/T#157>:Unit/T#157>
<throw
<
<<new MatchError/T#331:MatchError/T#331>:
((obj#138727514: Object/T): MatchError/T#331)
>
(<[Unique x 1]#11848:Option/T#82>):MatchError/T#331>
:Nothing/T#1314>
}
:Nothing/T#1314>
:x#25.CB/T#3993>
java.util.NoSuchElementException: key not found: method $anonfun while traversing <
<<x#25.CBM#3997:x#25.CBM/T#3998>.map#11257:
((fa#1425139597: x#25.CB/T#3993, f#1425139597: Function1/T#217):
x#25.CB/T#3993
)

(
<[Unique matchResult 1][x#25.CB/T#3993]:
<
{
case val [Unique x 1]#11848: Option/T#82
<if
<
<<None#257:None/T#258>.==#1867:
((x$0#478617181: Object/T): Boolean/T#94)
>
(<[Unique x 1]#11848:Option/T#82>):Boolean/T#94>
then
<return[[Unique matchResult 1]]
<
{
def _whilefun#11377(): x#25.CB/T#3993
<<_whilefun#11377:((): x#25.CB/T#3993)>():x#25.CB/T#3993>
}
:x#25.CB/T#3993>
:Nothing/T#1314>
else <():Unit/T#157>:Unit/T#157>
<if
<
<<[Unique x 1]#11848:Option/T#82>.isInstanceOf#3815:
([X0/T#1581425209 <: Object/T]#1581425209 => Boolean/T#94)
>
[Some/T#328]:Boolean/T#94>
then
<
{
case val inUsername#9650: String/T#819
<return[[Unique matchResult 1]]
<
{
<
<<x#25.CBM#3997:x#25.CBM/T#3998>.map#11257:
((fa#1425139597: x#25.CB/T#3993, f#1425139597:
Function1/T#217
): x#25.CB/T#3993)
>
(
<<x#25.VP1#4020.op1#6134:((): x#25.CB/T#3993)>():
x#25.CB/T#3993
>
,
<
{
def $anonfun#11353
(vx#862275614: String/T#819): Object/T
<closure(
<$anonfun#11353:
(vx#862275614: String/T#819): Object/T
>
):Function1/T#217>
}
:Function1/T#217>
):x#25.CB/T#3993>
}
:x#25.CB/T#3993>
:Nothing/T#1314>
}
:Nothing/T#1314>
else <():Unit/T#157>:Unit/T#157>
<throw
<
<<new MatchError/T#331:MatchError/T#331>:
((obj#138727514: Object/T): MatchError/T#331)
>
(<[Unique x 1]#11848:Option/T#82>):MatchError/T#331>
:Nothing/T#1314>
}
:Nothing/T#1314>
:x#25.CB/T#3993>
,
<
{
def $anonfun#11364(vx#46920594: Object/T): Unit/T#157
<closure(<$anonfun#11364:(vx#46920594: Object/T): Unit/T#157>:
scala#23.runtime#430.function#7204.JProcedure1/T#18612
):scala#23.runtime#430.function#7204.JProcedure1/T#18612>
}
:scala#23.runtime#430.function#7204.JProcedure1/T#18612>
):x#25.CB/T#3993>
java.util.NoSuchElementException: key not found: method $anonfun while traversing <
{
<
<<x#25.CBM#3997:x#25.CBM/T#3998>.map#11257:
((fa#1425139597: x#25.CB/T#3993, f#1425139597: Function1/T#217):
x#25.CB/T#3993
)
>
(
<[Unique matchResult 1][x#25.CB/T#3993]:
<
{
case val [Unique x 1]#11848: Option/T#82
<if
<
<<None#257:None/T#258>.==#1867:
((x$0#478617181: Object/T): Boolean/T#94)
>
(<[Unique x 1]#11848:Option/T#82>):Boolean/T#94>
then
<return[[Unique matchResult 1]]
<
{
def _whilefun#11377(): x#25.CB/T#3993
<<_whilefun#11377:((): x#25.CB/T#3993)>():x#25.CB/T#3993>
}
:x#25.CB/T#3993>
:Nothing/T#1314>
else <():Unit/T#157>:Unit/T#157>
<if
<
<<[Unique x 1]#11848:Option/T#82>.isInstanceOf#3815:
([X0/T#1581425209 <: Object/T]#1581425209 => Boolean/T#94)
>
[Some/T#328]:Boolean/T#94>
then
<
{
case val inUsername#9650: String/T#819
<return[[Unique matchResult 1]]
<
{
<
<<x#25.CBM#3997:x#25.CBM/T#3998>.map#11257:
((fa#1425139597: x#25.CB/T#3993, f#1425139597:
Function1/T#217
): x#25.CB/T#3993)
>
(
<<x#25.VP1#4020.op1#6134:((): x#25.CB/T#3993)>():
x#25.CB/T#3993
>
,
<
{
def $anonfun#11353
(vx#862275614: String/T#819): Object/T
<closure(
<$anonfun#11353:
(vx#862275614: String/T#819): Object/T
>
):Function1/T#217>
}
:Function1/T#217>
):x#25.CB/T#3993>
}
:x#25.CB/T#3993>
:Nothing/T#1314>
}
:Nothing/T#1314>
else <():Unit/T#157>:Unit/T#157>
<throw
<
<<new MatchError/T#331:MatchError/T#331>:
((obj#138727514: Object/T): MatchError/T#331)
>
(<[Unique x 1]#11848:Option/T#82>):MatchError/T#331>
:Nothing/T#1314>
}
:Nothing/T#1314>
:x#25.CB/T#3993>
,
<
{
def $anonfun#11364(vx#46920594: Object/T): Unit/T#157
<closure(<$anonfun#11364:(vx#46920594: Object/T): Unit/T#157>:
scala#23.runtime#430.function#7204.JProcedure1/T#18612
):scala#23.runtime#430.function#7204.JProcedure1/T#18612>
}
:scala#23.runtime#430.function#7204.JProcedure1/T#18612>
):x#25.CB/T#3993>
}
:x#25.CB/T#3993>
java.util.NoSuchElementException: key not found: method $anonfun while traversing def $anonfun#12369(): x#25.CB/T#3993
java.util.NoSuchElementException: key not found: method $anonfun while traversing <
{
def $anonfun#12369(): x#25.CB/T#3993
<closure(<$anonfun#12369:(): x#25.CB/T#3993>:Function0/T#127):
Function0/T#127
>
}
:Function0/T#127>
java.util.NoSuchElementException: key not found: method $anonfun while traversing <
<<x#25.CBM#3997:x#25.CBM/T#3998>.spawn#11259:
((op#155756685: Function0/T#127): x#25.CB/T#3993)

(
<
{
def $anonfun#12369(): x#25.CB/T#3993
<closure(<$anonfun#12369:(): x#25.CB/T#3993>:Function0/T#127):
Function0/T#127
>
}
:Function0/T#127>
):x#25.CB/T#3993>
java.util.NoSuchElementException: key not found: method $anonfun while traversing def allocateServiceOperator#6133
(optInUsername#2088808554: Option/T#82): x#25.CB/T#3993
java.util.NoSuchElementException: key not found: method $anonfun while traversing extends Object/T {
def #6132(): x#25.VP1/T#4021
private def writeReplace#11424(): Object/T
def allocateServiceOperator#6133
(optInUsername#2088808554: Option/T#82): x#25.CB/T#3993
def op1#6134(): x#25.CB/T#3993
}
java.util.NoSuchElementException: key not found: method $anonfun while traversing @<
<
<new scala#23.annotation#428.internal#4101.SourceFile/T#7298:
scala#23.annotation#428.internal#4101.SourceFile/T#7298
>
:
((path#1184953675: String/T#819):
scala#23.annotation#428.internal#4101.SourceFile/T#7298
)

(
<"shared/src/test/scala/cps/vp/VP1.scala":
("shared/src/test/scala/cps/vp/VP1.scala" : String/T#819)

):scala#23.annotation#428.internal#4101.SourceFile/T#7298> final module class
VP1/T#4021
extends Object/T {
def #6132(): x#25.VP1/T#4021
private def writeReplace#11424(): Object/T
def allocateServiceOperator#6133
(optInUsername#2088808554: Option/T#82): x#25.CB/T#3993
def op1#6134(): x#25.CB/T#3993
}
java.util.NoSuchElementException: key not found: method $anonfun while traversing <package <x#25:x/T#26> {
final lazy module object VP1#4020: x#25.VP1/T#4021
@<
<
<new scala#23.annotation#428.internal#4101.SourceFile/T#7298:
scala#23.annotation#428.internal#4101.SourceFile/T#7298
>
:
((path#1184953675: String/T#819):
scala#23.annotation#428.internal#4101.SourceFile/T#7298
)
>
(
<"shared/src/test/scala/cps/vp/VP1.scala":
("shared/src/test/scala/cps/vp/VP1.scala" : String/T#819)
>
):scala#23.annotation#428.internal#4101.SourceFile/T#7298> final module class
VP1/T#4021
extends Object/T {
def #6132(): x#25.VP1/T#4021
private def writeReplace#11424(): Object/T
def allocateServiceOperator#6133
(optInUsername#2088808554: Option/T#82): x#25.CB/T#3993
def op1#6134(): x#25.CB/T#3993
}
}:x#25.type>
[info] exception occurred while compiling /Users/rssh/work/oss/dotty-cps/dotty-cps-async/shared/src/test/scala/cps/vp/VP1.scala
java.util.NoSuchElementException: key not found: method $anonfun while compiling /Users/rssh/work/oss/dotty-cps/dotty-cps-async/shared/src/test/scala/cps/vp/VP1.scala
[error] ## Exception when compiling 1 sources to /Users/rssh/work/oss/dotty-cps/dotty-cps-async/jvm/target/scala-3.1.0/test-classes
[error] java.util.NoSuchElementException: key not found: method $anonfun
[error] scala.collection.MapOps.default(Map.scala:274)
[error] scala.collection.MapOps.default$(Map.scala:273)
[error] scala.collection.AbstractMap.default(Map.scala:405)
[error] scala.collection.MapOps.apply(Map.scala:176)
[error] scala.collection.MapOps.apply$(Map.scala:175)
[error] scala.collection.AbstractMap.apply(Map.scala:405)
[error] dotty.tools.dotc.transform.Dependencies.narrowLogicOwner(Dependencies.scala:81)
[error] dotty.tools.dotc.transform.Dependencies.markFree(Dependencies.scala:147)
[error] dotty.tools.dotc.transform.Dependencies.markFree(Dependencies.scala:145)
[error] dotty.tools.dotc.transform.Dependencies.process(Dependencies.scala:187)
[error] dotty.tools.dotc.transform.LambdaLift$$anon$1.process(LambdaLift.scala:41)
[error] dotty.tools.dotc.transform.LambdaLift$$anon$1.process(LambdaLift.scala:40)
[error] dotty.tools.dotc.transform.Dependencies$CollectDependencies.traverse(Dependencies.scala:217)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1647)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1647)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1549)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1648)
[error] dotty.tools.dotc.transform.Dependencies$CollectDependencies.traverse(Dependencies.scala:218)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1647)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1647)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1555)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1648)
[error] dotty.tools.dotc.transform.Dependencies$CollectDependencies.traverse(Dependencies.scala:218)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1647)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1647)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1610)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1648)
[error] dotty.tools.dotc.transform.Dependencies$CollectDependencies.traverse(Dependencies.scala:218)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1647)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1647)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.fold$1(Trees.scala:1522)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.apply(Trees.scala:1524)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1555)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1648)
[error] dotty.tools.dotc.transform.Dependencies$CollectDependencies.traverse(Dependencies.scala:218)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1647)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1647)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.fold$1(Trees.scala:1522)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.apply(Trees.scala:1524)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1541)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1648)
[error] dotty.tools.dotc.transform.Dependencies$CollectDependencies.traverse(Dependencies.scala:218)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1647)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1647)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1555)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1648)
[error] dotty.tools.dotc.transform.Dependencies$CollectDependencies.traverse(Dependencies.scala:218)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1647)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1647)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1567)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1648)
[error] dotty.tools.dotc.transform.Dependencies$CollectDependencies.traverse(Dependencies.scala:218)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1647)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1647)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1555)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1648)
[error] dotty.tools.dotc.transform.Dependencies$CollectDependencies.traverse(Dependencies.scala:218)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1647)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1647)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1557)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1648)
[error] dotty.tools.dotc.transform.Dependencies$CollectDependencies.traverse(Dependencies.scala:218)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1647)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1647)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.fold$1(Trees.scala:1522)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.apply(Trees.scala:1524)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1555)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1648)
[error] dotty.tools.dotc.transform.Dependencies$CollectDependencies.traverse(Dependencies.scala:218)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1647)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1647)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1565)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1648)
[error] dotty.tools.dotc.transform.Dependencies$CollectDependencies.traverse(Dependencies.scala:218)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1647)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1647)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.fold$1(Trees.scala:1522)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.apply(Trees.scala:1524)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1541)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1648)
[error] dotty.tools.dotc.transform.Dependencies$CollectDependencies.traverse(Dependencies.scala:218)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1647)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1647)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1555)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1648)
[error] dotty.tools.dotc.transform.Dependencies$CollectDependencies.traverse(Dependencies.scala:218)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1647)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1647)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1610)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1648)
[error] dotty.tools.dotc.transform.Dependencies$CollectDependencies.traverse(Dependencies.scala:218)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1647)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1647)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.fold$1(Trees.scala:1522)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.apply(Trees.scala:1524)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1555)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1648)
[error] dotty.tools.dotc.transform.Dependencies$CollectDependencies.traverse(Dependencies.scala:218)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1647)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1647)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.fold$1(Trees.scala:1522)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.apply(Trees.scala:1524)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1541)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1648)
[error] dotty.tools.dotc.transform.Dependencies$CollectDependencies.traverse(Dependencies.scala:218)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1647)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1647)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1610)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1648)
[error] dotty.tools.dotc.transform.Dependencies$CollectDependencies.traverse(Dependencies.scala:218)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1647)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1647)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.fold$1(Trees.scala:1522)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.apply(Trees.scala:1524)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1617)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1648)
[error] dotty.tools.dotc.transform.Dependencies$CollectDependencies.traverse(Dependencies.scala:218)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1647)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1647)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1614)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1648)
[error] dotty.tools.dotc.transform.Dependencies$CollectDependencies.traverse(Dependencies.scala:218)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1647)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1647)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.fold$1(Trees.scala:1522)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.apply(Trees.scala:1524)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1623)
[error] dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1648)
[error] dotty.tools.dotc.transform.Dependencies$CollectDependencies.traverse(Dependencies.scala:218)
[error] dotty.tools.dotc.transform.Dependencies.(Dependencies.scala:260)
[error] dotty.tools.dotc.transform.LambdaLift$$anon$1.(LambdaLift.scala:36)
[error] dotty.tools.dotc.transform.LambdaLift$Lifter.(LambdaLift.scala:49)
[error] dotty.tools.dotc.transform.LambdaLift.prepareForUnit(LambdaLift.scala:288)
[error] dotty.tools.dotc.transform.MegaPhase.prepUnit(MegaPhase.scala:1040)
[error] dotty.tools.dotc.transform.MegaPhase.transformUnit(MegaPhase.scala:447)
[error] dotty.tools.dotc.transform.MegaPhase.run(MegaPhase.scala:460)
[error] dotty.tools.dotc.core.Phases$Phase.runOn$$anonfun$1(Phases.scala:308)
[error] scala.collection.immutable.List.map(List.scala:246)
[error] dotty.tools.dotc.core.Phases$Phase.runOn(Phases.scala:309)
[error] dotty.tools.dotc.Run.runPhases$4$$anonfun$4(Run.scala:261)
[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:1323)
[error] dotty.tools.dotc.Run.runPhases$5(Run.scala:272)
[error] dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:280)
[error] scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
[error] dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:68)
[error] dotty.tools.dotc.Run.compileUnits(Run.scala:289)
[error] dotty.tools.dotc.Run.compileSources(Run.scala:222)
[error] dotty.tools.dotc.Run.compile(Run.scala:206)
[error] dotty.tools.dotc.Driver.doCompile(Driver.scala:39)
[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:192)
[error] scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
[error] sbt.

</details>

when adding -Ycheck:all. 
<details>
[info] checking /Users/rssh/work/oss/dotty-cps/dotty-cps-async/shared/src/test/scala/cps/vp/VP1.scala after phase typer
exception while typing <
  {
    def $anonfun#11353(vx#1106157922: String/T): Unit/T#157 |/T String/T
    <closure(<$anonfun#11353:(vx#1106157922: String/T): Unit/T#157 |/T String/T>
      )
    :String/T => Unit/T#157 |/T String/T>
  }
:String/T => Unit/T#157 |/T String/T> of class class dotty.tools.dotc.ast.Trees$Block # -1
exception while typing <
  <
    <
      <<x#25.CBM#3997:x#25.CBM/T#3998>.map#11257:
        ([A/T#765707521, B/T#765707521]#765707521
          (fa#429861691: x#25.CB/T#3993[A/T#765707521])
            (f#539037251: A/T#765707521 => B/T#765707521): 
              x#25.CB/T#3993[B/T#765707521]
        )
      >
    [String/T, Unit/T#157 |/T String/T]:
      ((fa#1297687496: x#25.CB/T#3993[String/T])
        (f#1696755510: String/T => Unit/T#157 |/T String/T): 
          x#25.CB/T#3993[Unit/T#157 |/T String/T]
      )
    >
  (
    <
      <<x#25.VP1#4020.op1#6134:((): x#25.CB/T#3993[String/T#6171])>():
        x#25.CB/T#3993[String/T#6171]
      >
    :x#25.CB/T#3993[String/T#6171]>
  ):
    ((f#1696755510: String/T => Unit/T#157 |/T String/T): 
      x#25.CB/T#3993[Unit/T#157 |/T String/T]
    )
  >
(
  <
    {
      def $anonfun#11353(vx#1106157922: String/T): Unit/T#157 |/T String/T
      <closure(
        <$anonfun#11353:(vx#1106157922: String/T): Unit/T#157 |/T String/T>
      ):String/T => Unit/T#157 |/T String/T>
    }
  :String/T => Unit/T#157 |/T String/T>
):x#25.CB/T#3993[Unit/T#157 |/T String/T]> of class class dotty.tools.dotc.ast.Trees$Apply # -1
exception while typing <
  <
    <
      <
        <<x#25.CBM#3997:x#25.CBM/T#3998>.map#11257:
          ([A/T#765707521, B/T#765707521]#765707521
            (fa#429861691: x#25.CB/T#3993[A/T#765707521])
              (f#539037251: A/T#765707521 => B/T#765707521): 
                x#25.CB/T#3993[B/T#765707521]
          )
        >
      [String/T, Unit/T#157 |/T String/T]:
        ((fa#1297687496: x#25.CB/T#3993[String/T])
          (f#1696755510: String/T => Unit/T#157 |/T String/T): 
            x#25.CB/T#3993[Unit/T#157 |/T String/T]
        )
      >
    (
      <
        <<x#25.VP1#4020.op1#6134:((): x#25.CB/T#3993[String/T#6171])>():
          x#25.CB/T#3993[String/T#6171]
        >
      :x#25.CB/T#3993[String/T#6171]>
    ):
      ((f#1696755510: String/T => Unit/T#157 |/T String/T): 
        x#25.CB/T#3993[Unit/T#157 |/T String/T]
      )
    >
  (
    <
      {
        def $anonfun#11353(vx#1106157922: String/T): Unit/T#157 |/T String/T
        <closure(
          <$anonfun#11353:(vx#1106157922: String/T): Unit/T#157 |/T String/T>
        ):String/T => Unit/T#157 |/T String/T>
      }
    :String/T => Unit/T#157 |/T String/T>
  ):x#25.CB/T#3993[Unit/T#157 |/T String/T]>
:x#25.CB/T#3993[Unit/T#157 |/T String/T]> of class class dotty.tools.dotc.ast.Trees$Inlined # -1
exception while typing <
  {
    <
      <
        <
          <
            <<x#25.CBM#3997:x#25.CBM/T#3998>.map#11257:
              ([A/T#765707521, B/T#765707521]#765707521
                (fa#429861691: x#25.CB/T#3993[A/T#765707521])
                  (f#539037251: A/T#765707521 => B/T#765707521): 
                    x#25.CB/T#3993[B/T#765707521]
              )
            >
          [String/T, Unit/T#157 |/T String/T]:
            ((fa#1297687496: x#25.CB/T#3993[String/T])
              (f#1696755510: String/T => Unit/T#157 |/T String/T): 
                x#25.CB/T#3993[Unit/T#157 |/T String/T]
            )
          >
        (
          <
            <<x#25.VP1#4020.op1#6134:((): x#25.CB/T#3993[String/T#6171])>():
              x#25.CB/T#3993[String/T#6171]
            >
          :x#25.CB/T#3993[String/T#6171]>
        ):
          ((f#1696755510: String/T => Unit/T#157 |/T String/T): 
            x#25.CB/T#3993[Unit/T#157 |/T String/T]
          )
        >
      (
        <
          {
            def $anonfun#11353(vx#1106157922: String/T): Unit/T#157 |/T String/T
            <closure(
              <$anonfun#11353:(vx#1106157922: String/T): Unit/T#157 |/T String/T
                >
            ):String/T => Unit/T#157 |/T String/T>
          }
        :String/T => Unit/T#157 |/T String/T>
      ):x#25.CB/T#3993[Unit/T#157 |/T String/T]>
    :x#25.CB/T#3993[Unit/T#157 |/T String/T]>
  }
:x#25.CB/T#3993[Unit/T#157 |/T String/T]> of class class dotty.tools.dotc.ast.Trees$Block # -1
exception while typing <<optInUsername#6166:Option/T#82[String/T#6171]> match 
  {
    <case <None#257:None/T#258> => 
      <
        <
          {
            def _whilefun#11377(): x#25.CB/T#3993[Unit/T#157]
            <<_whilefun#11377:((): x#25.CB/T#3993[Unit/T#157])>():
              x#25.CB/T#3993[Unit/T#157]
            >
          }
        :x#25.CB/T#3993[Unit/T#157]>
      :x#25.CB/T#3993[Unit/T#157]>
    :x#25.CB/T#3993[Unit/T#157]>
    <case 
      <
        <
          <
            <<Some#329:Some/T#330>.unapply#8310:
              ([A/T#6131992]#6131992
                (x$0#873007710: Some/T#328[A/T#6131992]): 
                  Option/T#82[A/T#6131992]
              )
            >
          [String/T]:
            ((x$0#459916360: Some/T#328[String/T]): Option/T#82[String/T])
          >
        (inUsername @ <_:String/T>):Some/T#328[String/T]>
       :Some/T#328[String/T]:Some/T#328[String/T]>
     => 
      <
        <
          <
            <
              <<x#25.CBM#3997:x#25.CBM/T#3998>.map#11257:
                ([A/T#765707521, B/T#765707521]#765707521
                  (fa#429861691: x#25.CB/T#3993[A/T#765707521])
                    (f#539037251: A/T#765707521 => B/T#765707521): 
                      x#25.CB/T#3993[B/T#765707521]
                )
              >
            [String/T, Unit/T#157 |/T String/T]:
              ((fa#1297687496: x#25.CB/T#3993[String/T])
                (f#1696755510: String/T => Unit/T#157 |/T String/T): 
                  x#25.CB/T#3993[Unit/T#157 |/T String/T]
              )
            >
          (
            <
              <<x#25.VP1#4020.op1#6134:((): x#25.CB/T#3993[String/T#6171])>():
                x#25.CB/T#3993[String/T#6171]
              >
            :x#25.CB/T#3993[String/T#6171]>
          ):
            ((f#1696755510: String/T => Unit/T#157 |/T String/T): 
              x#25.CB/T#3993[Unit/T#157 |/T String/T]
            )
          >
        (
          <
            {
              def $anonfun#11353
                (vx#1106157922: String/T): Unit/T#157 |/T String/T
              <closure(
                <$anonfun#11353:
                  (vx#1106157922: String/T): Unit/T#157 |/T String/T
                >
              ):String/T => Unit/T#157 |/T String/T>
            }
          :String/T => Unit/T#157 |/T String/T>
        ):x#25.CB/T#3993[Unit/T#157 |/T String/T]>
      :x#25.CB/T#3993[Unit/T#157 |/T String/T]>
    :x#25.CB/T#3993[Unit/T#157 |/T String/T]>
  }
:x#25.CB/T#3993[Unit/T#157 |/T String/T]> of class class dotty.tools.dotc.ast.Trees$Match # -1
exception while typing <
  <<optInUsername#6166:Option/T#82[String/T#6171]> match 
    {
      <case <None#257:None/T#258> => 
        <
          <
            {
              def _whilefun#11377(): x#25.CB/T#3993[Unit/T#157]
              <<_whilefun#11377:((): x#25.CB/T#3993[Unit/T#157])>():
                x#25.CB/T#3993[Unit/T#157]
              >
            }
          :x#25.CB/T#3993[Unit/T#157]>
        :x#25.CB/T#3993[Unit/T#157]>
      :x#25.CB/T#3993[Unit/T#157]>
      <case 
        <
          <
            <
              <<Some#329:Some/T#330>.unapply#8310:
                ([A/T#6131992]#6131992
                  (x$0#873007710: Some/T#328[A/T#6131992]): 
                    Option/T#82[A/T#6131992]
                )
              >
            [String/T]:
              ((x$0#459916360: Some/T#328[String/T]): Option/T#82[String/T])
            >
          (inUsername @ <_:String/T>):Some/T#328[String/T]>
         :Some/T#328[String/T]:Some/T#328[String/T]>
       => 
        <
          <
            <
              <
                <<x#25.CBM#3997:x#25.CBM/T#3998>.map#11257:
                  ([A/T#765707521, B/T#765707521]#765707521
                    (fa#429861691: x#25.CB/T#3993[A/T#765707521])
                      (f#539037251: A/T#765707521 => B/T#765707521): 
                        x#25.CB/T#3993[B/T#765707521]
                  )
                >
              [String/T, Unit/T#157 |/T String/T]:
                ((fa#1297687496: x#25.CB/T#3993[String/T])
                  (f#1696755510: String/T => Unit/T#157 |/T String/T): 
                    x#25.CB/T#3993[Unit/T#157 |/T String/T]
                )
              >
            (
              <
                <<x#25.VP1#4020.op1#6134:((): x#25.CB/T#3993[String/T#6171])>():
                  x#25.CB/T#3993[String/T#6171]
                >
              :x#25.CB/T#3993[String/T#6171]>
            ):
              ((f#1696755510: String/T => Unit/T#157 |/T String/T): 
                x#25.CB/T#3993[Unit/T#157 |/T String/T]
              )
            >
          (
            <
              {
                def $anonfun#11353
                  (vx#1106157922: String/T): Unit/T#157 |/T String/T
                <closure(
                  <$anonfun#11353:
                    (vx#1106157922: String/T): Unit/T#157 |/T String/T
                  >
                ):String/T => Unit/T#157 |/T String/T>
              }
            :String/T => Unit/T#157 |/T String/T>
          ):x#25.CB/T#3993[Unit/T#157 |/T String/T]>
        :x#25.CB/T#3993[Unit/T#157 |/T String/T]>
      :x#25.CB/T#3993[Unit/T#157 |/T String/T]>
    }
  :x#25.CB/T#3993[Unit/T#157 |/T String/T]>
:x#25.CB/T#3993[Unit/T#157 |/T String/T]> of class class dotty.tools.dotc.ast.Trees$Inlined # -1
exception while typing <
  <
    <<x#25.CBM#3997:x#25.CBM/T#3998>.map#11257:
      ([A/T#765707521, B/T#765707521]#765707521
        (fa#429861691: x#25.CB/T#3993[A/T#765707521])
          (f#539037251: A/T#765707521 => B/T#765707521): 
            x#25.CB/T#3993[B/T#765707521]
      )
    >
  [Unit/T#157 |/T String/T, Unit/T#157]:
    ((fa#1688308182: x#25.CB/T#3993[Unit/T#157 |/T String/T])
      (f#776961165: Unit/T#157 |/T String/T => Unit/T#157): 
        x#25.CB/T#3993[Unit/T#157]
    )
  >
(
  <
    <<optInUsername#6166:Option/T#82[String/T#6171]> match 
      {
        <case <None#257:None/T#258> => 
          <
            <
              {
                def _whilefun#11377(): x#25.CB/T#3993[Unit/T#157]
                <<_whilefun#11377:((): x#25.CB/T#3993[Unit/T#157])>():
                  x#25.CB/T#3993[Unit/T#157]
                >
              }
            :x#25.CB/T#3993[Unit/T#157]>
          :x#25.CB/T#3993[Unit/T#157]>
        :x#25.CB/T#3993[Unit/T#157]>
        <case 
          <
            <
              <
                <<Some#329:Some/T#330>.unapply#8310:
                  ([A/T#6131992]#6131992
                    (x$0#873007710: Some/T#328[A/T#6131992]): 
                      Option/T#82[A/T#6131992]
                  )
                >
              [String/T]:
                ((x$0#459916360: Some/T#328[String/T]): Option/T#82[String/T])
              >
            (inUsername @ <_:String/T>):Some/T#328[String/T]>
           :Some/T#328[String/T]:Some/T#328[String/T]>
         => 
          <
            <
              <
                <
                  <<x#25.CBM#3997:x#25.CBM/T#3998>.map#11257:
                    ([A/T#765707521, B/T#765707521]#765707521
                      (fa#429861691: x#25.CB/T#3993[A/T#765707521])
                        (f#539037251: A/T#765707521 => B/T#765707521): 
                          x#25.CB/T#3993[B/T#765707521]
                    )
                  >
                [String/T, Unit/T#157 |/T String/T]:
                  ((fa#1297687496: x#25.CB/T#3993[String/T])
                    (f#1696755510: String/T => Unit/T#157 |/T String/T): 
                      x#25.CB/T#3993[Unit/T#157 |/T String/T]
                  )
                >
              (
                <
                  <<x#25.VP1#4020.op1#6134:((): x#25.CB/T#3993[String/T#6171])>(
                    )
                  :x#25.CB/T#3993[String/T#6171]>
                :x#25.CB/T#3993[String/T#6171]>
              ):
                ((f#1696755510: String/T => Unit/T#157 |/T String/T): 
                  x#25.CB/T#3993[Unit/T#157 |/T String/T]
                )
              >
            (
              <
                {
                  def $anonfun#11353
                    (vx#1106157922: String/T): Unit/T#157 |/T String/T
                  <closure(
                    <$anonfun#11353:
                      (vx#1106157922: String/T): Unit/T#157 |/T String/T
                    >
                  ):String/T => Unit/T#157 |/T String/T>
                }
              :String/T => Unit/T#157 |/T String/T>
            ):x#25.CB/T#3993[Unit/T#157 |/T String/T]>
          :x#25.CB/T#3993[Unit/T#157 |/T String/T]>
        :x#25.CB/T#3993[Unit/T#157 |/T String/T]>
      }
    :x#25.CB/T#3993[Unit/T#157 |/T String/T]>
  :x#25.CB/T#3993[Unit/T#157 |/T String/T]>
):
  (f#776961165: Unit/T#157 |/T String/T => Unit/T#157): 
    x#25.CB/T#3993[Unit/T#157]
> of class class dotty.tools.dotc.ast.Trees$Apply # -1
exception while typing <
  <
    <
      <<x#25.CBM#3997:x#25.CBM/T#3998>.map#11257:
        ([A/T#765707521, B/T#765707521]#765707521
          (fa#429861691: x#25.CB/T#3993[A/T#765707521])
            (f#539037251: A/T#765707521 => B/T#765707521): 
              x#25.CB/T#3993[B/T#765707521]
        )
      >
    [Unit/T#157 |/T String/T, Unit/T#157]:
      ((fa#1688308182: x#25.CB/T#3993[Unit/T#157 |/T String/T])
        (f#776961165: Unit/T#157 |/T String/T => Unit/T#157): 
          x#25.CB/T#3993[Unit/T#157]
      )
    >
  (
    <
      <<optInUsername#6166:Option/T#82[String/T#6171]> match 
        {
          <case <None#257:None/T#258> => 
            <
              <
                {
                  def _whilefun#11377(): x#25.CB/T#3993[Unit/T#157]
                  <<_whilefun#11377:((): x#25.CB/T#3993[Unit/T#157])>():
                    x#25.CB/T#3993[Unit/T#157]
                  >
                }
              :x#25.CB/T#3993[Unit/T#157]>
            :x#25.CB/T#3993[Unit/T#157]>
          :x#25.CB/T#3993[Unit/T#157]>
          <case 
            <
              <
                <
                  <<Some#329:Some/T#330>.unapply#8310:
                    ([A/T#6131992]#6131992
                      (x$0#873007710: Some/T#328[A/T#6131992]): 
                        Option/T#82[A/T#6131992]
                    )
                  >
                [String/T]:
                  ((x$0#459916360: Some/T#328[String/T]): Option/T#82[String/T])
                >
              (inUsername @ <_:String/T>):Some/T#328[String/T]>
             :Some/T#328[String/T]:Some/T#328[String/T]>
           => 
            <
              <
                <
                  <
                    <<x#25.CBM#3997:x#25.CBM/T#3998>.map#11257:
                      ([A/T#765707521, B/T#765707521]#765707521
                        (fa#429861691: x#25.CB/T#3993[A/T#765707521])
                          (f#539037251: A/T#765707521 => B/T#765707521): 
                            x#25.CB/T#3993[B/T#765707521]
                      )
                    >
                  [String/T, Unit/T#157 |/T String/T]:
                    ((fa#1297687496: x#25.CB/T#3993[String/T])
                      (f#1696755510: String/T => Unit/T#157 |/T String/T): 
                        x#25.CB/T#3993[Unit/T#157 |/T String/T]
                    )
                  >
                (
                  <
                    <
                      <x#25.VP1#4020.op1#6134:
                        ((): x#25.CB/T#3993[String/T#6171])
                      >
                    ():x#25.CB/T#3993[String/T#6171]>
                  :x#25.CB/T#3993[String/T#6171]>
                ):
                  ((f#1696755510: String/T => Unit/T#157 |/T String/T): 
                    x#25.CB/T#3993[Unit/T#157 |/T String/T]
                  )
                >
              (
                <
                  {
                    def $anonfun#11353
                      (vx#1106157922: String/T): Unit/T#157 |/T String/T
                    <closure(
                      <$anonfun#11353:
                        (vx#1106157922: String/T): Unit/T#157 |/T String/T
                      >
                    ):String/T => Unit/T#157 |/T String/T>
                  }
                :String/T => Unit/T#157 |/T String/T>
              ):x#25.CB/T#3993[Unit/T#157 |/T String/T]>
            :x#25.CB/T#3993[Unit/T#157 |/T String/T]>
          :x#25.CB/T#3993[Unit/T#157 |/T String/T]>
        }
      :x#25.CB/T#3993[Unit/T#157 |/T String/T]>
    :x#25.CB/T#3993[Unit/T#157 |/T String/T]>
  ):
    ((f#776961165: Unit/T#157 |/T String/T => Unit/T#157): 
      x#25.CB/T#3993[Unit/T#157]
    )
  >
(
  <
    {
      def $anonfun#11364(vx#605816902: Unit/T#157 |/T String/T): Unit/T#157
      <closure(
        <$anonfun#11364:(vx#605816902: Unit/T#157 |/T String/T): Unit/T#157>
      ):Unit/T#157 |/T String/T => Unit/T#157>
    }
  :Unit/T#157 |/T String/T => Unit/T#157>
):x#25.CB/T#3993[Unit/T#157]> of class class dotty.tools.dotc.ast.Trees$Apply # -1
exception while typing <
  <
    <
      <
        <<x#25.CBM#3997:x#25.CBM/T#3998>.map#11257:
          ([A/T#765707521, B/T#765707521]#765707521
            (fa#429861691: x#25.CB/T#3993[A/T#765707521])
              (f#539037251: A/T#765707521 => B/T#765707521): 
                x#25.CB/T#3993[B/T#765707521]
          )
        >
      [Unit/T#157 |/T String/T, Unit/T#157]:
        ((fa#1688308182: x#25.CB/T#3993[Unit/T#157 |/T String/T])
          (f#776961165: Unit/T#157 |/T String/T => Unit/T#157): 
            x#25.CB/T#3993[Unit/T#157]
        )
      >
    (
      <
        <<optInUsername#6166:Option/T#82[String/T#6171]> match 
          {
            <case <None#257:None/T#258> => 
              <
                <
                  {
                    def _whilefun#11377(): x#25.CB/T#3993[Unit/T#157]
                    <<_whilefun#11377:((): x#25.CB/T#3993[Unit/T#157])>():
                      x#25.CB/T#3993[Unit/T#157]
                    >
                  }
                :x#25.CB/T#3993[Unit/T#157]>
              :x#25.CB/T#3993[Unit/T#157]>
            :x#25.CB/T#3993[Unit/T#157]>
            <case 
              <
                <
                  <
                    <<Some#329:Some/T#330>.unapply#8310:
                      ([A/T#6131992]#6131992
                        (x$0#873007710: Some/T#328[A/T#6131992]): 
                          Option/T#82[A/T#6131992]
                      )
                    >
                  [String/T]:
                    ((x$0#459916360: Some/T#328[String/T]): 
                      Option/T#82[String/T]
                    )
                  >
                (inUsername @ <_:String/T>):Some/T#328[String/T]>
               :Some/T#328[String/T]:Some/T#328[String/T]>
             => 
              <
                <
                  <
                    <
                      <<x#25.CBM#3997:x#25.CBM/T#3998>.map#11257:
                        ([A/T#765707521, B/T#765707521]#765707521
                          (fa#429861691: x#25.CB/T#3993[A/T#765707521])
                            (f#539037251: A/T#765707521 => B/T#765707521): 
                              x#25.CB/T#3993[B/T#765707521]
                        )
                      >
                    [String/T, Unit/T#157 |/T String/T]:
                      ((fa#1297687496: x#25.CB/T#3993[String/T])
                        (f#1696755510: String/T => Unit/T#157 |/T String/T): 
                          x#25.CB/T#3993[Unit/T#157 |/T String/T]
                      )
                    >
                  (
                    <
                      <
                        <x#25.VP1#4020.op1#6134:
                          ((): x#25.CB/T#3993[String/T#6171])
                        >
                      ():x#25.CB/T#3993[String/T#6171]>
                    :x#25.CB/T#3993[String/T#6171]>
                  ):
                    ((f#1696755510: String/T => Unit/T#157 |/T String/T): 
                      x#25.CB/T#3993[Unit/T#157 |/T String/T]
                    )
                  >
                (
                  <
                    {
                      def $anonfun#11353
                        (vx#1106157922: String/T): Unit/T#157 |/T String/T
                      <closure(
                        <$anonfun#11353:
                          (vx#1106157922: String/T): Unit/T#157 |/T String/T
                        >
                      ):String/T => Unit/T#157 |/T String/T>
                    }
                  :String/T => Unit/T#157 |/T String/T>
                ):x#25.CB/T#3993[Unit/T#157 |/T String/T]>
              :x#25.CB/T#3993[Unit/T#157 |/T String/T]>
            :x#25.CB/T#3993[Unit/T#157 |/T String/T]>
          }
        :x#25.CB/T#3993[Unit/T#157 |/T String/T]>
      :x#25.CB/T#3993[Unit/T#157 |/T String/T]>
    ):
      ((f#776961165: Unit/T#157 |/T String/T => Unit/T#157): 
        x#25.CB/T#3993[Unit/T#157]
      )
    >
  (
    <
      {
        def $anonfun#11364(vx#605816902: Unit/T#157 |/T String/T): Unit/T#157
        <closure(
          <$anonfun#11364:(vx#605816902: Unit/T#157 |/T String/T): Unit/T#157>
        ):Unit/T#157 |/T String/T => Unit/T#157>
      }
    :Unit/T#157 |/T String/T => Unit/T#157>
  ):x#25.CB/T#3993[Unit/T#157]>
:x#25.CB/T#3993[Unit/T#157]> of class class dotty.tools.dotc.ast.Trees$Inlined # -1
exception while typing <
  {
    <
      <
        <
          <
            <<x#25.CBM#3997:x#25.CBM/T#3998>.map#11257:
              ([A/T#765707521, B/T#765707521]#765707521
                (fa#429861691: x#25.CB/T#3993[A/T#765707521])
                  (f#539037251: A/T#765707521 => B/T#765707521): 
                    x#25.CB/T#3993[B/T#765707521]
              )
            >
          [Unit/T#157 |/T String/T, Unit/T#157]:
            ((fa#1688308182: x#25.CB/T#3993[Unit/T#157 |/T String/T])
              (f#776961165: Unit/T#157 |/T String/T => Unit/T#157): 
                x#25.CB/T#3993[Unit/T#157]
            )
          >
        (
          <
            <<optInUsername#6166:Option/T#82[String/T#6171]> match 
              {
                <case <None#257:None/T#258> => 
                  <
                    <
                      {
                        def _whilefun#11377(): x#25.CB/T#3993[Unit/T#157]
                        <<_whilefun#11377:((): x#25.CB/T#3993[Unit/T#157])>():
                          x#25.CB/T#3993[Unit/T#157]
                        >
                      }
                    :x#25.CB/T#3993[Unit/T#157]>
                  :x#25.CB/T#3993[Unit/T#157]>
                :x#25.CB/T#3993[Unit/T#157]>
                <case 
                  <
                    <
                      <
                        <<Some#329:Some/T#330>.unapply#8310:
                          ([A/T#6131992]#6131992
                            (x$0#873007710: Some/T#328[A/T#6131992]): 
                              Option/T#82[A/T#6131992]
                          )
                        >
                      [String/T]:
                        ((x$0#459916360: Some/T#328[String/T]): 
                          Option/T#82[String/T]
                        )
                      >
                    (inUsername @ <_:String/T>):Some/T#328[String/T]>
                   :Some/T#328[String/T]:Some/T#328[String/T]>
                 => 
                  <
                    <
                      <
                        <
                          <<x#25.CBM#3997:x#25.CBM/T#3998>.map#11257:
                            ([A/T#765707521, B/T#765707521]#765707521
                              (fa#429861691: x#25.CB/T#3993[A/T#765707521])
                                (f#539037251: A/T#765707521 => B/T#765707521): 
                                  x#25.CB/T#3993[B/T#765707521]
                            )
                          >
                        [String/T, Unit/T#157 |/T String/T]:
                          ((fa#1297687496: x#25.CB/T#3993[String/T])
                            (f#1696755510: String/T => Unit/T#157 |/T String/T
                              ): 
                            x#25.CB/T#3993[Unit/T#157 |/T String/T]
                          )
                        >
                      (
                        <
                          <
                            <x#25.VP1#4020.op1#6134:
                              ((): x#25.CB/T#3993[String/T#6171])
                            >
                          ():x#25.CB/T#3993[String/T#6171]>
                        :x#25.CB/T#3993[String/T#6171]>
                      ):
                        ((f#1696755510: String/T => Unit/T#157 |/T String/T): 
                          x#25.CB/T#3993[Unit/T#157 |/T String/T]
                        )
                      >
                    (
                      <
                        {
                          def $anonfun#11353
                            (vx#1106157922: String/T): Unit/T#157 |/T String/T
                          <closure(
                            <$anonfun#11353:
                              (vx#1106157922: String/T): Unit/T#157 |/T String/T
                            >
                          ):String/T => Unit/T#157 |/T String/T>
                        }
                      :String/T => Unit/T#157 |/T String/T>
                    ):x#25.CB/T#3993[Unit/T#157 |/T String/T]>
                  :x#25.CB/T#3993[Unit/T#157 |/T String/T]>
                :x#25.CB/T#3993[Unit/T#157 |/T String/T]>
              }
            :x#25.CB/T#3993[Unit/T#157 |/T String/T]>
          :x#25.CB/T#3993[Unit/T#157 |/T String/T]>
        ):
          ((f#776961165: Unit/T#157 |/T String/T => Unit/T#157): 
            x#25.CB/T#3993[Unit/T#157]
          )
        >
      (
        <
          {
            def $anonfun#11364
              (vx#605816902: Unit/T#157 |/T String/T): Unit/T#157
            <closure(
              <$anonfun#11364:
                (vx#605816902: Unit/T#157 |/T String/T): Unit/T#157
              >
            ):Unit/T#157 |/T String/T => Unit/T#157>
          }
        :Unit/T#157 |/T String/T => Unit/T#157>
      ):x#25.CB/T#3993[Unit/T#157]>
    :x#25.CB/T#3993[Unit/T#157]>
  }
:x#25.CB/T#3993[Unit/T#157]> of class class dotty.tools.dotc.ast.Trees$Block # -1
exception while typing <
  <
    {
      <
        <
          <
            <
              <<x#25.CBM#3997:x#25.CBM/T#3998>.map#11257:
                ([A/T#765707521, B/T#765707521]#765707521
                  (fa#429861691: x#25.CB/T#3993[A/T#765707521])
                    (f#539037251: A/T#765707521 => B/T#765707521): 
                      x#25.CB/T#3993[B/T#765707521]
                )
              >
            [Unit/T#157 |/T String/T, Unit/T#157]:
              ((fa#1688308182: x#25.CB/T#3993[Unit/T#157 |/T String/T])
                (f#776961165: Unit/T#157 |/T String/T => Unit/T#157): 
                  x#25.CB/T#3993[Unit/T#157]
              )
            >
          (
            <
              <<optInUsername#6166:Option/T#82[String/T#6171]> match 
                {
                  <case <None#257:None/T#258> => 
                    <
                      <
                        {
                          def _whilefun#11377(): x#25.CB/T#3993[Unit/T#157]
                          <<_whilefun#11377:((): x#25.CB/T#3993[Unit/T#157])>():
                            x#25.CB/T#3993[Unit/T#157]
                          >
                        }
                      :x#25.CB/T#3993[Unit/T#157]>
                    :x#25.CB/T#3993[Unit/T#157]>
                  :x#25.CB/T#3993[Unit/T#157]>
                  <case 
                    <
                      <
                        <
                          <<Some#329:Some/T#330>.unapply#8310:
                            ([A/T#6131992]#6131992
                              (x$0#873007710: Some/T#328[A/T#6131992]): 
                                Option/T#82[A/T#6131992]
                            )
                          >
                        [String/T]:
                          ((x$0#459916360: Some/T#328[String/T]): 
                            Option/T#82[String/T]
                          )
                        >
                      (inUsername @ <_:String/T>):Some/T#328[String/T]>
                     :Some/T#328[String/T]:Some/T#328[String/T]>
                   => 
                    <
                      <
                        <
                          <
                            <<x#25.CBM#3997:x#25.CBM/T#3998>.map#11257:
                              ([A/T#765707521, B/T#765707521]#765707521
                                (fa#429861691: x#25.CB/T#3993[A/T#765707521])
                                  (f#539037251: A/T#765707521 => B/T#765707521
                                    ): 
                                  x#25.CB/T#3993[B/T#765707521]
                              )
                            >
                          [String/T, Unit/T#157 |/T String/T]:
                            ((fa#1297687496: x#25.CB/T#3993[String/T])
                              (f#1696755510: String/T => Unit/T#157 |/T String/T
                                ): 
                              x#25.CB/T#3993[Unit/T#157 |/T String/T]
                            )
                          >
                        (
                          <
                            <
                              <x#25.VP1#4020.op1#6134:
                                ((): x#25.CB/T#3993[String/T#6171])
                              >
                            ():x#25.CB/T#3993[String/T#6171]>
                          :x#25.CB/T#3993[String/T#6171]>
                        ):
                          ((f#1696755510: String/T => Unit/T#157 |/T String/T): 
                            x#25.CB/T#3993[Unit/T#157 |/T String/T]
                          )
                        >
                      (
                        <
                          {
                            def $anonfun#11353
                              (vx#1106157922: String/T): Unit/T#157 |/T String/T
                            <closure(
                              <$anonfun#11353:
                                (vx#1106157922: String/T): Unit/T#157 |/T 
                                  String/T
                              >
                            ):String/T => Unit/T#157 |/T String/T>
                          }
                        :String/T => Unit/T#157 |/T String/T>
                      ):x#25.CB/T#3993[Unit/T#157 |/T String/T]>
                    :x#25.CB/T#3993[Unit/T#157 |/T String/T]>
                  :x#25.CB/T#3993[Unit/T#157 |/T String/T]>
                }
              :x#25.CB/T#3993[Unit/T#157 |/T String/T]>
            :x#25.CB/T#3993[Unit/T#157 |/T String/T]>
          ):
            ((f#776961165: Unit/T#157 |/T String/T => Unit/T#157): 
              x#25.CB/T#3993[Unit/T#157]
            )
          >
        (
          <
            {
              def $anonfun#11364
                (vx#605816902: Unit/T#157 |/T String/T): Unit/T#157
              <closure(
                <$anonfun#11364:
                  (vx#605816902: Unit/T#157 |/T String/T): Unit/T#157
                >
              ):Unit/T#157 |/T String/T => Unit/T#157>
            }
          :Unit/T#157 |/T String/T => Unit/T#157>
        ):x#25.CB/T#3993[Unit/T#157]>
      :x#25.CB/T#3993[Unit/T#157]>
    }
  :x#25.CB/T#3993[Unit/T#157]>
:x#25.CB/T#3993[Unit/T#157]> of class class dotty.tools.dotc.ast.Trees$Inlined # -1
exception while typing <
  <
    <<x#25.CBM#3997:x#25.CBM/T#3998>.spawn#11259:
      ([A/T#20758714]#20758714
        (op#1877547584: => x#25.CB/T#3993[A/T#20758714]): 
          x#25.CB/T#3993[A/T#20758714]
      )
    >
  [Unit/T#157]:
    ((op#124703058: => x#25.CB/T#3993[Unit/T#157]): x#25.CB/T#3993[Unit/T#157])
  >
(
  <
    <
      {
        <
          <
            <
              <
                <<x#25.CBM#3997:x#25.CBM/T#3998>.map#11257:
                  ([A/T#765707521, B/T#765707521]#765707521
                    (fa#429861691: x#25.CB/T#3993[A/T#765707521])
                      (f#539037251: A/T#765707521 => B/T#765707521): 
                        x#25.CB/T#3993[B/T#765707521]
                  )
                >
              [Unit/T#157 |/T String/T, Unit/T#157]:
                ((fa#1688308182: x#25.CB/T#3993[Unit/T#157 |/T String/T])
                  (f#776961165: Unit/T#157 |/T String/T => Unit/T#157): 
                    x#25.CB/T#3993[Unit/T#157]
                )
              >
            (
              <
                <<optInUsername#6166:Option/T#82[String/T#6171]> match 
                  {
                    <case <None#257:None/T#258> => 
                      <
                        <
                          {
                            def _whilefun#11377(): x#25.CB/T#3993[Unit/T#157]
                            <<_whilefun#11377:((): x#25.CB/T#3993[Unit/T#157])>(
                              )
                            :x#25.CB/T#3993[Unit/T#157]>
                          }
                        :x#25.CB/T#3993[Unit/T#157]>
                      :x#25.CB/T#3993[Unit/T#157]>
                    :x#25.CB/T#3993[Unit/T#157]>
                    <case 
                      <
                        <
                          <
                            <<Some#329:Some/T#330>.unapply#8310:
                              ([A/T#6131992]#6131992
                                (x$0#873007710: Some/T#328[A/T#6131992]): 
                                  Option/T#82[A/T#6131992]
                              )
                            >
                          [String/T]:
                            ((x$0#459916360: Some/T#328[String/T]): 
                              Option/T#82[String/T]
                            )
                          >
                        (inUsername @ <_:String/T>):Some/T#328[String/T]>
                       :Some/T#328[String/T]:Some/T#328[String/T]>
                     => 
                      <
                        <
                          <
                            <
                              <<x#25.CBM#3997:x#25.CBM/T#3998>.map#11257:
                                ([A/T#765707521, B/T#765707521]#765707521
                                  (fa#429861691: x#25.CB/T#3993[A/T#765707521])
                                    (f#539037251: A/T#765707521 => B/T#765707521
                                      ): 
                                    x#25.CB/T#3993[B/T#765707521]
                                )
                              >
                            [String/T, Unit/T#157 |/T String/T]:
                              ((fa#1297687496: x#25.CB/T#3993[String/T])
                                (f#1696755510: String/T => Unit/T#157 |/T 
                                  String/T
                                ): x#25.CB/T#3993[Unit/T#157 |/T String/T]
                              )
                            >
                          (
                            <
                              <
                                <x#25.VP1#4020.op1#6134:
                                  ((): x#25.CB/T#3993[String/T#6171])
                                >
                              ():x#25.CB/T#3993[String/T#6171]>
                            :x#25.CB/T#3993[String/T#6171]>
                          ):
                            ((f#1696755510: String/T => Unit/T#157 |/T String/T
                              ): 
                            x#25.CB/T#3993[Unit/T#157 |/T String/T])
                          >
                        (
                          <
                            {
                              def $anonfun#11353
                                (vx#1106157922: String/T): Unit/T#157 |/T 
                                  String/T
                              <closure(
                                <$anonfun#11353:
                                  (vx#1106157922: String/T): Unit/T#157 |/T 
                                    String/T
                                >
                              ):String/T => Unit/T#157 |/T String/T>
                            }
                          :String/T => Unit/T#157 |/T String/T>
                        ):x#25.CB/T#3993[Unit/T#157 |/T String/T]>
                      :x#25.CB/T#3993[Unit/T#157 |/T String/T]>
                    :x#25.CB/T#3993[Unit/T#157 |/T String/T]>
                  }
                :x#25.CB/T#3993[Unit/T#157 |/T String/T]>
              :x#25.CB/T#3993[Unit/T#157 |/T String/T]>
            ):
              ((f#776961165: Unit/T#157 |/T String/T => Unit/T#157): 
                x#25.CB/T#3993[Unit/T#157]
              )
            >
          (
            <
              {
                def $anonfun#11364
                  (vx#605816902: Unit/T#157 |/T String/T): Unit/T#157
                <closure(
                  <$anonfun#11364:
                    (vx#605816902: Unit/T#157 |/T String/T): Unit/T#157
                  >
                ):Unit/T#157 |/T String/T => Unit/T#157>
              }
            :Unit/T#157 |/T String/T => Unit/T#157>
          ):x#25.CB/T#3993[Unit/T#157]>
        :x#25.CB/T#3993[Unit/T#157]>
      }
    :x#25.CB/T#3993[Unit/T#157]>
  :x#25.CB/T#3993[Unit/T#157]>
):x#25.CB/T#3993[Unit/T#157]> of class class dotty.tools.dotc.ast.Trees$Apply # -1
exception while typing <
  <
    <
      <<x#25.CBM#3997:x#25.CBM/T#3998>.spawn#11259:
        ([A/T#20758714]#20758714
          (op#1877547584: => x#25.CB/T#3993[A/T#20758714]): 
            x#25.CB/T#3993[A/T#20758714]
        )
      >
    [Unit/T#157]:
      ((op#124703058: => x#25.CB/T#3993[Unit/T#157]): x#25.CB/T#3993[Unit/T#157]
        )
    >
  (
    <
      <
        {
          <
            <
              <
                <
                  <<x#25.CBM#3997:x#25.CBM/T#3998>.map#11257:
                    ([A/T#765707521, B/T#765707521]#765707521
                      (fa#429861691: x#25.CB/T#3993[A/T#765707521])
                        (f#539037251: A/T#765707521 => B/T#765707521): 
                          x#25.CB/T#3993[B/T#765707521]
                    )
                  >
                [Unit/T#157 |/T String/T, Unit/T#157]:
                  ((fa#1688308182: x#25.CB/T#3993[Unit/T#157 |/T String/T])
                    (f#776961165: Unit/T#157 |/T String/T => Unit/T#157): 
                      x#25.CB/T#3993[Unit/T#157]
                  )
                >
              (
                <
                  <<optInUsername#6166:Option/T#82[String/T#6171]> match 
                    {
                      <case <None#257:None/T#258> => 
                        <
                          <
                            {
                              def _whilefun#11377(): x#25.CB/T#3993[Unit/T#157]
                              <
                                <_whilefun#11377:
                                  ((): x#25.CB/T#3993[Unit/T#157])
                                >
                              ():x#25.CB/T#3993[Unit/T#157]>
                            }
                          :x#25.CB/T#3993[Unit/T#157]>
                        :x#25.CB/T#3993[Unit/T#157]>
                      :x#25.CB/T#3993[Unit/T#157]>
                      <case 
                        <
                          <
                            <
                              <<Some#329:Some/T#330>.unapply#8310:
                                ([A/T#6131992]#6131992
                                  (x$0#873007710: Some/T#328[A/T#6131992]): 
                                    Option/T#82[A/T#6131992]
                                )
                              >
                            [String/T]:
                              ((x$0#459916360: Some/T#328[String/T]): 
                                Option/T#82[String/T]
                              )
                            >
                          (inUsername @ <_:String/T>):Some/T#328[String/T]>
                         :Some/T#328[String/T]:Some/T#328[String/T]>
                       => 
                        <
                          <
                            <
                              <
                                <<x#25.CBM#3997:x#25.CBM/T#3998>.map#11257:
                                  ([A/T#765707521, B/T#765707521]#765707521
                                    (fa#429861691: x#25.CB/T#3993[A/T#765707521]
                                      )
                                    (f#539037251: A/T#765707521 => B/T#765707521
                                      ): 
                                    x#25.CB/T#3993[B/T#765707521]
                                  )
                                >
                              [String/T, Unit/T#157 |/T String/T]:
                                ((fa#1297687496: x#25.CB/T#3993[String/T])
                                  (f#1696755510: String/T => Unit/T#157 |/T 
                                    String/T
                                  ): x#25.CB/T#3993[Unit/T#157 |/T String/T]
                                )
                              >
                            (
                              <
                                <
                                  <x#25.VP1#4020.op1#6134:
                                    ((): x#25.CB/T#3993[String/T#6171])
                                  >
                                ():x#25.CB/T#3993[String/T#6171]>
                              :x#25.CB/T#3993[String/T#6171]>
                            ):
                              ((f#1696755510: String/T => Unit/T#157 |/T 
                                String/T
                              ): x#25.CB/T#3993[Unit/T#157 |/T String/T])
                            >
                          (
                            <
                              {
                                def $anonfun#11353
                                  (vx#1106157922: String/T): Unit/T#157 |/T 
                                    String/T
                                <closure(
                                  <$anonfun#11353:
                                    (vx#1106157922: String/T): Unit/T#157 |/T 
                                      String/T
                                  >
                                ):String/T => Unit/T#157 |/T String/T>
                              }
                            :String/T => Unit/T#157 |/T String/T>
                          ):x#25.CB/T#3993[Unit/T#157 |/T String/T]>
                        :x#25.CB/T#3993[Unit/T#157 |/T String/T]>
                      :x#25.CB/T#3993[Unit/T#157 |/T String/T]>
                    }
                  :x#25.CB/T#3993[Unit/T#157 |/T String/T]>
                :x#25.CB/T#3993[Unit/T#157 |/T String/T]>
              ):
                ((f#776961165: Unit/T#157 |/T String/T => Unit/T#157): 
                  x#25.CB/T#3993[Unit/T#157]
                )
              >
            (
              <
                {
                  def $anonfun#11364
                    (vx#605816902: Unit/T#157 |/T String/T): Unit/T#157
                  <closure(
                    <$anonfun#11364:
                      (vx#605816902: Unit/T#157 |/T String/T): Unit/T#157
                    >
                  ):Unit/T#157 |/T String/T => Unit/T#157>
                }
              :Unit/T#157 |/T String/T => Unit/T#157>
            ):x#25.CB/T#3993[Unit/T#157]>
          :x#25.CB/T#3993[Unit/T#157]>
        }
      :x#25.CB/T#3993[Unit/T#157]>
    :x#25.CB/T#3993[Unit/T#157]>
  ):x#25.CB/T#3993[Unit/T#157]>
:x#25.CB/T#3993[Unit/T#157]> of class class dotty.tools.dotc.ast.Trees$Inlined # -1
exception while typing <
  <
    <
      <
        <<x#25.CBM#3997:x#25.CBM/T#3998>.spawn#11259:
          ([A/T#20758714]#20758714
            (op#1877547584: => x#25.CB/T#3993[A/T#20758714]): 
              x#25.CB/T#3993[A/T#20758714]
          )
        >
      [Unit/T#157]:
        ((op#124703058: => x#25.CB/T#3993[Unit/T#157]): 
          x#25.CB/T#3993[Unit/T#157]
        )
      >
    (
      <
        <
          {
            <
              <
                <
                  <
                    <<x#25.CBM#3997:x#25.CBM/T#3998>.map#11257:
                      ([A/T#765707521, B/T#765707521]#765707521
                        (fa#429861691: x#25.CB/T#3993[A/T#765707521])
                          (f#539037251: A/T#765707521 => B/T#765707521): 
                            x#25.CB/T#3993[B/T#765707521]
                      )
                    >
                  [Unit/T#157 |/T String/T, Unit/T#157]:
                    ((fa#1688308182: x#25.CB/T#3993[Unit/T#157 |/T String/T])
                      (f#776961165: Unit/T#157 |/T String/T => Unit/T#157): 
                        x#25.CB/T#3993[Unit/T#157]
                    )
                  >
                (
                  <
                    <<optInUsername#6166:Option/T#82[String/T#6171]> match 
                      {
                        <case <None#257:None/T#258> => 
                          <
                            <
                              {
                                def _whilefun#11377
                                  (): x#25.CB/T#3993[Unit/T#157]
                                <
                                  <_whilefun#11377:
                                    ((): x#25.CB/T#3993[Unit/T#157])
                                  >
                                ():x#25.CB/T#3993[Unit/T#157]>
                              }
                            :x#25.CB/T#3993[Unit/T#157]>
                          :x#25.CB/T#3993[Unit/T#157]>
                        :x#25.CB/T#3993[Unit/T#157]>
                        <case 
                          <
                            <
                              <
                                <<Some#329:Some/T#330>.unapply#8310:
                                  ([A/T#6131992]#6131992
                                    (x$0#873007710: Some/T#328[A/T#6131992]): 
                                      Option/T#82[A/T#6131992]
                                  )
                                >
                              [String/T]:
                                ((x$0#459916360: Some/T#328[String/T]): 
                                  Option/T#82[String/T]
                                )
                              >
                            (inUsername @ <_:String/T>):Some/T#328[String/T]>
                           :Some/T#328[String/T]:Some/T#328[String/T]>
                         => 
                          <
                            <
                              <
                                <
                                  <<x#25.CBM#3997:x#25.CBM/T#3998>.map#11257:
                                    ([A/T#765707521, B/T#765707521]#765707521
                                      (fa#429861691: 
                                        x#25.CB/T#3993[A/T#765707521]
                                      )
                                        (f#539037251: A/T#765707521 => 
                                          B/T#765707521
                                        ): x#25.CB/T#3993[B/T#765707521]
                                    )
                                  >
                                [String/T, Unit/T#157 |/T String/T]:
                                  ((fa#1297687496: x#25.CB/T#3993[String/T])
                                    (f#1696755510: String/T => Unit/T#157 |/T 
                                      String/T
                                    ): x#25.CB/T#3993[Unit/T#157 |/T String/T]
                                  )
                                >
                              (
                                <
                                  <
                                    <x#25.VP1#4020.op1#6134:
                                      ((): x#25.CB/T#3993[String/T#6171])
                                    >
                                  ():x#25.CB/T#3993[String/T#6171]>
                                :x#25.CB/T#3993[String/T#6171]>
                              ):
                                ((f#1696755510: String/T => Unit/T#157 |/T 
                                  String/T
                                ): x#25.CB/T#3993[Unit/T#157 |/T String/T])
                              >
                            (
                              <
                                {
                                  def $anonfun#11353
                                    (vx#1106157922: String/T): Unit/T#157 |/T 
                                      String/T
                                  <closure(
                                    <$anonfun#11353:
                                      (vx#1106157922: String/T): Unit/T#157 |/T 
                                        String/T
                                    >
                                  ):String/T => Unit/T#157 |/T String/T>
                                }
                              :String/T => Unit/T#157 |/T String/T>
                            ):x#25.CB/T#3993[Unit/T#157 |/T String/T]>
                          :x#25.CB/T#3993[Unit/T#157 |/T String/T]>
                        :x#25.CB/T#3993[Unit/T#157 |/T String/T]>
                      }
                    :x#25.CB/T#3993[Unit/T#157 |/T String/T]>
                  :x#25.CB/T#3993[Unit/T#157 |/T String/T]>
                ):
                  ((f#776961165: Unit/T#157 |/T String/T => Unit/T#157): 
                    x#25.CB/T#3993[Unit/T#157]
                  )
                >
              (
                <
                  {
                    def $anonfun#11364
                      (vx#605816902: Unit/T#157 |/T String/T): Unit/T#157
                    <closure(
                      <$anonfun#11364:
                        (vx#605816902: Unit/T#157 |/T String/T): Unit/T#157
                      >
                    ):Unit/T#157 |/T String/T => Unit/T#157>
                  }
                :Unit/T#157 |/T String/T => Unit/T#157>
              ):x#25.CB/T#3993[Unit/T#157]>
            :x#25.CB/T#3993[Unit/T#157]>
          }
        :x#25.CB/T#3993[Unit/T#157]>
      :x#25.CB/T#3993[Unit/T#157]>
    ):x#25.CB/T#3993[Unit/T#157]>
  :x#25.CB/T#3993[Unit/T#157]>
:x#25.CB/T#3993[Unit/T#157]> of class class dotty.tools.dotc.ast.Trees$Inlined # -1
exception while typing def allocateServiceOperator#6133
  (optInUsername#1376812582: Option/T#82[String/T#6171]): 
    x#25.CB/T#3993[Unit/T#157] of class class dotty.tools.dotc.ast.Trees$DefDef # -1
exception while typing final module class VP1/T#4021() extends <
  <<new Object/T:Object/T>:((): Object/T)>
():Object/T> { this: x#25.VP1#4020.type =>
  def allocateServiceOperator#6133
    (optInUsername#1376812582: Option/T#82[String/T#6171]): 
      x#25.CB/T#3993[Unit/T#157]
  def op1#6134(): x#25.CB/T#3993[String/T#6171]
} of class class dotty.tools.dotc.ast.Trees$TypeDef # -1
exception while typing <package <x#25:x/T#26> {
  final lazy module object VP1#4020: x#25.VP1/T#4021
  final module class VP1/T#4021() extends <
    <<new Object/T:Object/T>:((): Object/T)>
  ():Object/T> { this: x#25.VP1#4020.type =>
    def allocateServiceOperator#6133
      (optInUsername#1376812582: Option/T#82[String/T#6171]): 
        x#25.CB/T#3993[Unit/T#157]
    def op1#6134(): x#25.CB/T#3993[String/T#6171]
  }
}:x#25.type> of class class dotty.tools.dotc.ast.Trees$PackageDef # -1
*** error while checking /Users/rssh/work/oss/dotty-cps/dotty-cps-async/shared/src/test/scala/cps/vp/VP1.scala after phase typer ***
[info] exception occurred while compiling /Users/rssh/work/oss/dotty-cps/dotty-cps-async/shared/src/test/scala/cps/vp/VP1.scala
java.lang.AssertionError: assertion failed: bad owner; method $anonfun#11353 has owner method $anonfun#11266, expected was method allocateServiceOperator#6133
owner chain = method $anonfun#11353, method $anonfun#11266, value macro#9646, method allocateServiceOperator#6133, object VP1/T, package x/T#26, package <root>/T#2, ctxOwners = method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, object VP1/T, object VP1/T, object VP1/T, package x/T#26, package <root>/T#2, package <root>/T#2, package <root>/T#2, package <root>/T#2, package <root>/T#2, package <root>/T#2, package <root>/T#2,  <none>#0,  <none>#0,  <none>#0,  <none>#0 while compiling /Users/rssh/work/oss/dotty-cps/dotty-cps-async/shared/src/test/scala/cps/vp/VP1.scala
[error] ## Exception when compiling 1 sources to /Users/rssh/work/oss/dotty-cps/dotty-cps-async/jvm/target/scala-3.1.0/test-classes
[error] java.lang.AssertionError: assertion failed: bad owner; method $anonfun#11353 has owner method $anonfun#11266, expected was method allocateServiceOperator#6133
[error] owner chain = method $anonfun#11353, method $anonfun#11266, value macro#9646, method allocateServiceOperator#6133, object VP1/T, package x/T#26, package <root>/T#2, ctxOwners = method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, object VP1/T, object VP1/T, object VP1/T, package x/T#26, package <root>/T#2, package <root>/T#2, package <root>/T#2, package <root>/T#2, package <root>/T#2, package <root>/T#2, package <root>/T#2,  <none>#0,  <none>#0,  <none>#0,  <none>#0
[error] scala.runtime.Scala3RunTime$.assertFailed(Scala3RunTime.scala:8)
[error] dotty.tools.dotc.transform.TreeChecker$Checker.checkOwner(TreeChecker.scala:455)
[error] dotty.tools.dotc.transform.TreeChecker$Checker.typedStats$$anonfun$1(TreeChecker.scala:545)
[error] scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
[error] scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
[error] scala.collection.immutable.List.foreach(List.scala:333)
[error] dotty.tools.dotc.transform.TreeChecker$Checker.typedStats(TreeChecker.scala:548)
[error] dotty.tools.dotc.typer.Typer.typedBlockStats(Typer.scala:1027)
[error] dotty.tools.dotc.typer.Typer.typedBlock(Typer.scala:1031)
[error] dotty.tools.dotc.transform.TreeChecker$Checker.typedBlock$$anonfun$2$$anonfun$1(TreeChecker.scala:531)
[error] dotty.tools.dotc.transform.TreeChecker$Checker.withDefinedSyms(TreeChecker.scala:192)
[error] dotty.tools.dotc.transform.TreeChecker$Checker.typedBlock$$anonfun$1(TreeChecker.scala:531)
[error] dotty.tools.dotc.transform.TreeChecker$Checker.withBlock(TreeChecker.scala:220)
[error] dotty.tools.dotc.transform.TreeChecker$Checker.typedBlock(TreeChecker.scala:531)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2763)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2818)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:121)....
</details>

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions