Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Swift 5.3 Compiler Crash for TableView Getter

while doing xcodebuild, compiler is getting crashed at below first line where the tableView was declared.

var tableView: UITableView? {
    get {
        var table: UIView? = superview
        while !(table is UITableView) && table != nil {
            table = table?.superview
        }
        return table as? UITableView
    }
}

Here is the stack trace for the compiler crash

2. Apple Swift version 5.3 (swiftlang-1200.0.28.1 clang-1200.0.30.1)
3.  While evaluating request ExecuteSILPipelineRequest(Run pipelines { EarlyModulePasses, HighLevel+EarlyLoopOpt, MidModulePasses+StackPromote, MidLevel, ClosureSpecialize, LowLevel, LateLoopOpt, SIL Debug Info Generator } on SIL for TestApp.TestApp)
4.  While running pass #835 SILFunctionTransform "SimplifyCFG" on SILFunction "@$s10TestApp31EditProfileAboutMeTableViewCellC05tableH0So07UITableH0CSgvg".
 for getter for tableView (at /Users/madhu/Downloads/Agent/_work/3/s/TestApp/MoreTab/Views/EditProfileAboutMeTableViewCell.swift:26:9)
0  swift                    0x0000000104b05a85 llvm::sys::PrintStackTrace(llvm::raw_ostream&) + 37
1  swift                    0x0000000104b04a85 llvm::sys::RunSignalHandlers() + 85
2  swift                    0x0000000104b0603f SignalHandler(int) + 111
3  libsystem_platform.dylib 0x00007fff6b2f8d7d _sigtramp + 29
4  libsystem_platform.dylib 0x0000000106d58400 _sigtramp + 18446603343127508640
5  swift                    0x0000000100ef207a (anonymous namespace)::SimplifyCFG::simplifyBlocks() + 2458
6  swift                    0x0000000100eea847 (anonymous namespace)::SimplifyCFG::run() + 119
7  swift                    0x0000000100eea79a (anonymous namespace)::SimplifyCFGPass::run() + 890
8  swift                    0x0000000100e0e97b swift::SILPassManager::runFunctionPasses(unsigned int, unsigned int) + 4299
9  swift                    0x0000000100e0ad5a swift::SILPassManager::executePassPipelinePlan(swift::SILPassPipelinePlan const&) + 138
10 swift                    0x0000000100e24bfc swift::SimpleRequest<swift::ExecuteSILPipelineRequest, std::__1::tuple<> (swift::SILPipelineExecutionDescriptor), (swift::RequestFlags)1>::evaluateRequest(swift::ExecuteSILPipelineRequest const&, swift::Evaluator&) + 60
11 swift                    0x0000000100e13155 llvm::Expected<swift::ExecuteSILPipelineRequest::OutputType> swift::Evaluator::getResultUncached<swift::ExecuteSILPipelineRequest>(swift::ExecuteSILPipelineRequest const&) + 1045
12 swift                    0x0000000100e163b9 swift::runSILOptimizationPasses(swift::SILModule&) + 425
13 swift                    0x00000001007aa14e swift::CompilerInstance::performSILProcessing(swift::SILModule*) + 1358
14 swift                    0x000000010067ccd8 performCompileStepsPostSILGen(swift::CompilerInstance&, swift::CompilerInvocation const&, std::__1::unique_ptr<swift::SILModule, std::__1::default_delete<swift::SILModule> >, llvm::PointerUnion<swift::ModuleDecl*, swift::SourceFile*>, swift::PrimarySpecificPaths const&, int&, swift::FrontendObserver*) + 1288
15 swift                    0x000000010066cf98 swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 20712
16 swift                    0x00000001005ee277 main + 1255
17 libdyld.dylib            0x00007fff6b0ca851 start + 1
18 libdyld.dylib            0x0000000000000161 start + 18446603338720172305
like image 492
Madhu Avinash Avatar asked Sep 07 '20 13:09

Madhu Avinash


1 Answers

I ran into the same issue with very similar code for finding a UITableViewCell. The fix for me was to use a temporary variable in the while loop like so:

var tableView: UITableView? {
    get {
        var table: UIView? = superview
        while !(table is UITableView) && table != nil {
            let newSuperview = table?.superview
            table = newSuperview
        }
        return table as? UITableView
    }
}
like image 157
Tom King Avatar answered Nov 05 '22 12:11

Tom King