在尝试处理小型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)