-
Notifications
You must be signed in to change notification settings - Fork 1.1k
producing tree with incorrect owner in quotations API #13809
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
vp1-min-dotty-cps-async.tar.gz ready to run project |
Was this executed with |
- Y:check:macros -- the same (i.e. assertion about "] java.util.NoSuchElementException: key not found: method $anonfun )
```
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#11380
(vx#1686160858: String/T): x#25.CB/T#3993[Unit/T#157 |/T String/T]
):String/T => x#25.CB/T#3993[Unit/T#157 |/T String/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 <
<
<
<.flatMap#11257:
([A/T#1097476292, B/T#1097476292]#1097476292
(fa#1214803733: x#25.CB/T#3993[A/T#1097476292])
(f#1015314875: A/T#1097476292 => x#25.CB/T#3993[B/T#1097476292]):
x#25.CB/T#3993[B/T#1097476292]
)
>
[String/T, Unit/T#157 |/T String/T]:
((fa#215918310: x#25.CB/T#3993[String/T])
(f#319311719: 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[String/T#6171]
>
:x#25.CB/T#3993[String/T#6171]>
):
((f#319311719: String/T => x#25.CB/T#3993[Unit/T#157 |/T String/T]):
x#25.CB/T#3993[Unit/T#157 |/T String/T]
)
>
(
<
{
def $anonfun#11380
(vx#1686160858: String/T): x#25.CB/T#3993[Unit/T#157 |/T String/T]
):String/T => x#25.CB/T#3993[Unit/T#157 |/T String/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$Apply # -1
exception while typing <
<
<
<
<.flatMap#11257:
([A/T#1097476292, B/T#1097476292]#1097476292
(fa#1214803733: x#25.CB/T#3993[A/T#1097476292])
(f#1015314875: A/T#1097476292 => x#25.CB/T#3993[B/T#1097476292]):
x#25.CB/T#3993[B/T#1097476292]
)
>
[String/T, Unit/T#157 |/T String/T]:
((fa#215918310: x#25.CB/T#3993[String/T])
(f#319311719: 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[String/T#6171]
>
:x#25.CB/T#3993[String/T#6171]>
):
((f#319311719: String/T => x#25.CB/T#3993[Unit/T#157 |/T String/T]):
x#25.CB/T#3993[Unit/T#157 |/T String/T]
)
>
(
<
{
def $anonfun#11380
(vx#1686160858: String/T): x#25.CB/T#3993[Unit/T#157 |/T String/T]
):String/T => x#25.CB/T#3993[Unit/T#157 |/T String/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 <
{
<
<
<
<
<.flatMap#11257:
([A/T#1097476292, B/T#1097476292]#1097476292
(fa#1214803733: x#25.CB/T#3993[A/T#1097476292])
(f#1015314875: A/T#1097476292 =>
x#25.CB/T#3993[B/T#1097476292]
): x#25.CB/T#3993[B/T#1097476292]
)
>
[String/T, Unit/T#157 |/T String/T]:
((fa#215918310: x#25.CB/T#3993[String/T])
(f#319311719: 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[String/T#6171]
>
:x#25.CB/T#3993[String/T#6171]>
):
((f#319311719: String/T => x#25.CB/T#3993[Unit/T#157 |/T String/T]):
x#25.CB/T#3993[Unit/T#157 |/T String/T]
)
>
(
<
{
def $anonfun#11380
(vx#1686160858: String/T): x#25.CB/T#3993[Unit/T#157 |/T String/T]
):String/T => x#25.CB/T#3993[Unit/T#157 |/T String/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$Block # -1
exception while typing < match
{
=>
<
<
{
def _whilefun#11410(): x#25.CB/T#3993[Unit/T#157]
<<_whilefun#11410:((): 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]>
.unapply#8310:
([A/T#1405029826]#1405029826
(x$0#1344187839: Some/T#328[A/T#1405029826]):
Option/T#82[A/T#1405029826]
)
>
[String/T]:
((x$0#2068927264: 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]>
=>
<
<
<
<
<.flatMap#11257:
([A/T#1097476292, B/T#1097476292]#1097476292
(fa#1214803733: x#25.CB/T#3993[A/T#1097476292])
(f#1015314875: A/T#1097476292 =>
x#25.CB/T#3993[B/T#1097476292]
): x#25.CB/T#3993[B/T#1097476292]
)
>
[String/T, Unit/T#157 |/T String/T]:
((fa#215918310: x#25.CB/T#3993[String/T])
(f#319311719: 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[String/T#6171]
>
:x#25.CB/T#3993[String/T#6171]>
):
((f#319311719: String/T => x#25.CB/T#3993[Unit/T#157 |/T String/T]
):
x#25.CB/T#3993[Unit/T#157 |/T String/T])
>
(
<
{
def $anonfun#11380
(vx#1686160858: String/T):
x#25.CB/T#3993[Unit/T#157 |/T String/T]
):String/T => x#25.CB/T#3993[Unit/T#157 |/T String/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$Match # -1
exception while typing <
< match
{
=>
<
<
{
def _whilefun#11410(): x#25.CB/T#3993[Unit/T#157]
<<_whilefun#11410:((): 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]>
.unapply#8310:
([A/T#1405029826]#1405029826
(x$0#1344187839: Some/T#328[A/T#1405029826]):
Option/T#82[A/T#1405029826]
)
>
[String/T]:
((x$0#2068927264: 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]>
=>
<
<
<
<
<.flatMap#11257:
([A/T#1097476292, B/T#1097476292]#1097476292
(fa#1214803733: x#25.CB/T#3993[A/T#1097476292])
(f#1015314875: A/T#1097476292 =>
x#25.CB/T#3993[B/T#1097476292]
): x#25.CB/T#3993[B/T#1097476292]
)
>
[String/T, Unit/T#157 |/T String/T]:
((fa#215918310: x#25.CB/T#3993[String/T])
(f#319311719: 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[String/T#6171]
>
:x#25.CB/T#3993[String/T#6171]>
):
((f#319311719: String/T => x#25.CB/T#3993[Unit/T#157 |/T String/T]
):
x#25.CB/T#3993[Unit/T#157 |/T String/T])
>
(
<
{
def $anonfun#11380
(vx#1686160858: String/T):
x#25.CB/T#3993[Unit/T#157 |/T String/T]
):String/T => x#25.CB/T#3993[Unit/T#157 |/T String/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]>
:x#25.CB/T#3993[Unit/T#157 |/T String/T]> of class class dotty.tools.dotc.ast.Trees$Inlined # -1
exception while typing <
<
<.flatMap#11257:
([A/T#1097476292, B/T#1097476292]#1097476292
(fa#1214803733: x#25.CB/T#3993[A/T#1097476292])
(f#1015314875: A/T#1097476292 => x#25.CB/T#3993[B/T#1097476292]):
x#25.CB/T#3993[B/T#1097476292]
)
>
[Unit/T#157 |/T String/T, Unit/T#157]:
((fa#533034517: x#25.CB/T#3993[Unit/T#157 |/T String/T])
(f#329676261: Unit/T#157 |/T String/T => x#25.CB/T#3993[Unit/T#157]):
x#25.CB/T#3993[Unit/T#157]
)
>
(
<
< match
{
=>
<
<
{
def _whilefun#11410(): x#25.CB/T#3993[Unit/T#157]
<<_whilefun#11410:((): 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]>
.unapply#8310:
([A/T#1405029826]#1405029826
(x$0#1344187839: Some/T#328[A/T#1405029826]):
Option/T#82[A/T#1405029826]
)
>
[String/T]:
((x$0#2068927264: 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]>
=>
<
<
<
<
<.flatMap#11257:
([A/T#1097476292, B/T#1097476292]#1097476292
(fa#1214803733: x#25.CB/T#3993[A/T#1097476292])
(f#1015314875: A/T#1097476292 =>
x#25.CB/T#3993[B/T#1097476292]
): x#25.CB/T#3993[B/T#1097476292]
)
>
[String/T, Unit/T#157 |/T String/T]:
((fa#215918310: x#25.CB/T#3993[String/T])
(f#319311719: 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[String/T#6171]>
:x#25.CB/T#3993[String/T#6171]>
):
((f#319311719: String/T =>
x#25.CB/T#3993[Unit/T#157 |/T String/T]
): x#25.CB/T#3993[Unit/T#157 |/T String/T])
>
(
<
{
def $anonfun#11380
(vx#1686160858: String/T):
x#25.CB/T#3993[Unit/T#157 |/T String/T]
):String/T => x#25.CB/T#3993[Unit/T#157 |/T String/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]>
:x#25.CB/T#3993[Unit/T#157 |/T String/T]>
):
(f#329676261: Unit/T#157 |/T String/T => 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 <
<
<
<.flatMap#11257:
([A/T#1097476292, B/T#1097476292]#1097476292
(fa#1214803733: x#25.CB/T#3993[A/T#1097476292])
(f#1015314875: A/T#1097476292 => x#25.CB/T#3993[B/T#1097476292]):
x#25.CB/T#3993[B/T#1097476292]
)
>
[Unit/T#157 |/T String/T, Unit/T#157]:
((fa#533034517: x#25.CB/T#3993[Unit/T#157 |/T String/T])
(f#329676261: Unit/T#157 |/T String/T => x#25.CB/T#3993[Unit/T#157]):
x#25.CB/T#3993[Unit/T#157]
)
>
(
<
< match
{
=>
<
<
{
def _whilefun#11410(): x#25.CB/T#3993[Unit/T#157]
<<_whilefun#11410:((): 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]>
.unapply#8310:
([A/T#1405029826]#1405029826
(x$0#1344187839: Some/T#328[A/T#1405029826]):
Option/T#82[A/T#1405029826]
)
>
[String/T]:
((x$0#2068927264: 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]>
=>
<
<
<
<
<.flatMap#11257:
([A/T#1097476292, B/T#1097476292]#1097476292
(fa#1214803733: x#25.CB/T#3993[A/T#1097476292])
(f#1015314875: A/T#1097476292 =>
x#25.CB/T#3993[B/T#1097476292]
): x#25.CB/T#3993[B/T#1097476292]
)
>
[String/T, Unit/T#157 |/T String/T]:
((fa#215918310: x#25.CB/T#3993[String/T])
(f#319311719: 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[String/T#6171]>
:x#25.CB/T#3993[String/T#6171]>
):
((f#319311719: String/T =>
x#25.CB/T#3993[Unit/T#157 |/T String/T]
): x#25.CB/T#3993[Unit/T#157 |/T String/T])
>
(
<
{
def $anonfun#11380
(vx#1686160858: String/T):
x#25.CB/T#3993[Unit/T#157 |/T String/T]
):String/T => x#25.CB/T#3993[Unit/T#157 |/T String/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]>
:x#25.CB/T#3993[Unit/T#157 |/T String/T]>
):
((f#329676261: Unit/T#157 |/T String/T => x#25.CB/T#3993[Unit/T#157]):
x#25.CB/T#3993[Unit/T#157]
)
>
(
<
{
def $anonfun#11394
(vx#241716168: Unit/T#157 |/T String/T): x#25.CB/T#3993[Unit/T#157]
):Unit/T#157 |/T String/T => x#25.CB/T#3993[Unit/T#157]>
}
:Unit/T#157 |/T String/T => 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 <
<
<
<
<.flatMap#11257:
([A/T#1097476292, B/T#1097476292]#1097476292
(fa#1214803733: x#25.CB/T#3993[A/T#1097476292])
(f#1015314875: A/T#1097476292 => x#25.CB/T#3993[B/T#1097476292]):
x#25.CB/T#3993[B/T#1097476292]
)
>
[Unit/T#157 |/T String/T, Unit/T#157]:
((fa#533034517: x#25.CB/T#3993[Unit/T#157 |/T String/T])
(f#329676261: Unit/T#157 |/T String/T => x#25.CB/T#3993[Unit/T#157]):
x#25.CB/T#3993[Unit/T#157]
)
>
(
<
< match
{
=>
<
<
{
def _whilefun#11410(): x#25.CB/T#3993[Unit/T#157]
<<_whilefun#11410:((): 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]>
.unapply#8310:
([A/T#1405029826]#1405029826
(x$0#1344187839: Some/T#328[A/T#1405029826]):
Option/T#82[A/T#1405029826]
)
>
[String/T]:
((x$0#2068927264: 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]>
=>
<
<
<
<
<.flatMap#11257:
([A/T#1097476292, B/T#1097476292]#1097476292
(fa#1214803733: x#25.CB/T#3993[A/T#1097476292])
(f#1015314875: A/T#1097476292 =>
x#25.CB/T#3993[B/T#1097476292]
): x#25.CB/T#3993[B/T#1097476292]
)
>
[String/T, Unit/T#157 |/T String/T]:
((fa#215918310: x#25.CB/T#3993[String/T])
(f#319311719: 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[String/T#6171]>
:x#25.CB/T#3993[String/T#6171]>
):
((f#319311719: String/T =>
x#25.CB/T#3993[Unit/T#157 |/T String/T]
): x#25.CB/T#3993[Unit/T#157 |/T String/T])
>
(
<
{
def $anonfun#11380
(vx#1686160858: String/T):
x#25.CB/T#3993[Unit/T#157 |/T String/T]
):String/T => x#25.CB/T#3993[Unit/T#157 |/T String/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]>
:x#25.CB/T#3993[Unit/T#157 |/T String/T]>
):
((f#329676261: Unit/T#157 |/T String/T => x#25.CB/T#3993[Unit/T#157]):
x#25.CB/T#3993[Unit/T#157]
)
>
(
<
{
def $anonfun#11394
(vx#241716168: Unit/T#157 |/T String/T): x#25.CB/T#3993[Unit/T#157]
):Unit/T#157 |/T String/T => x#25.CB/T#3993[Unit/T#157]>
}
:Unit/T#157 |/T String/T => 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 <
{
<
<
<
<
<.flatMap#11257:
([A/T#1097476292, B/T#1097476292]#1097476292
(fa#1214803733: x#25.CB/T#3993[A/T#1097476292])
(f#1015314875: A/T#1097476292 =>
x#25.CB/T#3993[B/T#1097476292]
): x#25.CB/T#3993[B/T#1097476292]
)
>
[Unit/T#157 |/T String/T, Unit/T#157]:
((fa#533034517: x#25.CB/T#3993[Unit/T#157 |/T String/T])
(f#329676261: Unit/T#157 |/T String/T =>
x#25.CB/T#3993[Unit/T#157]
): x#25.CB/T#3993[Unit/T#157]
)
>
(
<
< match
{
=>
<
<
{
def _whilefun#11410(): x#25.CB/T#3993[Unit/T#157]
<<_whilefun#11410:((): 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]>
.unapply#8310:
([A/T#1405029826]#1405029826
(x$0#1344187839: Some/T#328[A/T#1405029826]):
Option/T#82[A/T#1405029826]
)
>
[String/T]:
((x$0#2068927264: 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]>
=>
<
<
<
<
<.flatMap#11257:
([A/T#1097476292, B/T#1097476292]#1097476292
(fa#1214803733: x#25.CB/T#3993[A/T#1097476292])
(f#1015314875: A/T#1097476292 =>
x#25.CB/T#3993[B/T#1097476292]
): x#25.CB/T#3993[B/T#1097476292]
)
>
[String/T, Unit/T#157 |/T String/T]:
((fa#215918310: x#25.CB/T#3993[String/T])
(f#319311719: 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[String/T#6171]>
:x#25.CB/T#3993[String/T#6171]>
):
((f#319311719: String/T =>
x#25.CB/T#3993[Unit/T#157 |/T String/T]
): x#25.CB/T#3993[Unit/T#157 |/T String/T])
>
(
<
{
def $anonfun#11380
(vx#1686160858: String/T):
x#25.CB/T#3993[Unit/T#157 |/T String/T]
):String/T => x#25.CB/T#3993[Unit/T#157 |/T String/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]>
:x#25.CB/T#3993[Unit/T#157 |/T String/T]>
):
((f#329676261: Unit/T#157 |/T String/T => x#25.CB/T#3993[Unit/T#157]
):
x#25.CB/T#3993[Unit/T#157])
>
(
<
{
def $anonfun#11394
(vx#241716168: Unit/T#157 |/T String/T):
x#25.CB/T#3993[Unit/T#157]
):Unit/T#157 |/T String/T => x#25.CB/T#3993[Unit/T#157]>
}
:Unit/T#157 |/T String/T => 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$Block # -1
exception while typing <
<
{
<
<
<
<
<.flatMap#11257:
([A/T#1097476292, B/T#1097476292]#1097476292
(fa#1214803733: x#25.CB/T#3993[A/T#1097476292])
(f#1015314875: A/T#1097476292 =>
x#25.CB/T#3993[B/T#1097476292]
): x#25.CB/T#3993[B/T#1097476292]
)
>
[Unit/T#157 |/T String/T, Unit/T#157]:
((fa#533034517: x#25.CB/T#3993[Unit/T#157 |/T String/T])
(f#329676261: Unit/T#157 |/T String/T =>
x#25.CB/T#3993[Unit/T#157]
): x#25.CB/T#3993[Unit/T#157]
)
>
(
<
< match
{
=>
<
<
{
def _whilefun#11410(): x#25.CB/T#3993[Unit/T#157]
<<_whilefun#11410:((): 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]>
.unapply#8310:
([A/T#1405029826]#1405029826
(x$0#1344187839: Some/T#328[A/T#1405029826]):
Option/T#82[A/T#1405029826]
)
>
[String/T]:
((x$0#2068927264: 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]>
=>
<
<
<
<
<.flatMap#11257:
([A/T#1097476292, B/T#1097476292]#1097476292
(fa#1214803733: x#25.CB/T#3993[A/T#1097476292])
(f#1015314875: A/T#1097476292 =>
x#25.CB/T#3993[B/T#1097476292]
): x#25.CB/T#3993[B/T#1097476292]
)
>
[String/T, Unit/T#157 |/T String/T]:
((fa#215918310: x#25.CB/T#3993[String/T])
(f#319311719: 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[String/T#6171]>
:x#25.CB/T#3993[String/T#6171]>
):
((f#319311719: String/T =>
x#25.CB/T#3993[Unit/T#157 |/T String/T]
): x#25.CB/T#3993[Unit/T#157 |/T String/T])
>
(
<
{
def $anonfun#11380
(vx#1686160858: String/T):
x#25.CB/T#3993[Unit/T#157 |/T String/T]
):String/T =>
x#25.CB/T#3993[Unit/T#157 |/T String/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]>
:x#25.CB/T#3993[Unit/T#157 |/T String/T]>
):
((f#329676261: Unit/T#157 |/T String/T => x#25.CB/T#3993[Unit/T#157]
):
x#25.CB/T#3993[Unit/T#157])
>
(
<
{
def $anonfun#11394
(vx#241716168: Unit/T#157 |/T String/T):
x#25.CB/T#3993[Unit/T#157]
):Unit/T#157 |/T String/T => x#25.CB/T#3993[Unit/T#157]>
}
:Unit/T#157 |/T String/T => 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 <
<
<.spawn#11258:
([A/T#1702370716]#1702370716
(op#127437572: => x#25.CB/T#3993[A/T#1702370716]):
x#25.CB/T#3993[A/T#1702370716]
)
>
[Unit/T#157]:
((op#869867580: => x#25.CB/T#3993[Unit/T#157]): x#25.CB/T#3993[Unit/T#157])
>
(
<
<
{
<
<
<
<
<.flatMap#11257:
([A/T#1097476292, B/T#1097476292]#1097476292
(fa#1214803733: x#25.CB/T#3993[A/T#1097476292])
(f#1015314875: A/T#1097476292 =>
x#25.CB/T#3993[B/T#1097476292]
): x#25.CB/T#3993[B/T#1097476292]
)
>
[Unit/T#157 |/T String/T, Unit/T#157]:
((fa#533034517: x#25.CB/T#3993[Unit/T#157 |/T String/T])
(f#329676261: Unit/T#157 |/T String/T =>
x#25.CB/T#3993[Unit/T#157]
): x#25.CB/T#3993[Unit/T#157]
)
>
(
<
< match
{
=>
<
<
{
def _whilefun#11410(): x#25.CB/T#3993[Unit/T#157]
<<_whilefun#11410:((): 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]>
.unapply#8310:
([A/T#1405029826]#1405029826
(x$0#1344187839: Some/T#328[A/T#1405029826]):
Option/T#82[A/T#1405029826]
)
>
[String/T]:
((x$0#2068927264: 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]>
=>
<
<
<
<
<.flatMap#11257:
([A/T#1097476292, B/T#1097476292]#1097476292
(fa#1214803733: x#25.CB/T#3993[A/T#1097476292]
)
(f#1015314875: A/T#1097476292 =>
x#25.CB/T#3993[B/T#1097476292]
): x#25.CB/T#3993[B/T#1097476292]
)
>
[String/T, Unit/T#157 |/T String/T]:
((fa#215918310: x#25.CB/T#3993[String/T])
(f#319311719: 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[String/T#6171]>
:x#25.CB/T#3993[String/T#6171]>
):
((f#319311719: String/T =>
x#25.CB/T#3993[Unit/T#157 |/T String/T]
): x#25.CB/T#3993[Unit/T#157 |/T String/T])
>
(
<
{
def $anonfun#11380
(vx#1686160858: String/T):
x#25.CB/T#3993[Unit/T#157 |/T String/T]
):String/T =>
x#25.CB/T#3993[Unit/T#157 |/T String/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]>
:x#25.CB/T#3993[Unit/T#157 |/T String/T]>
):
((f#329676261: Unit/T#157 |/T String/T =>
x#25.CB/T#3993[Unit/T#157]
): x#25.CB/T#3993[Unit/T#157])
>
(
<
{
def $anonfun#11394
(vx#241716168: Unit/T#157 |/T String/T):
x#25.CB/T#3993[Unit/T#157]
):Unit/T#157 |/T String/T => x#25.CB/T#3993[Unit/T#157]>
}
:Unit/T#157 |/T String/T => 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$Apply # -1
exception while typing <
<
<
<.spawn#11258:
([A/T#1702370716]#1702370716
(op#127437572: => x#25.CB/T#3993[A/T#1702370716]):
x#25.CB/T#3993[A/T#1702370716]
)
>
[Unit/T#157]:
((op#869867580: => x#25.CB/T#3993[Unit/T#157]): x#25.CB/T#3993[Unit/T#157]
)
>
(
<
<
{
<
<
<
<
<.flatMap#11257:
([A/T#1097476292, B/T#1097476292]#1097476292
(fa#1214803733: x#25.CB/T#3993[A/T#1097476292])
(f#1015314875: A/T#1097476292 =>
x#25.CB/T#3993[B/T#1097476292]
): x#25.CB/T#3993[B/T#1097476292]
)
>
[Unit/T#157 |/T String/T, Unit/T#157]:
((fa#533034517: x#25.CB/T#3993[Unit/T#157 |/T String/T])
(f#329676261: Unit/T#157 |/T String/T =>
x#25.CB/T#3993[Unit/T#157]
): x#25.CB/T#3993[Unit/T#157]
)
>
(
<
< match
{
=>
<
<
{
def _whilefun#11410(): x#25.CB/T#3993[Unit/T#157]
<
<_whilefun#11410:
((): 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]>
.unapply#8310:
([A/T#1405029826]#1405029826
(x$0#1344187839: Some/T#328[A/T#1405029826]):
Option/T#82[A/T#1405029826]
)
>
[String/T]:
((x$0#2068927264: 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]>
=>
<
<
<
<
<.flatMap#11257:
([A/T#1097476292, B/T#1097476292]#1097476292
(fa#1214803733:
x#25.CB/T#3993[A/T#1097476292]
)
(f#1015314875: A/T#1097476292 =>
x#25.CB/T#3993[B/T#1097476292]
): x#25.CB/T#3993[B/T#1097476292]
)
>
[String/T, Unit/T#157 |/T String/T]:
((fa#215918310: x#25.CB/T#3993[String/T])
(f#319311719: 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[String/T#6171]>
:x#25.CB/T#3993[String/T#6171]>
):
((f#319311719: String/T =>
x#25.CB/T#3993[Unit/T#157 |/T String/T]
): x#25.CB/T#3993[Unit/T#157 |/T String/T])
>
(
<
{
def $anonfun#11380
(vx#1686160858: String/T):
x#25.CB/T#3993[Unit/T#157 |/T String/T]
):String/T =>
x#25.CB/T#3993[Unit/T#157 |/T String/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]>
:x#25.CB/T#3993[Unit/T#157 |/T String/T]>
):
((f#329676261: Unit/T#157 |/T String/T =>
x#25.CB/T#3993[Unit/T#157]
): x#25.CB/T#3993[Unit/T#157])
>
(
<
{
def $anonfun#11394
(vx#241716168: Unit/T#157 |/T String/T):
x#25.CB/T#3993[Unit/T#157]
):Unit/T#157 |/T String/T => x#25.CB/T#3993[Unit/T#157]>
}
:Unit/T#157 |/T String/T => 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 <
<
<
<
<.spawn#11258:
([A/T#1702370716]#1702370716
(op#127437572: => x#25.CB/T#3993[A/T#1702370716]):
x#25.CB/T#3993[A/T#1702370716]
)
>
[Unit/T#157]:
((op#869867580: => x#25.CB/T#3993[Unit/T#157]):
x#25.CB/T#3993[Unit/T#157]
)
>
(
<
<
{
<
<
<
<
<.flatMap#11257:
([A/T#1097476292, B/T#1097476292]#1097476292
(fa#1214803733: x#25.CB/T#3993[A/T#1097476292])
(f#1015314875: A/T#1097476292 =>
x#25.CB/T#3993[B/T#1097476292]
): x#25.CB/T#3993[B/T#1097476292]
)
>
[Unit/T#157 |/T String/T, Unit/T#157]:
((fa#533034517: x#25.CB/T#3993[Unit/T#157 |/T String/T])
(f#329676261: Unit/T#157 |/T String/T =>
x#25.CB/T#3993[Unit/T#157]
): x#25.CB/T#3993[Unit/T#157]
)
>
(
<
< match
{
=>
<
<
{
def _whilefun#11410
(): x#25.CB/T#3993[Unit/T#157]
<
<_whilefun#11410:
((): 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]>
.unapply#8310:
([A/T#1405029826]#1405029826
(x$0#1344187839: Some/T#328[A/T#1405029826]
):
Option/T#82[A/T#1405029826]
)
>
[String/T]:
((x$0#2068927264: 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]>
=>
<
<
<
<
<.flatMap#11257
:
([A/T#1097476292, B/T#1097476292]#1097476292
(fa#1214803733:
x#25.CB/T#3993[A/T#1097476292]
)
(f#1015314875: A/T#1097476292 =>
x#25.CB/T#3993[B/T#1097476292]
): x#25.CB/T#3993[B/T#1097476292]
)
>
[String/T, Unit/T#157 |/T String/T]:
((fa#215918310: x#25.CB/T#3993[String/T])
(f#319311719: 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[String/T#6171]>
:x#25.CB/T#3993[String/T#6171]>
):
((f#319311719: String/T =>
x#25.CB/T#3993[Unit/T#157 |/T String/T]
): x#25.CB/T#3993[Unit/T#157 |/T String/T])
>
(
<
{
def $anonfun#11380
(vx#1686160858: String/T):
x#25.CB/T#3993[Unit/T#157 |/T String/T]
):String/T =>
x#25.CB/T#3993[Unit/T#157 |/T String/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]>
:x#25.CB/T#3993[Unit/T#157 |/T String/T]>
):
((f#329676261: Unit/T#157 |/T String/T =>
x#25.CB/T#3993[Unit/T#157]
): x#25.CB/T#3993[Unit/T#157])
>
(
<
{
def $anonfun#11394
(vx#241716168: Unit/T#157 |/T String/T):
x#25.CB/T#3993[Unit/T#157]
):Unit/T#157 |/T String/T => x#25.CB/T#3993[Unit/T#157]>
}
:Unit/T#157 |/T String/T => 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]>
: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#334525183: 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 <
<:((): Object/T)>
():Object/T> { this: x#25.VP1#4020.type =>
def allocateServiceOperator#6133
(optInUsername#334525183: 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 {
final lazy module object VP1#4020: x#25.VP1/T#4021
final module class VP1/T#4021() extends <
<:((): Object/T)>
():Object/T> { this: x#25.VP1#4020.type =>
def allocateServiceOperator#6133
(optInUsername#334525183: 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#11380 has owner method $anonfun#11265, expected was method allocateServiceOperator#6133
owner chain = method $anonfun#11380, method $anonfun#11265, value macro#9646, method allocateServiceOperator#6133, object VP1/T, package x/T#26, package /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 /T#2, package /T#2, package /T#2, package /T#2, package /T#2, package /T#2, package /T#2, #0, #0, #0, #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#11380 has owner method $anonfun#11265, expected was method allocateServiceOperator#6133
[error] owner chain = method $anonfun#11380, method
message after dump:
```Scala
java.lang.AssertionError: assertion failed: bad owner; method $anonfun#11380 has owner method $anonfun#11265, expected was method allocateServiceOperator#6133
owner chain = method $anonfun#11380, method $anonfun#11265, value macro#9646, method allocateServiceOperator#6133, object VP1/T, package x/T#26, package /T#2, ctxOwners = method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, method allocateServiceOperator#6133, ...
```
|
Also, what is interesting, when minimizing it (after submitting first version). I have received, that chunk of code. A which have two identical quotes inside match, give an error, but B - where the same quote returning as constant - not. A. (identical quotes inside match):
B:
|
The issue comes from a block that contains two definitions that has different owners. This is an invariant we assume to be able to efficiently change owners automatically in quotes. The owner of one of those statements should be changed using The real issue is that |
Minimized example 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] = ???
@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]] = '{???}
override def prependExprs(exprs: Seq[Expr[?]]): CpsExpr[T] =
copy(prev = exprs ++: prev)
override def syncOrigin(using Quotes): Option[Expr[T]] =
import quotes.reflect._
Some(last)
override def append[A:Type](e: CpsExpr[A])(using Quotes) = e
override def map[A:Type](f: Expr[T => A])(using Quotes): CpsExpr[A] =
copy(last = '{ ??? })
override def flatMap[A:Type](f: Expr[T => CB[A]])(using Quotes): CpsExpr[A] =
GenericAsyncCpsExpr[A](prev, '{ ??? } )
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( '{ ??? })
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]] =
'{ ??? }
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
'{
${cpsRhs.transformed};
((vx:V) => $nextOrigin);
???
}
case None =>
'{
${cpsRhs.transformed};
((v: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))
}
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:
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 = '{ ${cpsExpr.transformed}; ??? }
println(s"transformed value: ${r.show}")
r
def rootTransform[T:Type](f: Expr[T])(using Quotes): CpsExpr[T] = {
import quotes.reflect._
val fTree = f.asTerm
fTree match {
case fun@Apply(fun1@TypeApply(obj2,targs2), args1) =>
CpsExpr.async('{???})
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('{}))
}
val rLast = rootTransform(last.asExprOf[T])
val blockResult = rPrevs.foldRight(rLast)((e,s) => e.append(s))
CpsExpr.async(blockResult.transformed)
case Inlined(_,_,body) =>
rootTransform(body.asExprOf[T])
case Literal(_)=>
CpsExpr.sync('{???})
}
} package x
object VP1:
def allocateServiceOperator(optInUsername: Option[String]): CB[Unit] = Async.transform {
val username = {
val nextResult = await(op1())
val countResult = await(op1())
}
}
def op1(): CB[String] = ??? |
Checks that all definitions in the block have the same owner Closes scala#13809
Checks that all definitions in the block have the same owner Closes scala#13809
Checks that all definitions in the block have the same owner Closes scala#13809
Checks that all definitions in the block have the same owner Closes scala#13809
Checks that all definitions in the block have the same owner Closes scala#13809
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)
File2:
Output (click arrow to expand)
}
()
}
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₂
})(((
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.
The text was updated successfully, but these errors were encountered: