0

TL;博士

我在 Swift 编译器中发现了一个带有嵌套枚举和协议一致性的错误。向下滚动到Edit 3

原帖:

我真的很沮丧...... Xcode 10 前几天刚刚坏了。不知道是什么触发了它。我正在运行 10.14.0 和 Xcode 10.0,直到昨天才运行。然后突然间,我的 Macbook Pro(2016 年,完全最大化)上的冷却风扇开始疯狂,从未停止,我在Activity Monitor中看到了极端的 CPU 负载。

我尝试重新启动 Xcode,但计算机没有帮助。所以我认为安装 Mojave 10.14.1 并没有什么坏处。那没有帮助。然后我下载了 Xcode 10.1,没有帮助。

我试过多次删除派生数据,重新启动 Xcode,重新启动 Macbook,但没有任何帮助。我的 Xcode 项目(它是(开源且非常小)[ https://github.com/OpenZesame/Zupreme])正在使用 Carthage。它卡在了 256 的任务 221 上。

在此处输入图像描述

Activity Monitor中,我看到许多名为swift的进程,我不记得以前见过这些进程。

在此处输入图像描述

有没有其他人遇到过这些问题?我知道我在这里并没有真正给你任何东西,因为我几乎可以肯定随机开始出现在 Mojave 10.14.0 和 Xcode 10.0 上,它已经工作了很长一段时间......

现在我正在Xcode_10.1.xip从开发人员门户下载文件以执行全新安装。我还试图从Carthage/Build/文件夹中删除所有使用 carthage 构建的项目并再次构建它们。我稍后会报告结果。

编辑1:

为了提供更多细节,我发现Compile Sources构建阶段永远不会结束。

此外,删除和重建我的 Carthage 依赖项也无济于事。仍在等待我的 Mac 解压Xcode_10.1.xip从开发门户下载的内容。当我尝试干净安装时会报告。

编辑2:

当我遇到所有这些问题时,我正在开发一个正在进行的功能分支。我所有的更改都是在我的开发过程中编译的。我没有收到任何编译错误。现在我尝试切换回我的develop分支,瞧,它又可以工作了。所以 swift 编译器永远不会以成功或失败结束。我打开了一个 PR,其中包含我在代码库中所做的更改,并将搜索它们以查看导致 swift 编译器无法完成的原因。PR 是公开的,如果有人感兴趣,可以在这里找到

编辑3:

我发现了这个错误,这确实是评论中建议的 swift 编译器的一个错误。所以这是一条红鲱鱼,它与 Xcode 10 没有任何关系,我能够在 Xcode 9.4.1 中重现相同的错误。

下面的几行代码导致 swift 编译器永远无法完成,即使出现编译错误:

protocol EmptyProtocol {}
class AbstractFoobar<Foo> {}
// This kills the swift compiler
final class SomeFoobar: AbstractFoobar<SomeFoobar.Foo> {
    enum Foo: EmptyProtocol {}
}

现在,我通过将一致性移动EmptyProtocol到一个扩展来解决它,这解决了这个错误!

// But this works, moving the protocol conformance out to an extension
final class SomeFoobar2: AbstractFoobar<SomeFoobar2.Foo> {
    enum Foo {}
}
extension SomeFoobar2.Foo: EmptyProtocol {}

在此处跟踪错误的状态:https ://bugs.swift.org/browse/SR-9160

4

0 回答 0