mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
The patched +[NSBundle bundleForClass:] crashes on Nil, while the original Foundation implementation returns the main bundle. Avoid the crash and pass Nil through to Foundation. This also ensures that Nil is passed through to class_getImageName rather than crashing. SR-9188 rdar://problem/45849924
26 lines
739 B
Swift
26 lines
739 B
Swift
// RUN: %target-run-simple-swift
|
|
// REQUIRES: executable_test
|
|
// REQUIRES: objc_interop
|
|
|
|
import Foundation
|
|
import StdlibUnittest
|
|
|
|
var BundleTests = TestSuite("BundleTests")
|
|
|
|
BundleTests.test("Bundle.bundleForNilClass") {
|
|
// Ensure that bundleForClass: tolerates a nil parameter. The
|
|
// Foundation implementation does. The patched version from
|
|
// ObjCRuntimeGetImageNameFromClass did not.
|
|
//
|
|
// SR-9188
|
|
typealias BundleForClassFunc =
|
|
@convention(c) (AnyObject, Selector, AnyObject?) -> Bundle
|
|
|
|
let sel = #selector(Bundle.init(for:))
|
|
let imp = unsafeBitCast(Bundle.method(for: sel), to: BundleForClassFunc.self)
|
|
let bundleForNil = imp(Bundle.self, sel, nil);
|
|
expectEqual(Bundle.main, bundleForNil)
|
|
}
|
|
|
|
runAllTests()
|