Scala编译器的StackOverflow

时间:2016-06-24 14:25:48

标签: scala compiler-errors

Scala编译器(2.11.8)抛出StackOverflowException:

java.lang.StackOverflowError
at scala.reflect.internal.tpe.TypeMaps$TypeMap.mapOver(TypeMaps.scala:109)
at scala.reflect.internal.tpe.TypeMaps$ForEachTypeTraverser.traverse(TypeMaps.scala:1052)
at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:300)
at scala.reflect.internal.tpe.TypeMaps$TypeMap.mapOver(TypeMaps.scala:110)
at scala.reflect.internal.tpe.TypeMaps$ForEachTypeTraverser.traverse(TypeMaps.scala:1052)
at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:300)
at scala.reflect.internal.tpe.TypeMaps$TypeMap.mapOver(TypeMaps.scala:175)
at scala.reflect.internal.tpe.TypeMaps$ForEachTypeTraverser.traverse(TypeMaps.scala:1052)
at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:300)
at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:298)
at scala.collection.immutable.List.loop$1(List.scala:173)
at scala.collection.immutable.List.mapConserve(List.scala:189)
at scala.reflect.internal.tpe.TypeMaps$TypeMap.mapOver(TypeMaps.scala:115)
at scala.reflect.internal.tpe.TypeMaps$ForEachTypeTraverser.traverse(TypeMaps.scala:1052)
at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:300)
at scala.reflect.internal.tpe.TypeMaps$TypeMap.mapOver(TypeMaps.scala:175)
at scala.reflect.internal.tpe.TypeMaps$ForEachTypeTraverser.traverse(TypeMaps.scala:1052)
at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:300)
at scala.reflect.internal.tpe.TypeMaps$TypeTraverser.apply(TypeMaps.scala:298)
at scala.collection.immutable.List.loop$1(List.scala:173)
at scala.collection.immutable.List.mapConserve(List.scala:189)
at scala.reflect.internal.tpe.TypeMaps$TypeMap.mapOver(TypeMaps.scala:115)

从观察mapOver函数代码来看,问题似乎不是递归含义,而是类型方差。由于自上次成功编译以来已经更改了很多代码,我不知道什么是破坏的,并且无法从编译器中提取更多信息(使用“-verbose”,“ - Ylog:icode”,“ - Ydebug“,” - Ytyper-debug“标志)。知道它可能是什么意思吗?

0 个答案:

没有答案