小编pun*_*ode的帖子

使用泛型时遇到编译器错误

在尝试处理小型Swift项目时,我经常遇到以下编译器错误:

var item : T?
    ^
LLVM ERROR: unimplemented IRGen feature! non-fixed class layout
Run Code Online (Sandbox Code Playgroud)

产生这种错误的代码非常简单:

class Foo<T> {
  var item : T?
}
Run Code Online (Sandbox Code Playgroud)

有趣的是,如果你从a class改为a struct,一切都编译得很好.

任何人都可以验证这一点,所以我可以回过头来指责一个尚未完成的编译器而不是我编译器工具链中的一些奇怪的混音?

更新:

尝试使用以下替代实现智能明显错误的编译器会导致更加搞笑的编译器错误.例如以下内容

class Foo<T> {
    // Let's try with an inner struct
    struct OptionalWrapper {
        var item: T?
    }
    var item : OptionalWrapper
    init(item: T?) { self.item = OptionalWrapper(item: item) }
}
Run Code Online (Sandbox Code Playgroud)

0  swift                    0x000000011075a608 llvm::sys::PrintStackTrace(__sFILE*) + 40
1  swift                    0x000000011075aaf4 SignalHandler(int) + 452
2  libsystem_platform.dylib 0x00007fff901095aa _sigtramp + 26 …
Run Code Online (Sandbox Code Playgroud)

generics compiler-errors swift xcode6

5
推荐指数
1
解决办法
563
查看次数

标签 统计

compiler-errors ×1

generics ×1

swift ×1

xcode6 ×1