gpt4 book ai didi

scala - 为什么 Scala 编译器在 2.10 中对 self 类型变得更加严格?

转载 作者:行者123 更新时间:2023-12-05 01:33:13 26 4
gpt4 key购买 nike

这个问题不太可能对任何 future 的访客有帮助;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,通常不适用于互联网的全局受众。如需帮助使这个问题更广泛适用,visit the help center .




9年前关闭。




我有以下代码:

  trait TFn1B {
type In
type Out
type Apply[T <: In] <: Out
}

trait TFn1[I, O] extends TFn1B {
type In = I
type Out = O
}

trait >>[F1 <: TFn1[_, _], F2 <: TFn1[_, _]] extends TFn1[F1#In, F2#Out] {
type Apply[T] = F2#Apply[F1#Apply[T]]
}

它在 Scala 2.9.1 上编译,没有警告或错误。

但是在当前的 2.10 版本中,我收到以下错误消息:
Fun.scala:12: error: illegal inheritance;
self-type this.>>[F1,F2] does not conform to this.TFn1[_$1,_$4]'s selftype this.TFn1[_$1,_$4]
trait >>[F1 <: TFn1[_, _], F2 <: TFn1[_, _]] extends TFn1[F1#In, F2#Out] {
^
one error found

这是回归还是代码不健全而编译器最近才开始捕获它?
如果代码是错误的,有什么办法可以让它再次工作?

最佳答案

正如在 Scala 邮件列表(由您发布)中看到的,Paul Phillips answers那:

It's already open (SI-5399, SI-5400).
The regression arises from attempts to address SI-5120: rather spectacular soundness failure with abstract types.



潜在的有问题的提交:
  • 22d125f1e3: Trying to fix sdt core build.
  • 2e092d4822: Fix for problem in SBT that was caused by the too severe fix of type …
  • 关于scala - 为什么 Scala 编译器在 2.10 中对 self 类型变得更加严格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8980251/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com