blob: b05c759e4418bd244afecb59d8738f8c7d6d87a3 [file] [log] [blame]
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -emit-sil %s | %FileCheck %s
// REQUIRES: objc_interop
sil_stage raw
import Swift
import Foundation
struct MyError: Error {}
// CHECK-LABEL: sil @cast_nserror_to_specific_error
sil @cast_nserror_to_specific_error : $@convention(thin) (@in NSError, @in NSNumber, @in NSValue) -> () {
entry(%0 : $*NSError, %1 : $*NSNumber, %2 : $*NSValue):
%f = function_ref @use : $@convention(thin) <T> (@in T) -> ()
%a = alloc_stack $MyError
// CHECK: checked_cast_addr_br {{.*}} NSError {{.*}} to MyError
checked_cast_addr_br take_always NSError in %0 : $*NSError to MyError in %a : $*MyError, yes, no
yes:
apply %f<MyError>(%a) : $@convention(thin) <T> (@in T) -> ()
br done
no:
br done
done:
dealloc_stack %a : $*MyError
return undef : $()
}
sil @use : $@convention(thin) <T> (@in T) -> ()