Scala中的“非简单类型”警告意味着什么?

时间:2012-01-03 04:36:48

标签: scala types warnings sbt existential-type

我的Scala 2.9.1项目现在发出176个警告,几乎完全像这个:

[warn] Not a simple type:
[warn]  Type: _29.type#source.type forSome { type _29.type <: Ontology.this.TruncationFunctor } (class class scala.tools.nsc.symtab.Types$ExistentialType)
[warn]  Transformed: class xsbti.api.Existential

(起初较少,但我的编码风格似乎引起了这种警告,因为我越来越多。)

任何人都可以向我解释这个警告意味着什么,以及我该如何避免它?编译器不会发出任何行号,所以我甚至不确定它究竟来自哪里。

2 个答案:

答案 0 :(得分:6)

这似乎特定于 sbt ,其中关于类型的假设不正确并发出警告。当sbt需要从源文件中提取一些信息时,似乎这段代码就会运行。

请参阅https://github.com/harrah/xsbt/blob/0.11/compile/interface/API.scala#L105

我的猜测是存在类型和类型投影的组合导致这种情况。如果您可以缩小范围,可能需要将此报告为sbt问题。

答案 1 :(得分:1)

这是一个SBT问题:https://github.com/sbt/sbt/issues/830。 此消息的级别已从警告更改为日志0.13.6。

另请参阅scala-internals小组中的相关讨论:https://groups.google.com/forum/#!msg/scala-internals/ANcaI6dVYPw/2Gt5z_S3Gc0J