web-dev-qa-db-ja.com

SILグローバル「UIEdgeInsetsZero」の逆シリアル化中に致命的なエラーが発生しました

Swift 4.2とXcode10ベータ版を使用すると、次のように記述できます。

import UIKit
let foo: UIEdgeInsets = .zero

次に、コンパイル時に致命的なエラーが発生します。

*** DESERIALIZATION FAILURE (please include this section in any bug report) ***
result is ambiguous
0  Swift                    0x000000010784fc5a PrintStackTraceSignalHandler(void*) + 42
1  Swift                    0x000000010784f066 SignalHandler(int) + 966
2  libsystem_platform.dylib 0x00007fff62a5ef5a _sigtramp + 26
3  libsystem_platform.dylib 0x0000000000000010 _sigtramp + 2639925456
4  libsystem_c.dylib        0x00007fff627fc1ae abort + 127
5  Swift                    0x0000000104cf599b Swift::ModuleFile::fatal(llvm::Error) + 1915
6  Swift                    0x0000000104d2d4d2 Swift::SILDeserializer::readGlobalVar(llvm::StringRef) + 1890
7  Swift                    0x0000000104dd7f9a Swift::SerializedSILLoader::getAllForModule(Swift::Identifier, Swift::FileUnit*) + 234
8  Swift                    0x0000000103b2adbe performCompile(Swift::CompilerInstance&, Swift::CompilerInvocation&, llvm::ArrayRef<char const*>, int&, Swift::FrontendObserver*, Swift::UnifiedStatsReporter*) + 34750
9  Swift                    0x0000000103b1f10f Swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, Swift::FrontendObserver*) + 7839
10 Swift                    0x0000000103ac8c48 main + 13144
11 libdyld.dylib            0x00007fff62750015 start + 1
12 libdyld.dylib            0x0000000000000041 start + 2643132461
Stack dump:
0.  Program arguments: /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/Swift -frontend -merge-modules -emit-module /Users/coeur/Library/Developer/Xcode/DerivedData/Edgy-gbvthkytwkmyekdynhvvbtmysdbk/Build/Intermediates.noindex/Edgy.build/Debug-iphonesimulator/Edgy.build/Objects-normal/x86_64/ViewController~partial.swiftmodule /Users/coeur/Library/Developer/Xcode/DerivedData/Edgy-gbvthkytwkmyekdynhvvbtmysdbk/Build/Intermediates.noindex/Edgy.build/Debug-iphonesimulator/Edgy.build/Objects-normal/x86_64/AppDelegate~partial.swiftmodule /Users/coeur/Library/Developer/Xcode/DerivedData/Edgy-gbvthkytwkmyekdynhvvbtmysdbk/Build/Intermediates.noindex/Edgy.build/Debug-iphonesimulator/Edgy.build/Objects-normal/x86_64/Edgy~partial.swiftmodule -parse-as-library -sil-merge-partial-modules -disable-diagnostic-passes -disable-sil-perf-optzns -target x86_64-Apple-ios12.0-simulator -enable-objc-interop -sdk /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.0.sdk -I /Users/coeur/Library/Developer/Xcode/DerivedData/Edgy-gbvthkytwkmyekdynhvvbtmysdbk/Build/Products/Debug-iphonesimulator -F /Users/coeur/Library/Developer/Xcode/DerivedData/Edgy-gbvthkytwkmyekdynhvvbtmysdbk/Build/Products/Debug-iphonesimulator -enable-testing -g -module-cache-path /Users/coeur/Library/Developer/Xcode/DerivedData/ModuleCache.noindex -Swift-version 4.2 -enforce-exclusivity=checked -Onone -D DEBUG -serialize-debugging-options -Xcc -working-directory -Xcc /Users/coeur/Development/Edgy -Xcc -I/Users/coeur/Library/Developer/Xcode/DerivedData/Edgy-gbvthkytwkmyekdynhvvbtmysdbk/Build/Intermediates.noindex/Edgy.build/Debug-iphonesimulator/Edgy.build/Swift-overrides.hmap -Xcc -iquote -Xcc /Users/coeur/Library/Developer/Xcode/DerivedData/Edgy-gbvthkytwkmyekdynhvvbtmysdbk/Build/Intermediates.noindex/Edgy.build/Debug-iphonesimulator/Edgy.build/Edgy-generated-files.hmap -Xcc -I/Users/coeur/Library/Developer/Xcode/DerivedData/Edgy-gbvthkytwkmyekdynhvvbtmysdbk/Build/Intermediates.noindex/Edgy.build/Debug-iphonesimulator/Edgy.build/Edgy-own-target-headers.hmap -Xcc -I/Users/coeur/Library/Developer/Xcode/DerivedData/Edgy-gbvthkytwkmyekdynhvvbtmysdbk/Build/Intermediates.noindex/Edgy.build/Debug-iphonesimulator/Edgy.build/Edgy-all-target-headers.hmap -Xcc -iquote -Xcc /Users/coeur/Library/Developer/Xcode/DerivedData/Edgy-gbvthkytwkmyekdynhvvbtmysdbk/Build/Intermediates.noindex/Edgy.build/Debug-iphonesimulator/Edgy.build/Edgy-project-headers.hmap -Xcc -I/Users/coeur/Library/Developer/Xcode/DerivedData/Edgy-gbvthkytwkmyekdynhvvbtmysdbk/Build/Products/Debug-iphonesimulator/include -Xcc -I/Users/coeur/Library/Developer/Xcode/DerivedData/Edgy-gbvthkytwkmyekdynhvvbtmysdbk/Build/Intermediates.noindex/Edgy.build/Debug-iphonesimulator/Edgy.build/DerivedSources/x86_64 -Xcc -I/Users/coeur/Library/Developer/Xcode/DerivedData/Edgy-gbvthkytwkmyekdynhvvbtmysdbk/Build/Intermediates.noindex/Edgy.build/Debug-iphonesimulator/Edgy.build/DerivedSources -Xcc -DDEBUG=1 -emit-module-doc-path /Users/coeur/Library/Developer/Xcode/DerivedData/Edgy-gbvthkytwkmyekdynhvvbtmysdbk/Build/Intermediates.noindex/Edgy.build/Debug-iphonesimulator/Edgy.build/Objects-normal/x86_64/Edgy.swiftdoc -emit-objc-header-path /Users/coeur/Library/Developer/Xcode/DerivedData/Edgy-gbvthkytwkmyekdynhvvbtmysdbk/Build/Intermediates.noindex/Edgy.build/Debug-iphonesimulator/Edgy.build/Objects-normal/x86_64/Edgy-Swift.h -module-name Edgy -o /Users/coeur/Library/Developer/Xcode/DerivedData/Edgy-gbvthkytwkmyekdynhvvbtmysdbk/Build/Intermediates.noindex/Edgy.build/Debug-iphonesimulator/Edgy.build/Objects-normal/x86_64/Edgy.swiftmodule 
1.  While deserializing SIL global "UIEdgeInsetsZero"
error: Abort trap: 6
11
Cœur

本日、Xcode10ベータ3で修正されました。

https://download.developer.Apple.com/Developer_Tools/Xcode_10_beta_3/Release_Notes_for_Xcode_10_beta_3.pdf

「UIEdgeInsetsのゼロプロパティを正常に使用できるようになりました。(40735990)」

3

Xcode 10ベータおよびXcode 10ベータ2で見つけた回避策は次のとおりです。 。 Xcodeを更新するまで、これをプロジェクトのどこかに一時的に含めてください。

#if Swift(>=4.2)
import UIKit.UIGeometry
extension UIEdgeInsets {
    public static let zero = UIEdgeInsets()
}
#endif

Xcode 10 beta 以降で解決された問題。

(このプルリクエストのおかげで解決が行われました: https://github.com/Apple/Swift/pull/17122

36
Cœur

これはSwiftコンパイラのバグです。現在の状態については https://bugs.Swift.org/browse/SR-7879 を参照し、詳細を入手してください。

この回避策を使用してみてください。

すべてのオカレンスを置き換える_.zero_ like

_tableView.separatorInset = .zero_

tableView.separatorInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)

ワークスペース全体で_.zero_を検索し、タイプを確認すると便利です。タイプがUIEdgeInsetsの場合は、_.zero_を置き換えるだけです。

4
Piotr Merski

Xcode 10 gotoビルド設定で[すべて]を選択し、最適化レベルを検索します
Swiftコンパイラ-コード生成最適化レベルのデバッグ:最適化なし[-Onone]で速度を最適化する[-O]の変更]それは私にとってはうまくいきました。

2
Dilip Bhuva