看來,這是一個編譯器錯誤。
在這種情況下,應該執行"Implicit Member Expression"。
隱式構件表達式是訪問類型的成員,例如枚舉情況或一個類方法,在一個上下文,其中類型推理可確定隱含的類型的縮寫方式。它具有以下形式:
.
成員名稱
我轉載確切這段代碼同樣的問題:
class MyClass {
class func create() -> MyClass { return MyClass() }
}
func f(arg:MyClass!, arg2:Int) { }
f(.create(), 1)
/*
Bitcast requires both operands to be pointer or neither
%.asUnsubstituted = bitcast %C4test7MyClass* %6 to i64
LLVM ERROR: Broken function found, compilation aborted!
*/
甚至與enum
:
enum MyEnum {
case Case1
}
func f(arg:MyEnum!, arg2:Int) { }
f(.Case1, 1)
/*
0 swift 0x00000001062d8a68 llvm::sys::PrintStackTrace(__sFILE*) + 40
1 swift 0x00000001062d8f54 SignalHandler(int) + 452
2 libsystem_platform.dylib 0x00007fff8a314f1a _sigtramp + 26
3 libsystem_platform.dylib 0x00007fd8085362e8 _sigtramp + 2116162536
4 swift 0x00000001056e8e98 emitApplyArgument((anonymous namespace)::IRGenSILFunction&, swift::SILValue, swift::SILParameterInfo, llvm::ArrayRef<swift::Substitution>, swift::irgen::Explosion&) + 456
5 swift 0x00000001056e5f1d swift::SILVisitor<(anonymous namespace)::IRGenSILFunction, void>::visit(swift::ValueBase*) + 34605
6 swift 0x00000001056dcbab swift::irgen::IRGenModule::emitSILFunction(swift::SILFunction*) + 9179
7 swift 0x0000000105656347 swift::irgen::IRGenModule::emitLazyDefinitions() + 199
8 swift 0x00000001056c9966 performIRGeneration(swift::IRGenOptions&, swift::Module*, swift::SILModule*, llvm::StringRef, llvm::LLVMContext&, swift::SourceFile*, unsigned int) + 2038
9 swift 0x00000001056ca2e3 swift::performIRGeneration(swift::IRGenOptions&, swift::SourceFile&, swift::SILModule*, llvm::StringRef, llvm::LLVMContext&, unsigned int) + 51
10 swift 0x000000010561f5f4 frontend_main(llvm::ArrayRef<char const*>, char const*, void*) + 5444
11 swift 0x000000010561c96d main + 1677
12 libdyld.dylib 0x00007fff90b525c9 start + 1
13 libdyld.dylib 0x0000000000000010 start + 1867176520
Stack dump:
0. Program arguments: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift -frontend -c -primary-file test.swift -target x86_64-apple-darwin14.0.0 -target-cpu core2 -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk -color-diagnostics -module-name test -o /var/folders/kb/xgglxb597sv6h8b744d5vft00000gn/T/test-4cf5cc.o
1. While emitting IR SIL function @top_level_code<unknown>:0: error: unable to execute command: Segmentation fault: 11
<unknown>:0: error: swift frontend command failed due to signal (use -v to see invocation)
*/
這兩種情況下,從函數參數中刪除!
可解決問題。
比方說:「DO NOT使用隱成員表達了隱含展開可選的上下文」
我沒有做過廣泛的研究,發現當這是固定的,但至少爲雨燕3.2的,這是沒有更長的問題 –