Skip to content

Commit 0ea82d6

Browse files
authored
Merge pull request #24534 from mikeash/swiftnativexxx-warnings-fix
[Stdlib] Fix warnings about designated initializers in SwiftNativeXXX classes.
2 parents df3da8d + 3ad6e46 commit 0ea82d6

File tree

7 files changed

+20
-9
lines changed

7 files changed

+20
-9
lines changed

stdlib/public/core/DictionaryBridging.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ final internal class _SwiftDictionaryNSEnumerator<Key: Hashable, Value>
7171
self.bridgedKeys = nil
7272
self.nextBucket = base.hashTable.startBucket
7373
self.endBucket = base.hashTable.endBucket
74+
super.init()
7475
}
7576

7677
@nonobjc
@@ -80,6 +81,7 @@ final internal class _SwiftDictionaryNSEnumerator<Key: Hashable, Value>
8081
self.bridgedKeys = deferred.bridgeKeys()
8182
self.nextBucket = base.hashTable.startBucket
8283
self.endBucket = base.hashTable.endBucket
84+
super.init()
8385
}
8486

8587
private func bridgedKey(at bucket: _HashTable.Bucket) -> AnyObject {

stdlib/public/core/Hashing.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ internal struct _UnmanagedAnyObjectArray {
7676
// renamed. The old name must not be used in the new runtime.
7777
final internal class __SwiftEmptyNSEnumerator
7878
: __SwiftNativeNSEnumerator, _NSEnumerator {
79-
internal override required init() {}
79+
internal override required init() { super.init() }
8080

8181
@objc
8282
internal func nextObject() -> AnyObject? {

stdlib/public/core/Runtime.swift.gyb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,7 @@ internal class __SwiftNativeNSArray {
271271
@inlinable
272272
@nonobjc
273273
internal init() {}
274+
// @objc public init(coder: AnyObject) {}
274275
@inlinable
275276
deinit {}
276277
}
@@ -281,6 +282,7 @@ internal class __SwiftNativeNSArray {
281282
internal class __SwiftNativeNSDictionary {
282283
@nonobjc
283284
internal init() {}
285+
@objc public init(coder: AnyObject) {}
284286
deinit {}
285287
}
286288

@@ -290,6 +292,7 @@ internal class __SwiftNativeNSDictionary {
290292
internal class __SwiftNativeNSSet {
291293
@nonobjc
292294
internal init() {}
295+
@objc public init(coder: AnyObject) {}
293296
deinit {}
294297
}
295298

@@ -298,6 +301,7 @@ internal class __SwiftNativeNSSet {
298301
internal class __SwiftNativeNSEnumerator {
299302
@nonobjc
300303
internal init() {}
304+
@objc public init(coder: AnyObject) {}
301305
deinit {}
302306
}
303307

@@ -307,6 +311,7 @@ internal class __SwiftNativeNSEnumerator {
307311
open class __SwiftNativeNSData {
308312
@inlinable
309313
@objc public init() {}
314+
@objc public init(coder: AnyObject) {}
310315
@inlinable
311316
deinit {}
312317
}

stdlib/public/core/SetBridging.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ final internal class _SwiftSetNSEnumerator<Element: Hashable>
7474
self.bridgedElements = nil
7575
self.nextBucket = base.hashTable.startBucket
7676
self.endBucket = base.hashTable.endBucket
77+
super.init()
7778
}
7879

7980
@nonobjc
@@ -83,6 +84,7 @@ final internal class _SwiftSetNSEnumerator<Element: Hashable>
8384
self.bridgedElements = deferred.bridgeElements()
8485
self.nextBucket = base.hashTable.startBucket
8586
self.endBucket = base.hashTable.endBucket
87+
super.init()
8688
}
8789

8890
private func bridgedElement(at bucket: _HashTable.Bucket) -> AnyObject {

stdlib/public/core/SwiftNativeNSArray.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ internal class __SwiftNativeNSArrayWithContiguousStorage
4747
: __SwiftNativeNSArray { // Provides NSArray inheritance and native refcounting
4848

4949
@inlinable
50-
@nonobjc internal override init() {}
50+
@nonobjc internal override init() { super.init() }
5151

5252
@inlinable
5353
deinit {}

stdlib/public/stubs/SwiftNativeNSXXXBase.mm.gyb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ SWIFT_RUNTIME_STDLIB_API
6363
@implementation __SwiftNativeNS${Class}Base
6464

6565
- (id)initWithCoder: (NSCoder *)coder {
66-
return [self init];
66+
return [super init];
6767
}
6868
- (id)retain {
6969
auto SELF = reinterpret_cast<HeapObject *>(self);

test/Interpreter/SDK/SwiftNativeNSXXXCoding.swift

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,12 @@ import StdlibUnittest
88

99
let testSuite = TestSuite("SwiftNativeNSXXXCoding")
1010

11-
// Ensure that T gracefully handles being decoded. It doesn't have to
12-
// work, just not crash.
13-
private func test<T: NSObject & NSCoding>(type: T.Type) {
11+
// Ensure that the class named `name`, subclass of T, gracefully handles
12+
// being decoded. It doesn't have to work, just not crash.
13+
private func test<T: NSObject & NSCoding>(type: T.Type, name: String) {
1414
if #available(macOS 10.13, iOS 11.0, tvOS 11.0, watchOS 4.0, *) {
15-
let swiftClassName = "__SwiftNative\(type)Base"
16-
print(swiftClassName)
1715
let archiver = NSKeyedArchiver(requiringSecureCoding: true)
18-
archiver.setClassName(swiftClassName, for: T.self)
16+
archiver.setClassName(name, for: T.self)
1917
archiver.encode(T(), forKey: "key")
2018
archiver.finishEncoding()
2119
let d = archiver.encodedData
@@ -24,6 +22,10 @@ private func test<T: NSObject & NSCoding>(type: T.Type) {
2422
_ = unarchiver.decodeObject(of: T.self, forKey: "key")
2523
}
2624
}
25+
private func test<T: NSObject & NSCoding>(type: T.Type) {
26+
test(type: type, name: "__SwiftNative\(type)Base")
27+
test(type: type, name: "Swift.__SwiftNative\(type)")
28+
}
2729

2830

2931
// Test all the classes listed in SwiftNativeNSXXXBase.mm.gyb except for

0 commit comments

Comments
 (0)