You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
error when pickling tree [_$3, _$4] -> >: Nothing <: Any
error when pickling tree def apply[~> <: [_$3, _$4] => Any](x: ~>[Int, Int]): ~>[Int, Int] = x
error when pickling tree () extends Object() with Foo {
def apply[~> <: [_$3, _$4] => Any](x: ~>[Int, Int]): ~>[Int, Int] = x
}
error when pickling tree final class $anon() extends Object() with Foo {
def apply[~> <: [_$3, _$4] => Any](x: ~>[Int, Int]): ~>[Int, Int] = x
}
error when pickling tree {
final class $anon() extends Object() with Foo {
def apply[~> <: [_$3, _$4] => Any](x: ~>[Int, Int]): ~>[Int, Int] = x
}
new Object with Foo{...}(): Foo
}
error when pickling tree /* inlined from Foo*/
{
{
final class $anon() extends Object() with Foo {
def apply[~> <: [_$3, _$4] => Any](x: ~>[Int, Int]): ~>[Int, Int] = x
}
new Object with Foo{...}(): Foo
}
}
error when pickling tree /* inlined from Foo*/
{
{
final class $anon() extends Object() with Foo {
def apply[~> <: [_$3, _$4] => Any](x: ~>[Int, Int]): ~>[Int, Int] = x
}
(new Object with Foo{...}(): Foo)
}
}
.apply
error when pickling tree /* inlined from Foo*/
{
{
final class $anon() extends Object() with Foo {
def apply[~> <: [_$3, _$4] => Any](x: ~>[Int, Int]): ~>[Int, Int] = x
}
(new Object with Foo{...}(): Foo)
}
}
.apply[Function1]
error when pickling tree /* inlined from Foo*/
{
{
final class $anon() extends Object() with Foo {
def apply[~> <: [_$3, _$4] => Any](x: ~>[Int, Int]): ~>[Int, Int] = x
}
(new Object with Foo{...}(): Foo)
}
}
.apply[Function1](
{
def $anonfun(x: Int): Int = x
closure($anonfun)
}
)
error when pickling tree val x: Int => Int =
/* inlined from Foo*/
{
{
final class $anon() extends Object() with Foo {
def apply[~> <: [_$3, _$4] => Any](x: ~>[Int, Int]): ~>[Int, Int] = x
}
(new Object with Foo{...}(): Foo)
}
}
.apply[Function1](
{
def $anonfun(x: Int): Int = x
closure($anonfun)
}
)
error when pickling tree {
val x: Int => Int =
/* inlined from Foo*/
{
{
final class $anon() extends Object() with Foo {
def apply[~> <: [_$3, _$4] => Any](x: ~>[Int, Int]): ~>[Int, Int] =
x
}
(new Object with Foo{...}(): Foo)
}
}
.apply[Function1](
{
def $anonfun(x: Int): Int = x
closure($anonfun)
}
)
()
}
error when pickling tree def main(args: Array[String]): Unit =
{
val x: Int => Int =
/* inlined from Foo*/
{
{
final class $anon() extends Object() with Foo {
def apply[~> <: [_$3, _$4] => Any](x: ~>[Int, Int]): ~>[Int, Int]
=
x
}
(new Object with Foo{...}(): Foo)
}
}
.apply[Function1](
{
def $anonfun(x: Int): Int = x
closure($anonfun)
}
)
()
}
error when pickling tree () extends Object() { this: Foo.type =>
@{
final class $anon() extends Object() with Foo {
def apply[~> <: [_$3, _$4] => Any](x: ~>[Int, Int]): ~>[Int, Int] = x
}
(new Object with Foo{...}(): Foo)
} inline def foo: Foo =
{
final class $anon() extends Object() with Foo {
def apply[~> <: [_$3, _$4] => Any](x: ~>[Int, Int]): ~>[Int, Int] = x
}
new Object with Foo{...}(): Foo
}
def main(args: Array[String]): Unit =
{
val x: Int => Int =
/* inlined from Foo*/
{
{
final class $anon() extends Object() with Foo {
def apply[~> <: [_$3, _$4] => Any](x: ~>[Int, Int]):
~>[Int, Int]
= x
}
(new Object with Foo{...}(): Foo)
}
}
.apply[Function1](
{
def $anonfun(x: Int): Int = x
closure($anonfun)
}
)
()
}
}
error when pickling tree @scala.annotation.internal.SourceFile("test.scala") final module class Foo()
extends
Object() { this: Foo.type =>
@{
final class $anon() extends Object() with Foo {
def apply[~> <: [_$3, _$4] => Any](x: ~>[Int, Int]): ~>[Int, Int] = x
}
(new Object with Foo{...}(): Foo)
} inline def foo: Foo =
{
final class $anon() extends Object() with Foo {
def apply[~> <: [_$3, _$4] => Any](x: ~>[Int, Int]): ~>[Int, Int] = x
}
new Object with Foo{...}(): Foo
}
def main(args: Array[String]): Unit =
{
val x: Int => Int =
/* inlined from Foo*/
{
{
final class $anon() extends Object() with Foo {
def apply[~> <: [_$3, _$4] => Any](x: ~>[Int, Int]):
~>[Int, Int]
= x
}
(new Object with Foo{...}(): Foo)
}
}
.apply[Function1](
{
def $anonfun(x: Int): Int = x
closure($anonfun)
}
)
()
}
}
error when pickling tree package <empty> {
@scala.annotation.internal.SourceFile("test.scala") <trait> interface trait
Foo
() extends Object {
def apply[~> <: [_$1, _$2] => Any](x: ~>[Int, Int]): ~>[Int, Int]
}
final lazy module val Foo: Foo = new Foo()
@scala.annotation.internal.SourceFile("test.scala") final module class Foo()
extends
Object() { this: Foo.type =>
@{
final class $anon() extends Object() with Foo {
def apply[~> <: [_$3, _$4] => Any](x: ~>[Int, Int]): ~>[Int, Int] = x
}
(new Object with Foo{...}(): Foo)
} inline def foo: Foo =
{
final class $anon() extends Object() with Foo {
def apply[~> <: [_$3, _$4] => Any](x: ~>[Int, Int]): ~>[Int, Int] = x
}
new Object with Foo{...}(): Foo
}
def main(args: Array[String]): Unit =
{
val x: Int => Int =
/* inlined from Foo*/
{
{
final class $anon() extends Object() with Foo {
def apply[~> <: [_$3, _$4] => Any](x: ~>[Int, Int]):
~>[Int, Int]
= x
}
(new Object with Foo{...}(): Foo)
}
}
.apply[Function1](
{
def $anonfun(x: Int): Int = x
closure($anonfun)
}
)
()
}
}
}
exception occurred while compiling test.scala
Exception in thread "main" java.lang.AssertionError: assertion failed: type _$3
at scala.Predef$.assert(Predef.scala:170)
at dotty.tools.dotc.core.tasty.TreePickler.pickleDef(TreePickler.scala:284)
at dotty.tools.dotc.core.tasty.TreePickler.pickleParam(TreePickler.scala:304)
at dotty.tools.dotc.core.tasty.TreePickler.pickleParams$$anonfun$2(TreePickler.scala:310)
at scala.compat.java8.JProcedure1.apply(JProcedure1.java:18)
at scala.compat.java8.JProcedure1.apply(JProcedure1.java:10)
at scala.collection.immutable.List.foreach(List.scala:392)
at dotty.tools.dotc.core.tasty.TreePickler.pickleParams(TreePickler.scala:310)
at dotty.tools.dotc.core.tasty.TreePickler.pickleTree$$anonfun$33(TreePickler.scala:533)
at scala.compat.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
at dotty.tools.dotc.core.tasty.TreePickler.withLength(TreePickler.scala:32)
at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:533)
at dotty.tools.dotc.core.tasty.TreePickler.pickleTpt(TreePickler.scala:278)
at dotty.tools.dotc.core.tasty.TreePickler.pickleDef$$anonfun$2(TreePickler.scala:292)
at scala.compat.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
at dotty.tools.dotc.core.tasty.TreePickler.withLength(TreePickler.scala:32)
at dotty.tools.dotc.core.tasty.TreePickler.pickleDef(TreePickler.scala:296)
at dotty.tools.dotc.core.tasty.TreePickler.pickleParam(TreePickler.scala:304)
at dotty.tools.dotc.core.tasty.TreePickler.pickleParams$$anonfun$2(TreePickler.scala:310)
at scala.compat.java8.JProcedure1.apply(JProcedure1.java:18)
at scala.compat.java8.JProcedure1.apply(JProcedure1.java:10)
at scala.collection.immutable.List.foreach(List.scala:392)
at dotty.tools.dotc.core.tasty.TreePickler.pickleParams(TreePickler.scala:310)
at dotty.tools.dotc.core.tasty.TreePickler.pickleAllParams$1(TreePickler.scala:448)
at dotty.tools.dotc.core.tasty.TreePickler.pickleTree$$anonfun$22(TreePickler.scala:454)
at scala.compat.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
at dotty.tools.dotc.core.tasty.TreePickler.pickleDef$$anonfun$2(TreePickler.scala:289)
at scala.compat.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
at dotty.tools.dotc.core.tasty.TreePickler.withLength(TreePickler.scala:32)
at dotty.tools.dotc.core.tasty.TreePickler.pickleDef(TreePickler.scala:296)
at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:454)
at dotty.tools.dotc.core.tasty.TreePickler.pickleStats$$anonfun$2(TreePickler.scala:315)
at scala.compat.java8.JProcedure1.apply(JProcedure1.java:18)
at scala.compat.java8.JProcedure1.apply(JProcedure1.java:10)
at scala.collection.immutable.List.foreach(List.scala:392)
at dotty.tools.dotc.core.tasty.TreePickler.pickleStats(TreePickler.scala:315)
at dotty.tools.dotc.core.tasty.TreePickler.pickleTree$$anonfun$24(TreePickler.scala:485)
at scala.compat.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
at dotty.tools.dotc.core.tasty.TreePickler.withLength(TreePickler.scala:32)
at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:486)
at dotty.tools.dotc.core.tasty.TreePickler.pickleDef$$anonfun$2(TreePickler.scala:291)
at scala.compat.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
at dotty.tools.dotc.core.tasty.TreePickler.withLength(TreePickler.scala:32)
at dotty.tools.dotc.core.tasty.TreePickler.pickleDef(TreePickler.scala:296)
at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:456)
at dotty.tools.dotc.core.tasty.TreePickler.pickleTree$$anonfun$8$$anonfun$1(TreePickler.scala:396)
at scala.compat.java8.JProcedure1.apply(JProcedure1.java:18)
at scala.compat.java8.JProcedure1.apply(JProcedure1.java:10)
at scala.collection.immutable.List.foreach(List.scala:392)
at dotty.tools.dotc.core.tasty.TreePickler.pickleTree$$anonfun$8(TreePickler.scala:396)
at scala.compat.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
at dotty.tools.dotc.core.tasty.TreePickler.withLength(TreePickler.scala:32)
at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:396)
at dotty.tools.dotc.core.tasty.TreePickler.pickleTree$$anonfun$17(TreePickler.scala:425)
at scala.compat.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
at dotty.tools.dotc.core.tasty.TreePickler.withLength(TreePickler.scala:32)
at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:425)
at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:352)
at dotty.tools.dotc.core.tasty.TreePickler.pickleTree$$anonfun$2(TreePickler.scala:362)
at scala.compat.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
at dotty.tools.dotc.core.tasty.TreePickler.withLength(TreePickler.scala:32)
at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:364)
at dotty.tools.dotc.core.tasty.TreePickler.pickleTree$$anonfun$1(TreePickler.scala:356)
at scala.compat.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
at dotty.tools.dotc.core.tasty.TreePickler.withLength(TreePickler.scala:32)
at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:358)
at dotty.tools.dotc.core.tasty.TreePickler.pickleTreeUnlessEmpty(TreePickler.scala:281)
at dotty.tools.dotc.core.tasty.TreePickler.pickleDef$$anonfun$2(TreePickler.scala:294)
at scala.compat.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
at dotty.tools.dotc.core.tasty.TreePickler.withLength(TreePickler.scala:32)
at dotty.tools.dotc.core.tasty.TreePickler.pickleDef(TreePickler.scala:296)
at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:445)
at dotty.tools.dotc.core.tasty.TreePickler.pickleTree$$anonfun$8$$anonfun$1(TreePickler.scala:396)
at scala.compat.java8.JProcedure1.apply(JProcedure1.java:18)
at scala.compat.java8.JProcedure1.apply(JProcedure1.java:10)
at scala.collection.immutable.List.foreach(List.scala:392)
at dotty.tools.dotc.core.tasty.TreePickler.pickleTree$$anonfun$8(TreePickler.scala:396)
at scala.compat.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
at dotty.tools.dotc.core.tasty.TreePickler.withLength(TreePickler.scala:32)
at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:396)
at dotty.tools.dotc.core.tasty.TreePickler.pickleTreeUnlessEmpty(TreePickler.scala:281)
at dotty.tools.dotc.core.tasty.TreePickler.pickleDef$$anonfun$2(TreePickler.scala:294)
at scala.compat.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
at dotty.tools.dotc.core.tasty.TreePickler.withLength(TreePickler.scala:32)
at dotty.tools.dotc.core.tasty.TreePickler.pickleDef(TreePickler.scala:296)
at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:454)
at dotty.tools.dotc.core.tasty.TreePickler.pickleStats$$anonfun$2(TreePickler.scala:315)
at scala.compat.java8.JProcedure1.apply(JProcedure1.java:18)
at scala.compat.java8.JProcedure1.apply(JProcedure1.java:10)
at scala.collection.immutable.List.foreach(List.scala:392)
at dotty.tools.dotc.core.tasty.TreePickler.pickleStats(TreePickler.scala:315)
at dotty.tools.dotc.core.tasty.TreePickler.pickleTree$$anonfun$24(TreePickler.scala:485)
at scala.compat.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
at dotty.tools.dotc.core.tasty.TreePickler.withLength(TreePickler.scala:32)
at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:486)
at dotty.tools.dotc.core.tasty.TreePickler.pickleDef$$anonfun$2(TreePickler.scala:291)
at scala.compat.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
at dotty.tools.dotc.core.tasty.TreePickler.withLength(TreePickler.scala:32)
at dotty.tools.dotc.core.tasty.TreePickler.pickleDef(TreePickler.scala:296)
at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:456)
at dotty.tools.dotc.core.tasty.TreePickler.pickleStats$$anonfun$2(TreePickler.scala:315)
at scala.compat.java8.JProcedure1.apply(JProcedure1.java:18)
at scala.compat.java8.JProcedure1.apply(JProcedure1.java:10)
at scala.collection.immutable.List.foreach(List.scala:392)
at dotty.tools.dotc.core.tasty.TreePickler.pickleStats(TreePickler.scala:315)
at dotty.tools.dotc.core.tasty.TreePickler.pickleTree$$anonfun$26(TreePickler.scala:501)
at scala.compat.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
at dotty.tools.dotc.core.tasty.TreePickler.withLength(TreePickler.scala:32)
at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:501)
at dotty.tools.dotc.core.tasty.TreePickler.pickle$$anonfun$1(TreePickler.scala:597)
at scala.compat.java8.JProcedure1.apply(JProcedure1.java:18)
at scala.compat.java8.JProcedure1.apply(JProcedure1.java:10)
at scala.collection.immutable.List.foreach(List.scala:392)
at dotty.tools.dotc.core.tasty.TreePickler.pickle(TreePickler.scala:597)
at dotty.tools.dotc.transform.Pickler.run$$anonfun$7$$anonfun$1(Pickler.scala:52)
at scala.compat.java8.JProcedure1.apply(JProcedure1.java:18)
at scala.compat.java8.JProcedure1.apply(JProcedure1.java:10)
at scala.collection.immutable.List.foreach(List.scala:392)
at dotty.tools.dotc.transform.Pickler.run$$anonfun$7(Pickler.scala:72)
at scala.compat.java8.JProcedure1.apply(JProcedure1.java:18)
at scala.compat.java8.JProcedure1.apply(JProcedure1.java:10)
at scala.collection.immutable.List.foreach(List.scala:392)
at dotty.tools.dotc.transform.Pickler.run(Pickler.scala:72)
at dotty.tools.dotc.core.Phases$Phase.runOn$$anonfun$2(Phases.scala:283)
at scala.collection.immutable.List.map(List.scala:284)
at dotty.tools.dotc.core.Phases$Phase.runOn(Phases.scala:285)
at dotty.tools.dotc.transform.Pickler.runOn(Pickler.scala:76)
at dotty.tools.dotc.Run.compileUnits$$anonfun$1$$anonfun$1(Run.scala:82)
at scala.compat.java8.JProcedure1.apply(JProcedure1.java:18)
at scala.compat.java8.JProcedure1.apply(JProcedure1.java:10)
at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33)
at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:186)
at dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:90)
at scala.compat.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
at dotty.tools.dotc.util.Stats$.monitorHeartBeat(Stats.scala:76)
at dotty.tools.dotc.Run.compileUnits(Run.scala:95)
at dotty.tools.dotc.Run.compileSources(Run.scala:64)
at dotty.tools.dotc.Run.compile(Run.scala:48)
at dotty.tools.dotc.Driver.doCompile(Driver.scala:26)
at dotty.tools.dotc.Driver.process(Driver.scala:124)
at dotty.tools.dotc.Driver.process(Driver.scala:93)
at dotty.tools.dotc.Driver.process(Driver.scala:105)
at dotty.tools.dotc.Driver.main(Driver.scala:132)
at dotty.tools.dotc.Main.main(Main.scala)
Interestingly, removing the use of higher kinded types (and monomorphising ~> into => manually), or turning the inline def into val compiles just fine.
The text was updated successfully, but these errors were encountered:
When we inline we need to construct new trees with new symbols. This is
handled by TreeTypeMap which was missing a case for LambdaTypeTree (the
parameters of a type lambda are TypeDefs and thus have symbols that need
to be replaced). This caused a crash in pickling since we ended up
trying to pickle the same symbol twice.
smarter
added a commit
to dotty-staging/dotty
that referenced
this issue
Aug 15, 2017
When we inline we need to construct new trees with new symbols. This is
handled by TreeTypeMap which was missing a case for LambdaTypeTree (the
parameters of a type lambda are TypeDefs and thus have symbols that need
to be replaced). This caused a crash in pickling since we ended up
trying to pickle the same symbol twice.
When we inline we need to construct new trees with new symbols. This is
handled by TreeTypeMap which was missing a case for LambdaTypeTree (the
parameters of a type lambda are TypeDefs and thus have symbols that need
to be replaced). This caused a crash in pickling since we ended up
trying to pickle the same symbol twice.
With the following:
I get the dotty compiler to crash with:
Interestingly, removing the use of higher kinded types (and monomorphising ~> into => manually), or turning the inline def into val compiles just fine.
The text was updated successfully, but these errors were encountered: