Xcode10.2iOSSwift(+React Native)项目编译错误
Xcode 10.2 iOS Swift (+ React Native) project compilation error
升级到 Xcode 10.2 后,我们无法再编译项目。我们得到了这个编译错误。看起来像非常有线的 LLVM 编译器错误。据我所知,这不是 React Native 的问题,但我什至无法想象如何调试这个错误,整个互联网上都没有这方面的信息。
可能有人对此有所了解吗?或者至少如何调试它?谢谢
- Swift 4.2
- React Native 0.59.3(最新)
- Xcode 10.2
错误:
LLVM ERROR: out of memory
Stack dump:
0. Program arguments: <....>
1. While emitting IR SIL function "@$sypSgIegn_Ieg_TR".
for <<debugloc at "<compiler-generated>":0:0>>0 swift 0x000000010b99eee3 PrintStackTraceSignalHandler(void*) + 51
1 swift 0x000000010b99e6bc SignalHandler(int) + 348
2 libsystem_platform.dylib 0x00007fff697f1b3d _sigtramp + 29
3 libsystem_platform.dylib 0x00007ffee848cee0 _sigtramp + 2127147968
4 libsystem_c.dylib 0x00007fff696af1c9 abort + 127
5 swift 0x000000010b94f644 llvm::report_bad_alloc_error(char const*, bool) + 100
6 swift 0x000000010786d210 swift::irgen::CallEmission::setArgs(swift::irgen::Explosion&, bool, swift::irgen::WitnessMetadata*) + 2560
7 swift 0x0000000107a21335 (anonymous namespace)::IRGenSILFunction::visitFullApplySite(swift::FullApplySite) + 2053
8 swift 0x0000000107a016aa swift::irgen::IRGenModule::emitSILFunction(swift::SILFunction*) + 9898
9 swift 0x00000001078c0259 swift::irgen::IRGenerator::emitLazyDefinitions() + 1353
10 swift 0x00000001079e1250 performIRGeneration(swift::IRGenOptions&, swift::ModuleDecl*, std::__1::unique_ptr<swift::SILModule, std::__1::default_delete<swift::SILModule> >, llvm::StringRef, swift::PrimarySpecificPaths const&, llvm::LLVMContext&, swift::SourceFile*, llvm::GlobalVariable**) + 1232
11 swift 0x00000001078030b9 performCompile(swift::CompilerInstance&, swift::CompilerInvocation&, llvm::ArrayRef<char const*>, int&, swift::FrontendObserver*, swift::UnifiedStatsReporter*) + 49417
12 swift 0x00000001077f36de swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 6862
13 swift 0x00000001077917be main + 1246
14 libdyld.dylib 0x00007fff69606ed9 start + 1
15 libdyld.dylib 0x000000000000010f start + 2527040055
error: Abort trap: 6
不知何故是不支持语法的错误报告¯_(ツ)_/¯
具体在我们的案例中,问题出在 Swift 5 的新规则中(但我们在 Swift 4!):
In Swift 5 mode, @autoclosure parameters can no longer be forwarded to @autoclosure arguments in another function call.
所以我们改变了:
completionHandler: resolver -> completionHandler: { resolver(nil) }
当切换到 Swift 5 并且 XCode 报告时,我们发现了这个问题。然后我们通过此修复切换回 Swift 4,一切正常。
升级到 Xcode 10.2 后,我们无法再编译项目。我们得到了这个编译错误。看起来像非常有线的 LLVM 编译器错误。据我所知,这不是 React Native 的问题,但我什至无法想象如何调试这个错误,整个互联网上都没有这方面的信息。
可能有人对此有所了解吗?或者至少如何调试它?谢谢
- Swift 4.2
- React Native 0.59.3(最新)
- Xcode 10.2
错误:
LLVM ERROR: out of memory
Stack dump:
0. Program arguments: <....>
1. While emitting IR SIL function "@$sypSgIegn_Ieg_TR".
for <<debugloc at "<compiler-generated>":0:0>>0 swift 0x000000010b99eee3 PrintStackTraceSignalHandler(void*) + 51
1 swift 0x000000010b99e6bc SignalHandler(int) + 348
2 libsystem_platform.dylib 0x00007fff697f1b3d _sigtramp + 29
3 libsystem_platform.dylib 0x00007ffee848cee0 _sigtramp + 2127147968
4 libsystem_c.dylib 0x00007fff696af1c9 abort + 127
5 swift 0x000000010b94f644 llvm::report_bad_alloc_error(char const*, bool) + 100
6 swift 0x000000010786d210 swift::irgen::CallEmission::setArgs(swift::irgen::Explosion&, bool, swift::irgen::WitnessMetadata*) + 2560
7 swift 0x0000000107a21335 (anonymous namespace)::IRGenSILFunction::visitFullApplySite(swift::FullApplySite) + 2053
8 swift 0x0000000107a016aa swift::irgen::IRGenModule::emitSILFunction(swift::SILFunction*) + 9898
9 swift 0x00000001078c0259 swift::irgen::IRGenerator::emitLazyDefinitions() + 1353
10 swift 0x00000001079e1250 performIRGeneration(swift::IRGenOptions&, swift::ModuleDecl*, std::__1::unique_ptr<swift::SILModule, std::__1::default_delete<swift::SILModule> >, llvm::StringRef, swift::PrimarySpecificPaths const&, llvm::LLVMContext&, swift::SourceFile*, llvm::GlobalVariable**) + 1232
11 swift 0x00000001078030b9 performCompile(swift::CompilerInstance&, swift::CompilerInvocation&, llvm::ArrayRef<char const*>, int&, swift::FrontendObserver*, swift::UnifiedStatsReporter*) + 49417
12 swift 0x00000001077f36de swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 6862
13 swift 0x00000001077917be main + 1246
14 libdyld.dylib 0x00007fff69606ed9 start + 1
15 libdyld.dylib 0x000000000000010f start + 2527040055
error: Abort trap: 6
不知何故是不支持语法的错误报告¯_(ツ)_/¯ 具体在我们的案例中,问题出在 Swift 5 的新规则中(但我们在 Swift 4!):
In Swift 5 mode, @autoclosure parameters can no longer be forwarded to @autoclosure arguments in another function call.
所以我们改变了:
completionHandler: resolver -> completionHandler: { resolver(nil) }
当切换到 Swift 5 并且 XCode 报告时,我们发现了这个问题。然后我们通过此修复切换回 Swift 4,一切正常。