Skip to content

Commit 2da5472

Browse files
committed
CoreFoundation: remove private headers from public directory
Clean up the long standing issue with private headers being pushed into the public headers directory. Add a private modulemap so that we can still access the private headers.
1 parent 2d0b229 commit 2da5472

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+112
-59
lines changed

CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,7 @@ add_swift_library(Foundation
290290
SWIFT_FLAGS
291291
-Xcc -F${CMAKE_CURRENT_BINARY_DIR}
292292
-DDEPLOYMENT_RUNTIME_SWIFT
293+
-Xcc -DDEPLOYMENT_RUNTIME_SWIFT
293294
$<$<BOOL:FOUNDATION_ENABLE_LIBDISPATCH>:-DDEPLOYMENT_ENABLE_LIBDISPATCH>
294295
-I;${ICU_INCLUDE_DIR}
295296
${libdispatch_cflags}
@@ -353,6 +354,7 @@ add_swift_library(FoundationNetworking
353354
${WORKAROUND_SR9995}
354355
SWIFT_FLAGS
355356
-DDEPLOYMENT_RUNTIME_SWIFT
357+
-Xcc -DDEPLOYMENT_RUNTIME_SWIFT
356358
-DNS_BUILDING_FOUNDATION_NETWORKING
357359
-Xcc -F${CMAKE_CURRENT_BINARY_DIR}
358360
${deployment_enable_libdispatch}
@@ -394,6 +396,7 @@ add_swift_executable(plutil
394396
SWIFT_FLAGS
395397
-Xcc -F${CMAKE_CURRENT_BINARY_DIR}
396398
-DDEPLOYMENT_RUNTIME_SWIFT
399+
-Xcc -DDEPLOYMENT_RUNTIME_SWIFT
397400
-I;${CMAKE_CURRENT_BINARY_DIR}/swift
398401
-I;${ICU_INCLUDE_DIR}
399402
${libdispatch_cflags}
@@ -419,6 +422,7 @@ if(ENABLE_TESTING)
419422
TestFoundation/xdgTestHelper/main.swift
420423
SWIFT_FLAGS
421424
-Xcc -F${CMAKE_CURRENT_BINARY_DIR}
425+
-Xcc -DDEPLOYMENT_RUNTIME_SWIFT
422426
-I;${CMAKE_CURRENT_BINARY_DIR}/swift
423427
-I;${ICU_INCLUDE_DIR}
424428
${libdispatch_cflags}
@@ -565,6 +569,7 @@ if(ENABLE_TESTING)
565569
${CMAKE_SOURCE_DIR}/TestFoundation/Fixtures
566570
SWIFT_FLAGS
567571
-Xcc -F${CMAKE_CURRENT_BINARY_DIR}
572+
-Xcc -DDEPLOYMENT_RUNTIME_SWIFT
568573
-I;${CMAKE_CURRENT_BINARY_DIR}/swift
569574
-I;${FOUNDATION_PATH_TO_XCTEST_BUILD}/swift
570575
-I;${ICU_INCLUDE_DIR}

CoreFoundation/Base.subproj/CFLocking.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,16 +37,17 @@ static inline CFLock_t __CFLockInit(void) { return CFLockInit; }
3737
#elif TARGET_OS_WIN32
3838

3939
#define NOMINMAX
40+
#define VC_EXTRALEAN
4041
#define WIN32_LEAN_AND_MEAN
41-
#define VCEXTRALEAN
4242
#include <Windows.h>
43+
#include <synchapi.h>
4344

4445
typedef int32_t CFLock_t;
4546
#define CFLockInit 0
4647
#define CF_LOCK_INIT_FOR_STRUCTS(X) (X = CFLockInit)
4748

4849
CF_INLINE void __CFLock(volatile CFLock_t *lock) {
49-
while (InterlockedCompareExchange((LONG volatile *)lock, ~0, 0) != 0) {
50+
while (InterlockedCompareExchange((long volatile *)lock, ~0, 0) != 0) {
5051
Sleep(0);
5152
}
5253
}
@@ -57,7 +58,7 @@ CF_INLINE void __CFUnlock(volatile CFLock_t *lock) {
5758
}
5859

5960
CF_INLINE Boolean __CFLockTry(volatile CFLock_t *lock) {
60-
return (InterlockedCompareExchange((LONG volatile *)lock, ~0, 0) == 0);
61+
return (InterlockedCompareExchange((long volatile *)lock, ~0, 0) == 0);
6162
}
6263

6364
// SPI to permit initialization of values in Swift

CoreFoundation/Base.subproj/CFPriv.h

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -492,8 +492,8 @@ void CFCharacterSetInitInlineBuffer(CFCharacterSetRef cset, CFCharacterSetInline
492492
@result true, if the value is in the character set, otherwise false.
493493
*/
494494
#if defined(CF_INLINE)
495-
CF_INLINE bool CFCharacterSetInlineBufferIsLongCharacterMember(const CFCharacterSetInlineBuffer *buffer, UTF32Char character) {
496-
bool isInverted = ((0 == (buffer->flags & kCFCharacterSetIsInverted)) ? false : true);
495+
CF_INLINE Boolean CFCharacterSetInlineBufferIsLongCharacterMember(const CFCharacterSetInlineBuffer *buffer, UTF32Char character) {
496+
Boolean isInverted = ((0 == (buffer->flags & kCFCharacterSetIsInverted)) ? FALSE : TRUE);
497497

498498
if ((character >= buffer->rangeStart) && (character < buffer->rangeLimit)) {
499499
if ((character > 0xFFFF) || (0 != (buffer->flags & kCFCharacterSetNoBitmapAvailable))) return (CFCharacterSetIsLongCharacterMember(buffer->cset, character) != 0);
@@ -569,6 +569,7 @@ CF_EXPORT CFMessagePortRef _CFMessagePortCreateLocalEx(CFAllocatorRef allocator,
569569
#if _POSIX_THREADS
570570
#include <pthread.h>
571571
#endif
572+
#include <time.h>
572573

573574
CF_INLINE CFAbsoluteTime _CFAbsoluteTimeFromFileTimeSpec(struct timespec ts) {
574575
return (CFAbsoluteTime)((CFTimeInterval)ts.tv_sec - kCFAbsoluteTimeIntervalSince1970) + (1.0e-9 * (CFTimeInterval)ts.tv_nsec);
@@ -592,10 +593,10 @@ CF_INLINE struct timespec _CFFileTimeSpecFromAbsoluteTime(CFAbsoluteTime at) {
592593
}
593594

594595
// The 'filtered' function below is preferred to this older one
595-
CF_EXPORT bool _CFPropertyListCreateSingleValue(CFAllocatorRef allocator, CFDataRef data, CFOptionFlags option, CFStringRef keyPath, CFPropertyListRef *value, CFErrorRef *error);
596+
CF_EXPORT Boolean _CFPropertyListCreateSingleValue(CFAllocatorRef allocator, CFDataRef data, CFOptionFlags option, CFStringRef keyPath, CFPropertyListRef *value, CFErrorRef *error);
596597

597598
// Returns a subset of the property list, only including the keyPaths in the CFSet. If the top level object is not a dictionary, you will get back an empty dictionary as the result.
598-
CF_EXPORT bool _CFPropertyListCreateFiltered(CFAllocatorRef allocator, CFDataRef data, CFOptionFlags option, CFSetRef keyPaths, CFPropertyListRef *value, CFErrorRef *error) API_AVAILABLE(macos(10.8), ios(6.0), watchos(2.0), tvos(9.0));
599+
CF_EXPORT Boolean _CFPropertyListCreateFiltered(CFAllocatorRef allocator, CFDataRef data, CFOptionFlags option, CFSetRef keyPaths, CFPropertyListRef *value, CFErrorRef *error) API_AVAILABLE(macos(10.8), ios(6.0), watchos(2.0), tvos(9.0));
599600

600601
// Returns a set of the keys of the top-level dictionary of a plist. Optimized for bplist (though it works with XML too). Only supports string keys.
601602
CF_EXPORT CFSetRef _CFPropertyListCopyTopLevelKeys(CFAllocatorRef allocator, CFDataRef data, CFOptionFlags option, CFErrorRef *outError) API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0), tvos(11.0));

CoreFoundation/Base.subproj/ForSwiftFoundationOnly.h

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,8 @@
7777
#endif //__GLIBC_PREREQ(2. 28)
7878
#endif // TARGET_OS_LINUX
7979

80+
#include <stdlib.h>
81+
8082

8183
_CF_EXPORT_SCOPE_BEGIN
8284

@@ -385,12 +387,12 @@ CF_EXPORT char *_Nullable *_Nonnull _CFEnviron(void);
385387
CF_EXPORT void CFLog1(CFLogLevel lev, CFStringRef message);
386388

387389
#if TARGET_OS_WIN32
388-
typedef HANDLE _CFThreadRef;
390+
typedef void *_CFThreadRef;
389391
typedef struct _CFThreadAttributes {
390-
DWORD dwSizeOfAttributes;
391-
DWORD dwThreadStackReservation;
392+
unsigned long dwSizeOfAttributes;
393+
unsigned long dwThreadStackReservation;
392394
} _CFThreadAttributes;
393-
typedef DWORD _CFThreadSpecificKey;
395+
typedef unsigned long _CFThreadSpecificKey;
394396
#elif _POSIX_THREADS
395397
typedef pthread_t _CFThreadRef;
396398
typedef pthread_attr_t _CFThreadAttributes;

CoreFoundation/Base.subproj/SwiftRuntime/CoreFoundation.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,5 @@
9696
#include <CoreFoundation/CFAttributedString.h>
9797
#include <CoreFoundation/CFNotificationCenter.h>
9898

99-
#include <CoreFoundation/ForSwiftFoundationOnly.h>
100-
10199
#endif /* ! __COREFOUNDATION_COREFOUNDATION__ */
102100

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
framework module CoreFoundation_Private [extern_c] [system] {
2+
umbrella header "ForSwiftFoundationOnly.h"
3+
export *
4+
module * {
5+
export *
6+
}
7+
}
8+

CoreFoundation/CMakeLists.txt

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,13 @@ add_framework(CoreFoundation
5555
CoreFoundation_FRAMEWORK_DIRECTORY
5656
MODULE_MAP
5757
Base.subproj/module.modulemap
58+
Base.subproj/module.private.modulemap
5859
PRIVATE_HEADERS
5960
# Base
6061
Base.subproj/CFAsmMacros.h
6162
Base.subproj/CFInternal.h
6263
Base.subproj/CFKnownLocations.h
64+
Base.subproj/CFLocking.h
6365
Base.subproj/CFLogUtilities.h
6466
Base.subproj/CFPriv.h
6567
Base.subproj/CFOverflow.h
@@ -124,30 +126,6 @@ add_framework(CoreFoundation
124126
URL.subproj/CFURLPriv.h
125127
URL.subproj/CFURLSessionInterface.h
126128
PUBLIC_HEADERS
127-
# FIXME: PrivateHeaders referenced by public headers
128-
Base.subproj/CFKnownLocations.h
129-
Base.subproj/CFLocking.h
130-
Base.subproj/CFLogUtilities.h
131-
Base.subproj/CFPriv.h
132-
Base.subproj/CFRuntime.h
133-
Base.subproj/ForFoundationOnly.h
134-
Base.subproj/ForSwiftFoundationOnly.h
135-
Locale.subproj/CFCalendar_Internal.h
136-
Locale.subproj/CFDateComponents.h
137-
Locale.subproj/CFDateInterval.h
138-
Locale.subproj/CFLocaleInternal.h
139-
Parsing.subproj/CFXMLInterface.h
140-
PlugIn.subproj/CFBundlePriv.h
141-
Stream.subproj/CFStreamPriv.h
142-
String.subproj/CFCharacterSetPriv.h
143-
String.subproj/CFRegularExpression.h
144-
String.subproj/CFRunArray.h
145-
StringEncodings.subproj/CFStringEncodingConverter.h
146-
StringEncodings.subproj/CFStringEncodingConverterExt.h
147-
URL.subproj/CFURLPriv.h
148-
URL.subproj/CFURLSessionInterface.h
149-
Locale.subproj/CFDateIntervalFormatter.h
150-
151129
# AppServices
152130
AppServices.subproj/CFNotificationCenter.h
153131
AppServices.subproj/CFUserNotification.h

CoreFoundation/Locale.subproj/CFDateIntervalFormatter.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@ CF_EXPORT void _CFDateIntervalFormatterInitializeFromCoderValues(CFDateIntervalF
7171
int64_t timeStyle,
7272
CFStringRef _Nullable dateTemplate,
7373
CFStringRef _Nullable dateTemplateFromStyles,
74-
bool modified,
75-
bool useTemplate,
74+
Boolean modified,
75+
Boolean useTemplate,
7676
CFLocaleRef _Nullable locale,
7777
CFCalendarRef _Nullable calendar,
7878
CFTimeZoneRef _Nullable timeZone);
@@ -82,8 +82,8 @@ CF_EXPORT void _CFDateIntervalFormatterCopyCoderValues(CFDateIntervalFormatterRe
8282
int64_t *timeStyle,
8383
CFStringRef _Nullable *_Nonnull dateTemplate,
8484
CFStringRef _Nullable *_Nonnull dateTemplateFromStyles,
85-
bool *modified,
86-
bool *useTemplate,
85+
Boolean *modified,
86+
Boolean *useTemplate,
8787
CFLocaleRef _Nullable *_Nonnull locale,
8888
CFCalendarRef _Nullable *_Nonnull calendar,
8989
CFTimeZoneRef _Nullable *_Nonnull timeZone);

CoreFoundation/Parsing.subproj/CFXMLInterface.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ typedef void* _CFXMLDTDPtr;
141141
typedef void* _CFXMLDTDNodePtr;
142142

143143
_CFXMLNodePtr _CFXMLNewNode(_CFXMLNamespacePtr _Nullable name_space, const char* name);
144-
_CFXMLNodePtr _CFXMLCopyNode(_CFXMLNodePtr node, bool recursive);
144+
_CFXMLNodePtr _CFXMLCopyNode(_CFXMLNodePtr node, Boolean recursive);
145145

146146
_CFXMLDocPtr _CFXMLNewDoc(const unsigned char* version);
147147
_CFXMLNodePtr _CFXMLNewProcessingInstruction(const unsigned char* name, const unsigned char* value);
@@ -175,8 +175,8 @@ void _CFXMLNodeReplaceNode(_CFXMLNodePtr node, _CFXMLNodePtr replacement);
175175

176176
_CFXMLDocPtr _Nullable _CFXMLNodeGetDocument(_CFXMLNodePtr node);
177177

178-
bool _CFXMLDocStandalone(_CFXMLDocPtr doc);
179-
void _CFXMLDocSetStandalone(_CFXMLDocPtr doc, bool standalone);
178+
Boolean _CFXMLDocStandalone(_CFXMLDocPtr doc);
179+
void _CFXMLDocSetStandalone(_CFXMLDocPtr doc, Boolean standalone);
180180
_CFXMLNodePtr _Nullable _CFXMLDocRootElement(_CFXMLDocPtr doc);
181181
void _CFXMLDocSetRootElement(_CFXMLDocPtr doc, _CFXMLNodePtr node);
182182
CFStringRef _Nullable _CFXMLDocCopyCharacterEncoding(_CFXMLDocPtr doc);
@@ -208,7 +208,7 @@ _CFXMLDocPtr _CFXMLDocPtrFromDataWithOptions(CFDataRef data, unsigned int option
208208
CFStringRef _Nullable _CFXMLNodeCopyLocalName(_CFXMLNodePtr node);
209209
CFStringRef _Nullable _CFXMLNodeCopyPrefix(_CFXMLNodePtr node);
210210

211-
bool _CFXMLDocValidate(_CFXMLDocPtr doc, CFErrorRef _Nullable * error);
211+
Boolean _CFXMLDocValidate(_CFXMLDocPtr doc, CFErrorRef _Nullable * error);
212212

213213
_CFXMLDTDPtr _CFXMLNewDTD(_CFXMLDocPtr _Nullable doc, const unsigned char* name, const unsigned char* publicID, const unsigned char* systemID);
214214
_CFXMLDTDNodePtr _Nullable _CFXMLParseDTDNode(const unsigned char* xmlString);

CoreFoundation/PlugIn.subproj/CFPlugInCOM.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,12 @@ CF_EXTERN_C_BEGIN
2020
/* The _reserved field is part of the Microsoft COM binary standard on Macintosh. */
2121
/* You can declare new C struct interfaces by defining a new struct that includes "IUNKNOWN_C_GUTS;" before the first field of the struct. */
2222

23-
#if !TARGET_OS_WIN32
23+
#if TARGET_OS_WIN32
24+
#define NOMINMAX
25+
#define VC_EXTRALEAN
26+
#define WIN32_LEAN_AND_MEAN
27+
#include <Windows.h>
28+
#else
2429
typedef SInt32 HRESULT;
2530
typedef UInt32 ULONG;
2631
typedef void *LPVOID;

CoreFoundation/cmake/modules/CoreFoundationAddFramework.cmake

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ include(CMakeParseArguments)
33

44
function(add_framework NAME)
55
set(options STATIC SHARED)
6-
set(single_value_args MODULE_MAP FRAMEWORK_DIRECTORY)
7-
set(multiple_value_args PRIVATE_HEADERS PUBLIC_HEADERS SOURCES)
6+
set(single_value_args FRAMEWORK_DIRECTORY)
7+
set(multiple_value_args MODULE_MAP PRIVATE_HEADERS PUBLIC_HEADERS SOURCES)
88
cmake_parse_arguments(AF "${options}" "${single_value_args}" "${multiple_value_args}" ${ARGN})
99

1010
set(AF_TYPE)
@@ -52,17 +52,9 @@ function(add_framework NAME)
5252
PROPERTIES
5353
LIBRARY_OUTPUT_DIRECTORY
5454
${CMAKE_BINARY_DIR}/${NAME}.framework)
55-
if("${CMAKE_C_SIMULATE_ID}" STREQUAL "MSVC")
56-
target_compile_options(${NAME}
57-
PRIVATE
58-
-Xclang;-F${CMAKE_BINARY_DIR})
59-
else()
60-
target_compile_options(${NAME}
61-
PRIVATE
62-
-F;${CMAKE_BINARY_DIR})
63-
endif()
6455
target_compile_options(${NAME}
6556
PRIVATE
57+
$<$<STREQUAL:${CMAKE_C_SIMULATE_ID},MSVC>:/clang:>-F${CMAKE_BINARY_DIR}
6658
$<$<OR:$<COMPILE_LANGUAGE:ASM>,$<COMPILE_LANGUAGE:C>>:-I;${CMAKE_BINARY_DIR}/${NAME}.framework/PrivateHeaders>)
6759
add_dependencies(${NAME} ${NAME}_POPULATE_HEADERS)
6860

Foundation/Bundle.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
//
99

1010
import CoreFoundation
11+
import CoreFoundation_Private
1112

1213
@_silgen_name("swift_getTypeContextDescriptor")
1314
private func _getTypeContextDescriptor(of cls: AnyClass) -> UnsafeRawPointer

Foundation/Data.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ internal func malloc_good_size(_ size: Int) -> Int {
2020
#endif
2121

2222
import CoreFoundation
23+
import CoreFoundation_Private
24+
#if os(Windows)
25+
import WinSDK
26+
#endif
2327

2428
internal func __NSDataInvokeDeallocatorUnmap(_ mem: UnsafeMutableRawPointer, _ length: Int) {
2529
#if os(Windows)

Foundation/DateIntervalFormatter.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
//
99

1010
import CoreFoundation
11+
import CoreFoundation_Private
1112

1213
#if _runtime(_ObjC)
1314
internal let kCFDateIntervalFormatterNoStyle = CFDateIntervalFormatterStyle.noStyle

Foundation/FileHandle.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,11 @@
88
//
99

1010
import CoreFoundation
11+
import CoreFoundation_Private
1112
import Dispatch
13+
#if os(Windows)
14+
import WinSDK
15+
#endif
1216

1317
// FileHandle has a .read(upToCount:) method. Just invoking read() will cause an ambiguity warning. Use _read instead.
1418
// Same with close()/.close().

Foundation/FileManager+Win32.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,11 @@
88
//
99

1010
import CoreFoundation
11+
import CoreFoundation_Private
1112

1213
#if os(Windows)
14+
import WinSDK
15+
1316
internal func joinPath(prefix: String, suffix: String) -> String {
1417
var pszPath: PWSTR?
1518
_ = prefix.withCString(encodedAs: UTF16.self) { prefix in

Foundation/FileManager.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@ fileprivate let UF_HIDDEN: Int32 = 1
1616
#endif
1717

1818
import CoreFoundation
19+
import CoreFoundation_Private
1920
#if os(Windows)
20-
import MSVCRT
21+
import WinSDK
2122
#endif
2223

2324
open class FileManager : NSObject {

Foundation/FileManager_XDG.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
//
99

1010
import CoreFoundation
11+
import CoreFoundation_Private
1112

1213
enum _XDGUserDirectory: String {
1314
case desktop = "DESKTOP"

Foundation/Host.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88
//
99

1010
import CoreFoundation
11+
#if os(Windows)
12+
import WinSDK
13+
#endif
1114

1215
#if os(Android)
1316
// Android Glibc differs a little with respect to the Linux Glibc.

Foundation/NSArray.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
//
99

1010
import CoreFoundation
11+
import CoreFoundation_Private
1112

1213
open class NSArray : NSObject, NSCopying, NSMutableCopying, NSSecureCoding, NSCoding, ExpressibleByArrayLiteral {
1314
private let _cfinfo = _CFInfo(typeID: CFArrayGetTypeID())

Foundation/NSAttributedString.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
//
99

1010
import CoreFoundation
11+
import CoreFoundation_Private
1112

1213
extension NSAttributedString {
1314
public struct Key: RawRepresentable, Equatable, Hashable {

Foundation/NSCFArray.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010

1111
import CoreFoundation
12+
import CoreFoundation_Private
1213

1314
internal final class _NSCFArray : NSMutableArray {
1415
deinit {

Foundation/NSCFDictionary.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010

1111
import CoreFoundation
12+
import CoreFoundation_Private
1213

1314
internal final class _NSCFDictionary : NSMutableDictionary {
1415
deinit {

0 commit comments

Comments
 (0)