Files
swift-mirror/test/Interpreter/errors_imported.swift
Doug Gregor def86ce402 Revert "[irgen] Force emission of objc class refs for non-foreign clang objc classes whose metadata we use."
This reverts commit 8247525471. While
correct, it has uncovered several issues in existing code bases that
need to be sorted out before we can land it again.
Fixes rdar://problem/57846390.
2020-01-11 21:46:42 -08:00

56 lines
1.3 KiB
Swift

// RUN: %empty-directory(%t)
//
// RUN: %target-clang -fobjc-arc %S/Inputs/ObjCClasses/ObjCClasses.m -c -o %t/ObjCClasses.o
// RUN: %target-build-swift -I %S/Inputs/ObjCClasses/ %t/ObjCClasses.o %s -o %t/a.out
// RUN: %target-codesign %t/a.out
// RUN: %target-run %t/a.out
// REQUIRES: executable_test
// REQUIRES: objc_interop
import ObjCClasses
import Foundation
import StdlibUnittest
var ErrorHandlingTests = TestSuite("ErrorHandling")
ErrorHandlingTests.test("nil") {
do {
try TestingNSError.throwNilError()
expectUnreachable()
} catch {
expectEqual("Foundation._GenericObjCError.nilError", String(reflecting: error))
}
}
ErrorHandlingTests.test("pointerFailure") {
do {
_ = try TestingNSError.maybeThrow(true)
expectUnreachable()
} catch let error as NSError {
expectEqual("pointer error", error.domain)
}
}
ErrorHandlingTests.test("pointerSuccess") {
do {
var pointer = try TestingNSError.maybeThrow(false)
expectType(UnsafeMutableRawPointer.self, &pointer)
expectEqual(UnsafeMutablePointer(bitPattern: 42)!, pointer)
} catch {
expectUnreachableCatch(error)
}
}
ErrorHandlingTests.test("blockFailure") {
do {
_ = try TestingNSError.blockThrowError()
expectUnreachable()
} catch let error as NSError {
expectEqual("block error", error.domain)
}
}
runAllTests()