Skip to content

Commit 172235d

Browse files
authored
Limit usage of CoreFoundation to macOS (swiftlang#414)
1 parent fcb6fc9 commit 172235d

File tree

5 files changed

+17
-14
lines changed

5 files changed

+17
-14
lines changed

Sources/SWBCore/ProjectModel/FileTextEncoding.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public import struct Foundation.Data
1919
public import class Foundation.NSNumber
2020
public import class Foundation.NSString
2121

22-
#if canImport(CoreFoundation)
22+
#if canImport(Darwin)
2323
import class CoreFoundation.CFString
2424
import var CoreFoundation.kCFStringEncodingInvalidId
2525
import func CoreFoundation.CFStringConvertEncodingToNSStringEncoding
@@ -38,7 +38,7 @@ public import struct Foundation.StringEncodingDetectionOptionsKey
3838
// encodings (except UTF-8) DO add a BOM based on the host byte order. Be aware.
3939
public extension FileTextEncoding {
4040
init?(stringEncoding: String.Encoding) {
41-
#if canImport(CoreFoundation)
41+
#if canImport(Darwin)
4242
let cfencoding = CFStringConvertNSStringEncodingToEncoding(stringEncoding.rawValue)
4343
if cfencoding != kCFStringEncodingInvalidId, let name = CFStringConvertEncodingToIANACharSetName(cfencoding).map(String.init) {
4444
self.init(name)
@@ -50,7 +50,7 @@ public extension FileTextEncoding {
5050

5151
/// Convert the given encoding to an `NSStringEncoding`.
5252
var stringEncoding: String.Encoding? {
53-
#if canImport(CoreFoundation)
53+
#if canImport(Darwin)
5454
let cfencoding = CFStringConvertIANACharSetNameToEncoding(rawValue.asCFString)
5555
if cfencoding != kCFStringEncodingInvalidId {
5656
return String.Encoding(rawValue: CFStringConvertEncodingToNSStringEncoding(cfencoding))

Sources/SWBUtil/Lock.swift

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,20 @@
1010
//
1111
//===----------------------------------------------------------------------===//
1212

13-
private import SWBLibc
13+
#if canImport(os)
14+
public import os
15+
#elseif os(Windows)
16+
public import WinSDK
17+
#else
18+
public import SWBLibc
19+
#endif
1420

1521
// FIXME: Replace the contents of this file with the Swift standard library's Mutex type once it's available everywhere we deploy.
1622

1723
/// A more efficient lock than a DispatchQueue (esp. under contention).
1824
#if canImport(os)
19-
public import os
2025
public typealias Lock = OSAllocatedUnfairLock
2126
#else
22-
#if os(Windows)
23-
public import WinSDK
24-
#endif
2527
public final class Lock: @unchecked Sendable {
2628
#if os(Windows)
2729
@usableFromInline

Sources/SWBUtil/PropertyList.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
//
1111
//===----------------------------------------------------------------------===//
1212

13-
#if canImport(CoreFoundation)
13+
#if canImport(Darwin)
1414
import class CoreFoundation.CFBoolean
1515
import func CoreFoundation.CFBooleanGetTypeID
1616
import func CoreFoundation.CFBooleanGetValue
@@ -68,7 +68,7 @@ extension PropertyListConversionError: CustomStringConvertible {
6868
}
6969

7070
public struct OpaquePropertyListItem: Equatable, Hashable, @unchecked Sendable {
71-
#if canImport(CoreFoundation)
71+
#if canImport(Darwin)
7272
fileprivate var wrappedValue: CFTypeRef
7373

7474
fileprivate init(_ wrappedValue: CFTypeRef) {
@@ -639,7 +639,7 @@ extension PropertyListItem: Equatable {
639639

640640
private func convertToPropertyListItem(_ item: Any) -> PropertyListItem {
641641
switch(item) {
642-
#if canImport(CoreFoundation)
642+
#if canImport(Darwin)
643643
case let asBool as CFBoolean where CFGetTypeID(asBool) == CFBooleanGetTypeID():
644644
return .plBool(CFBooleanGetValue(asBool))
645645

@@ -683,7 +683,7 @@ private func convertToPropertyListItem(_ item: Any) -> PropertyListItem {
683683
}
684684
return .plDict(result)
685685

686-
#if canImport(CoreFoundation)
686+
#if canImport(Darwin)
687687
case let asCFType as CFTypeRef:
688688
return .plOpaque(.init(asCFType))
689689
#else

Sources/SWBUtil/String.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -768,7 +768,7 @@ fileprivate struct BinaryDataIterator<C, T: UnsignedInteger & FixedWidthInteger>
768768
}
769769
}
770770

771-
#if canImport(CoreFoundation)
771+
#if canImport(Darwin)
772772
public import class CoreFoundation.CFString
773773
public import enum CoreFoundation.CFStringBuiltInEncodings
774774
public import func CoreFoundation.CFStringCreateWithCString

Tests/SWBCoreTests/FileTextEncodingTests.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ import SWBTestSupport
2626
#expect(FileTextEncoding("utf8") != FileTextEncoding.utf8)
2727
}
2828

29-
@Test(.skipHostOS(.windows, "feature not available on Windows due to missing CF APIs"))
29+
@Test(.skipHostOS(.windows, "feature not available on Windows due to missing CF APIs"),
30+
.skipHostOS(.linux, "feature not available on Linux due to missing CF APIs"))
3031
func encoding() throws {
3132
#expect(FileTextEncoding.utf8.stringEncoding == String.Encoding.utf8)
3233
#expect(FileTextEncoding.utf16.stringEncoding == String.Encoding.utf16)

0 commit comments

Comments
 (0)