From efc2610a90f9940219b85c78224c745d146630e4 Mon Sep 17 00:00:00 2001 From: Jairon Terrero Date: Thu, 6 Nov 2025 12:41:41 -0700 Subject: [PATCH 1/2] refactor: Scope Dispatch imports --- GRDB/Core/Configuration.swift | 3 ++- GRDB/Core/DatabasePool.swift | 2 +- GRDB/Core/DatabaseReader.swift | 2 +- GRDB/Core/DatabaseSnapshot.swift | 2 +- GRDB/Core/DatabaseWriter.swift | 2 +- GRDB/Core/DispatchQueueActor.swift | 4 +++- GRDB/Core/SchedulingWatchdog.swift | 3 ++- GRDB/Utils/Pool.swift | 6 +++++- GRDB/Utils/ReadWriteLock.swift | 2 +- GRDB/Utils/Utils.swift | 3 ++- GRDB/ValueObservation/ValueObservation.swift | 1 - GRDB/ValueObservation/ValueObservationScheduler.swift | 2 +- Tests/GRDBTests/DatabasePoolConcurrencyTests.swift | 3 ++- Tests/GRDBTests/DatabaseQueueTests.swift | 6 +++++- Tests/GRDBTests/ValueObservationPrintTests.swift | 2 +- Tests/GRDBTests/ValueObservationRecorderTests.swift | 2 +- Tests/GRDBTests/ValueObservationTests.swift | 2 +- 17 files changed, 30 insertions(+), 17 deletions(-) diff --git a/GRDB/Core/Configuration.swift b/GRDB/Core/Configuration.swift index 933fb9c2b8..28f3318d10 100644 --- a/GRDB/Core/Configuration.swift +++ b/GRDB/Core/Configuration.swift @@ -13,7 +13,8 @@ import GRDBSQLite #if !canImport(Darwin) @preconcurrency #endif -import Dispatch +import struct Dispatch.DispatchQoS +import class Dispatch.DispatchQueue import Foundation public struct Configuration: Sendable { diff --git a/GRDB/Core/DatabasePool.swift b/GRDB/Core/DatabasePool.swift index 08f4c26106..1f3d214109 100644 --- a/GRDB/Core/DatabasePool.swift +++ b/GRDB/Core/DatabasePool.swift @@ -1,4 +1,4 @@ -import Dispatch + import Foundation #if os(iOS) import UIKit diff --git a/GRDB/Core/DatabaseReader.swift b/GRDB/Core/DatabaseReader.swift index ef86b3e5db..b448c505d1 100644 --- a/GRDB/Core/DatabaseReader.swift +++ b/GRDB/Core/DatabaseReader.swift @@ -1,7 +1,7 @@ #if canImport(Combine) import Combine #endif -import Dispatch +import class Dispatch.DispatchQueue /// A type that reads from an SQLite database. /// diff --git a/GRDB/Core/DatabaseSnapshot.swift b/GRDB/Core/DatabaseSnapshot.swift index 5d6370736b..fa5db923af 100644 --- a/GRDB/Core/DatabaseSnapshot.swift +++ b/GRDB/Core/DatabaseSnapshot.swift @@ -1,4 +1,4 @@ -import Dispatch + /// A database connection that serializes accesses to an unchanging /// database content, as it existed at the moment the snapshot was created. diff --git a/GRDB/Core/DatabaseWriter.swift b/GRDB/Core/DatabaseWriter.swift index 59fe6ff5fd..1232db97c7 100644 --- a/GRDB/Core/DatabaseWriter.swift +++ b/GRDB/Core/DatabaseWriter.swift @@ -1,7 +1,7 @@ #if canImport(Combine) import Combine #endif -import Dispatch +import class Dispatch.DispatchQueue /// A type that writes into an SQLite database. /// diff --git a/GRDB/Core/DispatchQueueActor.swift b/GRDB/Core/DispatchQueueActor.swift index 3a51d8897f..b718058084 100644 --- a/GRDB/Core/DispatchQueueActor.swift +++ b/GRDB/Core/DispatchQueueActor.swift @@ -1,4 +1,6 @@ -import Dispatch +import class Dispatch.DispatchQueue +import struct Dispatch.DispatchWorkItemFlags +import func Dispatch.dispatchPrecondition /// An actor that runs in a DispatchQueue. /// diff --git a/GRDB/Core/SchedulingWatchdog.swift b/GRDB/Core/SchedulingWatchdog.swift index dfbdfdace0..dea4280b1e 100644 --- a/GRDB/Core/SchedulingWatchdog.swift +++ b/GRDB/Core/SchedulingWatchdog.swift @@ -1,7 +1,8 @@ #if !canImport(Darwin) @preconcurrency #endif -import Dispatch +import class Dispatch.DispatchSpecificKey +import class Dispatch.DispatchQueue /// SchedulingWatchdog makes sure that databases connections are used on correct /// dispatch queues, and warns the user with a fatal error whenever she misuses diff --git a/GRDB/Utils/Pool.swift b/GRDB/Utils/Pool.swift index e0c8d17829..3fe8cf5020 100644 --- a/GRDB/Utils/Pool.swift +++ b/GRDB/Utils/Pool.swift @@ -1,4 +1,8 @@ -import Dispatch +import class Dispatch.DispatchSemaphore +import class Dispatch.DispatchGroup +import class Dispatch.DispatchQueue +import struct Dispatch.DispatchQoS +import struct Dispatch.DispatchWorkItemFlags /// A Pool maintains a set of elements that are built them on demand. A pool has /// a maximum number of elements. diff --git a/GRDB/Utils/ReadWriteLock.swift b/GRDB/Utils/ReadWriteLock.swift index 85f191efb8..7839a17627 100644 --- a/GRDB/Utils/ReadWriteLock.swift +++ b/GRDB/Utils/ReadWriteLock.swift @@ -1,4 +1,4 @@ -import Dispatch +import class Dispatch.DispatchQueue /// A ReadWriteLock grants multiple readers and single-writer guarantees on /// a value. It is backed by a concurrent DispatchQueue. diff --git a/GRDB/Utils/Utils.swift b/GRDB/Utils/Utils.swift index 47bb3a16ca..8237f51451 100644 --- a/GRDB/Utils/Utils.swift +++ b/GRDB/Utils/Utils.swift @@ -1,5 +1,6 @@ #if !canImport(Darwin) -@preconcurrency import Dispatch +@preconcurrency import class Dispatch.DispatchSpecificKey +@preconcurrency import class Dispatch.DispatchQueue #endif import Foundation diff --git a/GRDB/ValueObservation/ValueObservation.swift b/GRDB/ValueObservation/ValueObservation.swift index 642c2465bf..512c527e97 100644 --- a/GRDB/ValueObservation/ValueObservation.swift +++ b/GRDB/ValueObservation/ValueObservation.swift @@ -1,7 +1,6 @@ #if canImport(Combine) import Combine #endif -import Dispatch import Foundation public struct ValueObservation: Sendable { diff --git a/GRDB/ValueObservation/ValueObservationScheduler.swift b/GRDB/ValueObservation/ValueObservationScheduler.swift index 168c7c7062..7e47fa3fca 100644 --- a/GRDB/ValueObservation/ValueObservationScheduler.swift +++ b/GRDB/ValueObservation/ValueObservationScheduler.swift @@ -1,4 +1,4 @@ -import Dispatch +import class Dispatch.DispatchQueue import Foundation /// A type that determines when `ValueObservation` notifies its fresh values. diff --git a/Tests/GRDBTests/DatabasePoolConcurrencyTests.swift b/Tests/GRDBTests/DatabasePoolConcurrencyTests.swift index 7d2478545b..90e78168c8 100644 --- a/Tests/GRDBTests/DatabasePoolConcurrencyTests.swift +++ b/Tests/GRDBTests/DatabasePoolConcurrencyTests.swift @@ -1,5 +1,6 @@ import XCTest -import Dispatch +import class Dispatch.DispatchSemaphore +import class Dispatch.DispatchQueue import Foundation @testable import GRDB diff --git a/Tests/GRDBTests/DatabaseQueueTests.swift b/Tests/GRDBTests/DatabaseQueueTests.swift index c22be83261..13b6b645c9 100644 --- a/Tests/GRDBTests/DatabaseQueueTests.swift +++ b/Tests/GRDBTests/DatabaseQueueTests.swift @@ -1,5 +1,9 @@ import XCTest -import Dispatch +import class Dispatch.DispatchQueue +import struct Dispatch.DispatchQoS +import func Dispatch.dispatchPrecondition +import func Dispatch.__dispatch_get_global_queue +import func Dispatch.__dispatch_queue_get_label import GRDB class DatabaseQueueTests: GRDBTestCase { diff --git a/Tests/GRDBTests/ValueObservationPrintTests.swift b/Tests/GRDBTests/ValueObservationPrintTests.swift index 149fafb221..9598c15477 100644 --- a/Tests/GRDBTests/ValueObservationPrintTests.swift +++ b/Tests/GRDBTests/ValueObservationPrintTests.swift @@ -1,5 +1,5 @@ import XCTest -import Dispatch +import class Dispatch.DispatchQueue @testable import GRDB class ValueObservationPrintTests: GRDBTestCase { diff --git a/Tests/GRDBTests/ValueObservationRecorderTests.swift b/Tests/GRDBTests/ValueObservationRecorderTests.swift index 4b8e8a2ae0..d95cf7b78a 100644 --- a/Tests/GRDBTests/ValueObservationRecorderTests.swift +++ b/Tests/GRDBTests/ValueObservationRecorderTests.swift @@ -1,4 +1,4 @@ -import Dispatch +import class Dispatch.DispatchQueue import XCTest class ValueObservationRecorderTests: FailureTestCase { diff --git a/Tests/GRDBTests/ValueObservationTests.swift b/Tests/GRDBTests/ValueObservationTests.swift index 6134d8453b..f80e0e8061 100644 --- a/Tests/GRDBTests/ValueObservationTests.swift +++ b/Tests/GRDBTests/ValueObservationTests.swift @@ -1,5 +1,5 @@ import XCTest -import Dispatch +import class Dispatch.DispatchQueue @testable import GRDB class ValueObservationTests: GRDBTestCase { From 2a0fcc61fd7bdddabbfe5486e219cce0c6bf3110 Mon Sep 17 00:00:00 2001 From: Jairon Terrero Date: Thu, 6 Nov 2025 14:34:38 -0700 Subject: [PATCH 2/2] refactor: Scope Foundation imports --- GRDB/Core/Configuration.swift | 2 +- GRDB/Core/Database+Statements.swift | 2 +- GRDB/Core/Database.swift | 6 +++++- GRDB/Core/DatabaseCollation.swift | 2 +- GRDB/Core/DatabaseError.swift | 4 +++- GRDB/Core/DatabasePool.swift | 4 +++- GRDB/Core/DatabaseQueue.swift | 3 ++- GRDB/Core/DatabaseReader.swift | 3 ++- GRDB/Core/DatabaseRegionObservation.swift | 2 +- GRDB/Core/DatabaseValue.swift | 2 +- GRDB/Core/DatabaseValueConvertible.swift | 3 ++- GRDB/Core/DatabaseWriter.swift | 2 +- GRDB/Core/Row.swift | 2 +- GRDB/Core/RowAdapter.swift | 2 +- GRDB/Core/SerializedDatabase.swift | 2 +- GRDB/Core/Statement.swift | 2 +- GRDB/Core/Support/Foundation/Data.swift | 2 +- .../Core/Support/Foundation/DatabaseDateComponents.swift | 3 ++- .../DatabaseValueConvertible+ReferenceConvertible.swift | 2 +- GRDB/Core/Support/Foundation/Date.swift | 8 +++++++- GRDB/Core/Support/Foundation/Decimal.swift | 4 +++- GRDB/Core/Support/Foundation/NSData.swift | 3 ++- GRDB/Core/Support/Foundation/NSNull.swift | 2 +- GRDB/Core/Support/Foundation/NSNumber.swift | 7 ++++++- GRDB/Core/Support/Foundation/NSString.swift | 2 +- GRDB/Core/Support/Foundation/SQLiteDateParser.swift | 4 +++- GRDB/Core/Support/Foundation/URL.swift | 3 ++- GRDB/Core/Support/Foundation/UUID.swift | 5 ++++- .../DatabaseValueConvertible+Decodable.swift | 2 +- .../DatabaseValueConvertible+Encodable.swift | 2 +- GRDB/Core/TransactionClock.swift | 2 +- GRDB/Dump/Database+Dump.swift | 2 +- GRDB/Dump/DumpFormats/DebugDumpFormat.swift | 4 +++- GRDB/Dump/DumpFormats/JSONDumpFormat.swift | 3 ++- GRDB/Dump/DumpFormats/LineDumpFormat.swift | 2 +- GRDB/Dump/DumpFormats/ListDumpFormat.swift | 2 +- GRDB/FTS/FTS5.swift | 2 +- GRDB/FTS/FTS5Tokenizer.swift | 2 +- GRDB/FTS/FTS5WrapperTokenizer.swift | 2 +- GRDB/Migration/DatabaseMigrator.swift | 6 +++++- .../QueryInterface/Request/Association/Association.swift | 2 +- .../Request/Association/AssociationAggregate.swift | 2 +- GRDB/QueryInterface/Request/RequestProtocols.swift | 5 +++-- GRDB/Record/EncodableRecord+Encodable.swift | 5 ++++- GRDB/Record/EncodableRecord.swift | 9 ++++++++- GRDB/Record/FetchableRecord+Decodable.swift | 5 ++++- GRDB/Record/FetchableRecord.swift | 5 ++++- GRDB/Record/TableRecord.swift | 3 ++- GRDB/Utils/Inflections.swift | 5 ++++- GRDB/Utils/Mutex.swift | 2 +- GRDB/Utils/OnDemandFuture.swift | 2 +- GRDB/Utils/ReceiveValuesOn.swift | 2 +- GRDB/Utils/Utils.swift | 5 ++++- .../Observers/ValueConcurrentObserver.swift | 3 ++- .../Observers/ValueWriteOnlyObserver.swift | 3 ++- GRDB/ValueObservation/SharedValueObservation.swift | 2 +- GRDB/ValueObservation/ValueObservation.swift | 2 +- GRDB/ValueObservation/ValueObservationScheduler.swift | 2 +- Package.swift | 2 +- Tests/CombineExpectations/RecordingError.swift | 2 +- Tests/GRDBCombineTests/Support.swift | 2 +- Tests/GRDBTests/AsyncSemaphore.swift | 2 +- .../GRDBTests/DatabaseColumnEncodingStrategyTests.swift | 2 +- Tests/GRDBTests/DatabaseDataDecodingStrategyTests.swift | 2 +- Tests/GRDBTests/DatabaseDataEncodingStrategyTests.swift | 2 +- Tests/GRDBTests/DatabaseDateDecodingStrategyTests.swift | 2 +- Tests/GRDBTests/DatabaseDateEncodingStrategyTests.swift | 2 +- Tests/GRDBTests/DatabasePoolConcurrencyTests.swift | 2 +- Tests/GRDBTests/DatabaseUUIDEncodingStrategyTests.swift | 2 +- .../DatabaseValueConvertibleEncodableTests.swift | 2 +- Tests/GRDBTests/FTS5CustomTokenizerTests.swift | 2 +- Tests/GRDBTests/FTS5WrapperTokenizerTests.swift | 2 +- Tests/GRDBTests/FetchableRecordDecodableTests.swift | 2 +- Tests/GRDBTests/FoundationUUIDTests.swift | 2 +- Tests/GRDBTests/GRDBTestCase.swift | 2 +- .../MutablePersistableRecordEncodableTests.swift | 2 +- Tests/GRDBTests/Mutex.swift | 2 +- Tests/Performance/GRDBPerformance/Generation.swift | 2 +- 78 files changed, 144 insertions(+), 79 deletions(-) diff --git a/GRDB/Core/Configuration.swift b/GRDB/Core/Configuration.swift index 28f3318d10..daf5727624 100644 --- a/GRDB/Core/Configuration.swift +++ b/GRDB/Core/Configuration.swift @@ -15,7 +15,7 @@ import GRDBSQLite #endif import struct Dispatch.DispatchQoS import class Dispatch.DispatchQueue -import Foundation + public struct Configuration: Sendable { diff --git a/GRDB/Core/Database+Statements.swift b/GRDB/Core/Database+Statements.swift index 34a362b9dc..f679d7ec93 100644 --- a/GRDB/Core/Database+Statements.swift +++ b/GRDB/Core/Database+Statements.swift @@ -10,7 +10,7 @@ import SQLite3 import GRDBSQLite #endif -import Foundation + extension Database { diff --git a/GRDB/Core/Database.swift b/GRDB/Core/Database.swift index 2614602ddd..8b765bea13 100644 --- a/GRDB/Core/Database.swift +++ b/GRDB/Core/Database.swift @@ -10,7 +10,11 @@ import SQLite3 import GRDBSQLite #endif -import Foundation +import struct Foundation.Date +import class Foundation.FileManager +import struct Foundation.URL +import struct Foundation.TimeInterval +import struct Foundation.Notification /// A raw SQLite connection, suitable for the SQLite C API. public typealias SQLiteConnection = OpaquePointer diff --git a/GRDB/Core/DatabaseCollation.swift b/GRDB/Core/DatabaseCollation.swift index af59112bab..c20990eff0 100644 --- a/GRDB/Core/DatabaseCollation.swift +++ b/GRDB/Core/DatabaseCollation.swift @@ -10,7 +10,7 @@ import SQLite3 import GRDBSQLite #endif -import Foundation +import enum Foundation.ComparisonResult /// `DatabaseCollation` is a custom string comparison function used by SQLite. /// diff --git a/GRDB/Core/DatabaseError.swift b/GRDB/Core/DatabaseError.swift index 78151bfca8..6317501cf1 100644 --- a/GRDB/Core/DatabaseError.swift +++ b/GRDB/Core/DatabaseError.swift @@ -10,7 +10,9 @@ import SQLite3 import GRDBSQLite #endif -import Foundation +import protocol Foundation.CustomNSError +import var Foundation.NSLocalizedDescriptionKey +import var Foundation.NSLocalizedFailureReasonErrorKey /// An SQLite result code. /// diff --git a/GRDB/Core/DatabasePool.swift b/GRDB/Core/DatabasePool.swift index 1f3d214109..de935558e4 100644 --- a/GRDB/Core/DatabasePool.swift +++ b/GRDB/Core/DatabasePool.swift @@ -1,5 +1,7 @@ -import Foundation +import protocol Foundation.NSObjectProtocol +import class Foundation.NotificationCenter +import class Foundation.DispatchSemaphore #if os(iOS) import UIKit #endif diff --git a/GRDB/Core/DatabaseQueue.swift b/GRDB/Core/DatabaseQueue.swift index b8f32961cd..888dc6986c 100644 --- a/GRDB/Core/DatabaseQueue.swift +++ b/GRDB/Core/DatabaseQueue.swift @@ -1,4 +1,5 @@ -import Foundation +import protocol Foundation.NSObjectProtocol +import class Foundation.NotificationCenter #if os(iOS) import UIKit diff --git a/GRDB/Core/DatabaseReader.swift b/GRDB/Core/DatabaseReader.swift index b448c505d1..32aad7c98f 100644 --- a/GRDB/Core/DatabaseReader.swift +++ b/GRDB/Core/DatabaseReader.swift @@ -1,7 +1,8 @@ #if canImport(Combine) import Combine -#endif import class Dispatch.DispatchQueue +#endif + /// A type that reads from an SQLite database. /// diff --git a/GRDB/Core/DatabaseRegionObservation.swift b/GRDB/Core/DatabaseRegionObservation.swift index 246e3627a3..e371c20f1a 100644 --- a/GRDB/Core/DatabaseRegionObservation.swift +++ b/GRDB/Core/DatabaseRegionObservation.swift @@ -1,7 +1,7 @@ #if canImport(Combine) import Combine #endif -import Foundation +import class Foundation.NSRecursiveLock public struct DatabaseRegionObservation: Sendable { /// A closure that is evaluated when the observation starts, and returns diff --git a/GRDB/Core/DatabaseValue.swift b/GRDB/Core/DatabaseValue.swift index 2459e3ba75..8c039c21de 100644 --- a/GRDB/Core/DatabaseValue.swift +++ b/GRDB/Core/DatabaseValue.swift @@ -10,7 +10,7 @@ import SQLite3 import GRDBSQLite #endif -import Foundation +import struct Foundation.Data /// A value stored in a database table. /// diff --git a/GRDB/Core/DatabaseValueConvertible.swift b/GRDB/Core/DatabaseValueConvertible.swift index 941e593759..7b0da8d761 100644 --- a/GRDB/Core/DatabaseValueConvertible.swift +++ b/GRDB/Core/DatabaseValueConvertible.swift @@ -1,4 +1,5 @@ -import Foundation +import class Foundation.JSONDecoder +import class Foundation.JSONEncoder // Standard collections `Array`, `Set`, and `Dictionary` do not conform to // `DatabaseValueConvertible`, on purpose. diff --git a/GRDB/Core/DatabaseWriter.swift b/GRDB/Core/DatabaseWriter.swift index 1232db97c7..58fa7f86d3 100644 --- a/GRDB/Core/DatabaseWriter.swift +++ b/GRDB/Core/DatabaseWriter.swift @@ -1,7 +1,7 @@ #if canImport(Combine) import Combine -#endif import class Dispatch.DispatchQueue +#endif /// A type that writes into an SQLite database. /// diff --git a/GRDB/Core/Row.swift b/GRDB/Core/Row.swift index c4b639ae79..9ff37394fd 100644 --- a/GRDB/Core/Row.swift +++ b/GRDB/Core/Row.swift @@ -10,7 +10,7 @@ import SQLite3 import GRDBSQLite #endif -import Foundation +import struct Foundation.Data /// A database row. /// diff --git a/GRDB/Core/RowAdapter.swift b/GRDB/Core/RowAdapter.swift index 2c4b760f1e..495d8ed293 100644 --- a/GRDB/Core/RowAdapter.swift +++ b/GRDB/Core/RowAdapter.swift @@ -1,4 +1,4 @@ -import Foundation +import struct Foundation.Data /// Returns an array of row adapters that split a row according to the /// provided numbers of columns. diff --git a/GRDB/Core/SerializedDatabase.swift b/GRDB/Core/SerializedDatabase.swift index 920d279d00..6a600224bd 100644 --- a/GRDB/Core/SerializedDatabase.swift +++ b/GRDB/Core/SerializedDatabase.swift @@ -1,4 +1,4 @@ -import Foundation +import class Foundation.DispatchQueue /// A class that serializes accesses to an SQLite connection. final class SerializedDatabase { diff --git a/GRDB/Core/Statement.swift b/GRDB/Core/Statement.swift index 6bf3a89ad4..53d8d5c469 100644 --- a/GRDB/Core/Statement.swift +++ b/GRDB/Core/Statement.swift @@ -10,7 +10,7 @@ import SQLite3 import GRDBSQLite #endif -import Foundation +import struct Foundation.CharacterSet /// A raw SQLite statement, suitable for the SQLite C API. public typealias SQLiteStatement = OpaquePointer diff --git a/GRDB/Core/Support/Foundation/Data.swift b/GRDB/Core/Support/Foundation/Data.swift index fd7d714a01..b772d997ad 100644 --- a/GRDB/Core/Support/Foundation/Data.swift +++ b/GRDB/Core/Support/Foundation/Data.swift @@ -10,7 +10,7 @@ import SQLite3 import GRDBSQLite #endif -import Foundation +import struct Foundation.Data /// Data is convertible to and from DatabaseValue. extension Data: DatabaseValueConvertible, StatementColumnConvertible { diff --git a/GRDB/Core/Support/Foundation/DatabaseDateComponents.swift b/GRDB/Core/Support/Foundation/DatabaseDateComponents.swift index d857ecbc24..1696eb2d60 100644 --- a/GRDB/Core/Support/Foundation/DatabaseDateComponents.swift +++ b/GRDB/Core/Support/Foundation/DatabaseDateComponents.swift @@ -10,7 +10,8 @@ import SQLite3 import GRDBSQLite #endif -import Foundation +import struct Foundation.DateComponents +import func Foundation.round /// A database value that holds date components. public struct DatabaseDateComponents: Sendable { diff --git a/GRDB/Core/Support/Foundation/DatabaseValueConvertible+ReferenceConvertible.swift b/GRDB/Core/Support/Foundation/DatabaseValueConvertible+ReferenceConvertible.swift index 9afc833632..e72d624bdf 100644 --- a/GRDB/Core/Support/Foundation/DatabaseValueConvertible+ReferenceConvertible.swift +++ b/GRDB/Core/Support/Foundation/DatabaseValueConvertible+ReferenceConvertible.swift @@ -1,4 +1,4 @@ -import Foundation +import protocol Foundation.ReferenceConvertible /// DatabaseValueConvertible is free for ReferenceConvertible types whose /// ReferenceType is itself DatabaseValueConvertible. diff --git a/GRDB/Core/Support/Foundation/Date.swift b/GRDB/Core/Support/Foundation/Date.swift index dadc00fd65..d0b3a6135e 100644 --- a/GRDB/Core/Support/Foundation/Date.swift +++ b/GRDB/Core/Support/Foundation/Date.swift @@ -10,7 +10,13 @@ import SQLite3 import GRDBSQLite #endif -import Foundation +import class Foundation.NSDate +import struct Foundation.Date +import struct Foundation.DateComponents +import class Foundation.DateFormatter +import struct Foundation.Calendar +import struct Foundation.Locale +import struct Foundation.TimeZone #if !os(Linux) /// NSDate is stored in the database using the format diff --git a/GRDB/Core/Support/Foundation/Decimal.swift b/GRDB/Core/Support/Foundation/Decimal.swift index 70d84f3ab7..ae5a520648 100644 --- a/GRDB/Core/Support/Foundation/Decimal.swift +++ b/GRDB/Core/Support/Foundation/Decimal.swift @@ -11,7 +11,9 @@ import SQLite3 import GRDBSQLite #endif -import Foundation +import struct Foundation.Decimal +import class Foundation.NSDecimalNumber +import struct Foundation.Locale /// Decimal adopts DatabaseValueConvertible extension Decimal: DatabaseValueConvertible { diff --git a/GRDB/Core/Support/Foundation/NSData.swift b/GRDB/Core/Support/Foundation/NSData.swift index 72861ac02e..5c6ceffa51 100644 --- a/GRDB/Core/Support/Foundation/NSData.swift +++ b/GRDB/Core/Support/Foundation/NSData.swift @@ -1,5 +1,6 @@ #if !os(Linux) -import Foundation +import class Foundation.NSData +import struct Foundation.Data /// NSData is convertible to and from DatabaseValue. extension NSData: DatabaseValueConvertible { diff --git a/GRDB/Core/Support/Foundation/NSNull.swift b/GRDB/Core/Support/Foundation/NSNull.swift index f4683f52a9..76ca384a7e 100644 --- a/GRDB/Core/Support/Foundation/NSNull.swift +++ b/GRDB/Core/Support/Foundation/NSNull.swift @@ -1,4 +1,4 @@ -import Foundation +import class Foundation.NSNull /// NSNull adopts DatabaseValueConvertible extension NSNull: DatabaseValueConvertible { diff --git a/GRDB/Core/Support/Foundation/NSNumber.swift b/GRDB/Core/Support/Foundation/NSNumber.swift index 1c5778c19e..655b7eea76 100644 --- a/GRDB/Core/Support/Foundation/NSNumber.swift +++ b/GRDB/Core/Support/Foundation/NSNumber.swift @@ -1,5 +1,10 @@ #if !os(Linux) && !os(Windows) -import Foundation +import class Foundation.NSDecimalNumberHandler +import class Foundation.NSNumber +import class Foundation.NSDecimalNumber +import struct Foundation.Decimal +import struct Foundation.Locale + private let integerRoundingBehavior = NSDecimalNumberHandler( roundingMode: .plain, diff --git a/GRDB/Core/Support/Foundation/NSString.swift b/GRDB/Core/Support/Foundation/NSString.swift index acddddb35d..ad2c475660 100644 --- a/GRDB/Core/Support/Foundation/NSString.swift +++ b/GRDB/Core/Support/Foundation/NSString.swift @@ -1,5 +1,5 @@ #if !os(Linux) -import Foundation +import class Foundation.NSString /// NSString adopts DatabaseValueConvertible extension NSString: DatabaseValueConvertible { diff --git a/GRDB/Core/Support/Foundation/SQLiteDateParser.swift b/GRDB/Core/Support/Foundation/SQLiteDateParser.swift index 74db8e5fdf..d5a9695723 100644 --- a/GRDB/Core/Support/Foundation/SQLiteDateParser.swift +++ b/GRDB/Core/Support/Foundation/SQLiteDateParser.swift @@ -1,4 +1,6 @@ -import Foundation +import func Foundation.strlen +import struct Foundation.DateComponents +import struct Foundation.TimeZone // inspired by: http://jordansmith.io/performant-date-parsing/ diff --git a/GRDB/Core/Support/Foundation/URL.swift b/GRDB/Core/Support/Foundation/URL.swift index 6db66ec3b8..2ad176cd58 100644 --- a/GRDB/Core/Support/Foundation/URL.swift +++ b/GRDB/Core/Support/Foundation/URL.swift @@ -1,4 +1,5 @@ -import Foundation +import class Foundation.NSURL +import struct Foundation.URL #if !os(Linux) && !os(Windows) /// NSURL stores its absoluteString in the database. diff --git a/GRDB/Core/Support/Foundation/UUID.swift b/GRDB/Core/Support/Foundation/UUID.swift index 54b18b2c80..cfb1d836a2 100644 --- a/GRDB/Core/Support/Foundation/UUID.swift +++ b/GRDB/Core/Support/Foundation/UUID.swift @@ -10,7 +10,10 @@ import SQLite3 import GRDBSQLite #endif -import Foundation +import class Foundation.NSUUID +import struct Foundation.UUID +import typealias Foundation.uuid_t +import struct Foundation.Data #if !os(Linux) && !os(Windows) /// NSUUID adopts DatabaseValueConvertible diff --git a/GRDB/Core/Support/StandardLibrary/DatabaseValueConvertible+Decodable.swift b/GRDB/Core/Support/StandardLibrary/DatabaseValueConvertible+Decodable.swift index 9e680f66be..ec9aa7b54c 100644 --- a/GRDB/Core/Support/StandardLibrary/DatabaseValueConvertible+Decodable.swift +++ b/GRDB/Core/Support/StandardLibrary/DatabaseValueConvertible+Decodable.swift @@ -1,4 +1,4 @@ -import Foundation +import struct Foundation.Data private struct DatabaseValueDecodingContainer: SingleValueDecodingContainer { let dbValue: DatabaseValue diff --git a/GRDB/Core/Support/StandardLibrary/DatabaseValueConvertible+Encodable.swift b/GRDB/Core/Support/StandardLibrary/DatabaseValueConvertible+Encodable.swift index 2076df72d5..e82d5310cf 100644 --- a/GRDB/Core/Support/StandardLibrary/DatabaseValueConvertible+Encodable.swift +++ b/GRDB/Core/Support/StandardLibrary/DatabaseValueConvertible+Encodable.swift @@ -1,4 +1,4 @@ -import Foundation +import class Foundation.JSONEncoder private struct DatabaseValueEncodingContainer: SingleValueEncodingContainer { let encode: (DatabaseValue) -> Void diff --git a/GRDB/Core/TransactionClock.swift b/GRDB/Core/TransactionClock.swift index b467ce7240..f31c08d11f 100644 --- a/GRDB/Core/TransactionClock.swift +++ b/GRDB/Core/TransactionClock.swift @@ -1,4 +1,4 @@ -import Foundation +import struct Foundation.Date /// A type that provides the moment of a transaction. /// diff --git a/GRDB/Dump/Database+Dump.swift b/GRDB/Dump/Database+Dump.swift index 43d8bae205..c735cbf3b9 100644 --- a/GRDB/Dump/Database+Dump.swift +++ b/GRDB/Dump/Database+Dump.swift @@ -1,4 +1,4 @@ -import Foundation + // MARK: - Dump diff --git a/GRDB/Dump/DumpFormats/DebugDumpFormat.swift b/GRDB/Dump/DumpFormats/DebugDumpFormat.swift index f957b1936c..8b990d118c 100644 --- a/GRDB/Dump/DumpFormats/DebugDumpFormat.swift +++ b/GRDB/Dump/DumpFormats/DebugDumpFormat.swift @@ -10,7 +10,9 @@ import SQLite3 import GRDBSQLite #endif -import Foundation +import struct Foundation.Data +import struct Foundation.UUID +import typealias Foundation.uuid_t /// A format that prints one line per database row, suitable /// for debugging. diff --git a/GRDB/Dump/DumpFormats/JSONDumpFormat.swift b/GRDB/Dump/DumpFormats/JSONDumpFormat.swift index 42dd67dba3..dec4e0d376 100644 --- a/GRDB/Dump/DumpFormats/JSONDumpFormat.swift +++ b/GRDB/Dump/DumpFormats/JSONDumpFormat.swift @@ -10,7 +10,8 @@ import SQLite3 import GRDBSQLite #endif -import Foundation +import class Foundation.JSONEncoder +import struct Foundation.Data /// A format that prints database rows as a JSON array. /// diff --git a/GRDB/Dump/DumpFormats/LineDumpFormat.swift b/GRDB/Dump/DumpFormats/LineDumpFormat.swift index 5111090e5d..99bf805b4c 100644 --- a/GRDB/Dump/DumpFormats/LineDumpFormat.swift +++ b/GRDB/Dump/DumpFormats/LineDumpFormat.swift @@ -10,7 +10,7 @@ import SQLite3 import GRDBSQLite #endif -import Foundation + /// A format that prints one line per database value. All blob values /// are interpreted as strings. diff --git a/GRDB/Dump/DumpFormats/ListDumpFormat.swift b/GRDB/Dump/DumpFormats/ListDumpFormat.swift index f5536641a1..a88d12af04 100644 --- a/GRDB/Dump/DumpFormats/ListDumpFormat.swift +++ b/GRDB/Dump/DumpFormats/ListDumpFormat.swift @@ -10,7 +10,7 @@ import SQLite3 import GRDBSQLite #endif -import Foundation + /// A format that prints one line per database row. All blob values /// are interpreted as strings. diff --git a/GRDB/FTS/FTS5.swift b/GRDB/FTS/FTS5.swift index 127a43fef2..c50e39baad 100644 --- a/GRDB/FTS/FTS5.swift +++ b/GRDB/FTS/FTS5.swift @@ -11,7 +11,7 @@ import SQLite3 import GRDBSQLite #endif -import Foundation + /// The virtual table module for the FTS5 full-text engine. /// diff --git a/GRDB/FTS/FTS5Tokenizer.swift b/GRDB/FTS/FTS5Tokenizer.swift index 35f3ae2672..e83987b93f 100644 --- a/GRDB/FTS/FTS5Tokenizer.swift +++ b/GRDB/FTS/FTS5Tokenizer.swift @@ -11,7 +11,7 @@ import SQLite3 import GRDBSQLite #endif -import Foundation +import struct Foundation.Data /// A low-level SQLite function that lets FTS5Tokenizer notify tokens. /// diff --git a/GRDB/FTS/FTS5WrapperTokenizer.swift b/GRDB/FTS/FTS5WrapperTokenizer.swift index bda4ed1813..ad3d7a6788 100644 --- a/GRDB/FTS/FTS5WrapperTokenizer.swift +++ b/GRDB/FTS/FTS5WrapperTokenizer.swift @@ -11,7 +11,7 @@ import SQLite3 import GRDBSQLite #endif -import Foundation +import struct Foundation.Data /// Flags that tell SQLite how to register a token. /// diff --git a/GRDB/Migration/DatabaseMigrator.swift b/GRDB/Migration/DatabaseMigrator.swift index f90ebb902c..f1e6e65a6d 100644 --- a/GRDB/Migration/DatabaseMigrator.swift +++ b/GRDB/Migration/DatabaseMigrator.swift @@ -1,7 +1,11 @@ #if canImport(Combine) import Combine #endif -import Foundation +import struct Foundation.URL +import class Foundation.ProcessInfo +import func Foundation.NSTemporaryDirectory +import class Foundation.FileManager +import class Foundation.DispatchQueue // TODO: provide concurrent apis for migrations that run @Sendable closures. /// A `DatabaseMigrator` registers and applies database migrations. diff --git a/GRDB/QueryInterface/Request/Association/Association.swift b/GRDB/QueryInterface/Request/Association/Association.swift index 86a234c8d5..c9a2c4e6ef 100644 --- a/GRDB/QueryInterface/Request/Association/Association.swift +++ b/GRDB/QueryInterface/Request/Association/Association.swift @@ -1,4 +1,4 @@ -import Foundation + /// A type that defines a connection between two tables. /// diff --git a/GRDB/QueryInterface/Request/Association/AssociationAggregate.swift b/GRDB/QueryInterface/Request/Association/AssociationAggregate.swift index b394396715..fdbccdd832 100644 --- a/GRDB/QueryInterface/Request/Association/AssociationAggregate.swift +++ b/GRDB/QueryInterface/Request/Association/AssociationAggregate.swift @@ -1,4 +1,4 @@ -import Foundation + extension AssociationToMany { private func makeAggregate(_ expression: SQLExpression) -> AssociationAggregate { diff --git a/GRDB/QueryInterface/Request/RequestProtocols.swift b/GRDB/QueryInterface/Request/RequestProtocols.swift index e2b366d57e..fdf0dbcde6 100644 --- a/GRDB/QueryInterface/Request/RequestProtocols.swift +++ b/GRDB/QueryInterface/Request/RequestProtocols.swift @@ -1,5 +1,6 @@ -import Foundation - +import struct Foundation.Data +import struct Foundation.Date +import struct Foundation.UUID // MARK: - TypedRequest /// A request that knows how to decode database rows. diff --git a/GRDB/Record/EncodableRecord+Encodable.swift b/GRDB/Record/EncodableRecord+Encodable.swift index 788f4b1c96..bb44f87952 100644 --- a/GRDB/Record/EncodableRecord+Encodable.swift +++ b/GRDB/Record/EncodableRecord+Encodable.swift @@ -1,4 +1,7 @@ -import Foundation +import struct Foundation.Data +import struct Foundation.Date +import struct Foundation.UUID +import func Foundation.autoreleasepool extension EncodableRecord where Self: Encodable { /// Encodes the record into the provided persistence container, using the diff --git a/GRDB/Record/EncodableRecord.swift b/GRDB/Record/EncodableRecord.swift index 98261bc94e..906d837883 100644 --- a/GRDB/Record/EncodableRecord.swift +++ b/GRDB/Record/EncodableRecord.swift @@ -1,4 +1,11 @@ -import Foundation // For JSONEncoder +import class Foundation.JSONEncoder // For JSONEncoder +import struct Foundation.Data +import struct Foundation.Date +import struct Foundation.UUID +import class Foundation.DateFormatter +import struct Foundation.CharacterSet +import class Foundation.ISO8601DateFormatter +import func Foundation.floor /// A type that can encode itself in a database row. /// diff --git a/GRDB/Record/FetchableRecord+Decodable.swift b/GRDB/Record/FetchableRecord+Decodable.swift index c54ab06bcc..36e682e182 100644 --- a/GRDB/Record/FetchableRecord+Decodable.swift +++ b/GRDB/Record/FetchableRecord+Decodable.swift @@ -10,7 +10,10 @@ import SQLite3 import GRDBSQLite #endif -import Foundation +import struct Foundation.Data +import struct Foundation.Date +import struct Foundation.TimeInterval +import class Foundation.ISO8601DateFormatter extension FetchableRecord where Self: Decodable { /// Creates a record from `row`, using the `Decodable` conformance. diff --git a/GRDB/Record/FetchableRecord.swift b/GRDB/Record/FetchableRecord.swift index 5cb2b0b587..e5956f74c6 100644 --- a/GRDB/Record/FetchableRecord.swift +++ b/GRDB/Record/FetchableRecord.swift @@ -1,4 +1,7 @@ -import Foundation +import class Foundation.JSONDecoder +import struct Foundation.Data +import struct Foundation.Date +import class Foundation.DateFormatter /// A type that can decode itself from a database row. /// diff --git a/GRDB/Record/TableRecord.swift b/GRDB/Record/TableRecord.swift index 019b9e6fb4..d41bc3c677 100644 --- a/GRDB/Record/TableRecord.swift +++ b/GRDB/Record/TableRecord.swift @@ -1,4 +1,5 @@ -import Foundation +import class Foundation.NSString +import class Foundation.NSCache /// A type that builds database queries with the Swift language instead of SQL. /// diff --git a/GRDB/Utils/Inflections.swift b/GRDB/Utils/Inflections.swift index 9c845c2c6b..a1bb870aaf 100644 --- a/GRDB/Utils/Inflections.swift +++ b/GRDB/Utils/Inflections.swift @@ -1,4 +1,7 @@ -import Foundation +import class Foundation.NSRegularExpression +import struct Foundation.NSRange +import var Foundation.NSNotFound +import class Foundation.NSMutableString extension String { /// "player" -> "Player" diff --git a/GRDB/Utils/Mutex.swift b/GRDB/Utils/Mutex.swift index 771a57a4a6..4d1634551d 100644 --- a/GRDB/Utils/Mutex.swift +++ b/GRDB/Utils/Mutex.swift @@ -1,4 +1,4 @@ -import Foundation +import class Foundation.NSLock /// A Mutex protects a value with an NSLock. /// diff --git a/GRDB/Utils/OnDemandFuture.swift b/GRDB/Utils/OnDemandFuture.swift index b12840a1d4..1e524d98db 100644 --- a/GRDB/Utils/OnDemandFuture.swift +++ b/GRDB/Utils/OnDemandFuture.swift @@ -1,6 +1,6 @@ #if canImport(Combine) import Combine -import Foundation +import class Foundation.NSRecursiveLock /// A publisher that eventually produces one value and then finishes or fails. /// diff --git a/GRDB/Utils/ReceiveValuesOn.swift b/GRDB/Utils/ReceiveValuesOn.swift index 2df87fc46a..fa45a7fa2a 100644 --- a/GRDB/Utils/ReceiveValuesOn.swift +++ b/GRDB/Utils/ReceiveValuesOn.swift @@ -1,6 +1,6 @@ #if canImport(Combine) import Combine -import Foundation +import class Foundation.NSRecursiveLock /// A publisher that delivers values to its downstream subscriber on a /// specific scheduler. diff --git a/GRDB/Utils/Utils.swift b/GRDB/Utils/Utils.swift index 8237f51451..647ea8077a 100644 --- a/GRDB/Utils/Utils.swift +++ b/GRDB/Utils/Utils.swift @@ -1,8 +1,11 @@ #if !canImport(Darwin) @preconcurrency import class Dispatch.DispatchSpecificKey @preconcurrency import class Dispatch.DispatchQueue +#else +import protocol Foundation.NSLocking +import class Foundation.DispatchQueue +import class Foundation.DispatchSpecificKey #endif -import Foundation // MARK: - Public diff --git a/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift b/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift index d75b89c731..8da1f326f6 100644 --- a/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift +++ b/GRDB/ValueObservation/Observers/ValueConcurrentObserver.swift @@ -1,4 +1,5 @@ -import Foundation +import class Foundation.NSLock +import class Foundation.DispatchQueue /// `ValueConcurrentObserver` observes the database for `ValueObservation`, in /// a `DatabasePool`. diff --git a/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift b/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift index 67d915bf04..125b20cccf 100644 --- a/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift +++ b/GRDB/ValueObservation/Observers/ValueWriteOnlyObserver.swift @@ -1,4 +1,5 @@ -import Foundation +import class Foundation.NSLock +import class Foundation.DispatchQueue /// `ValueWriteOnlyObserver` observes the database for `ValueObservation`. /// diff --git a/GRDB/ValueObservation/SharedValueObservation.swift b/GRDB/ValueObservation/SharedValueObservation.swift index 0bc78496c6..37131a57e7 100644 --- a/GRDB/ValueObservation/SharedValueObservation.swift +++ b/GRDB/ValueObservation/SharedValueObservation.swift @@ -1,4 +1,4 @@ -import Foundation +import class Foundation.NSRecursiveLock /// The extent of the shared subscription to a ``SharedValueObservation``. public enum SharedValueObservationExtent: Sendable { diff --git a/GRDB/ValueObservation/ValueObservation.swift b/GRDB/ValueObservation/ValueObservation.swift index 512c527e97..56d5ebf7b6 100644 --- a/GRDB/ValueObservation/ValueObservation.swift +++ b/GRDB/ValueObservation/ValueObservation.swift @@ -1,7 +1,7 @@ #if canImport(Combine) import Combine #endif -import Foundation +import class Foundation.NSRecursiveLock public struct ValueObservation: Sendable { var events = ValueObservationEvents() diff --git a/GRDB/ValueObservation/ValueObservationScheduler.swift b/GRDB/ValueObservation/ValueObservationScheduler.swift index 7e47fa3fca..1492082042 100644 --- a/GRDB/ValueObservation/ValueObservationScheduler.swift +++ b/GRDB/ValueObservation/ValueObservationScheduler.swift @@ -1,5 +1,5 @@ import class Dispatch.DispatchQueue -import Foundation +import class Foundation.Thread /// A type that determines when `ValueObservation` notifies its fresh values. /// diff --git a/Package.swift b/Package.swift index 26c61734a5..6aa7c1c8b5 100644 --- a/Package.swift +++ b/Package.swift @@ -1,7 +1,7 @@ // swift-tools-version:6.1 // The swift-tools-version declares the minimum version of Swift required to build this package. -import Foundation +import class Foundation.ProcessInfo import PackageDescription let darwinPlatforms: [Platform] = [ diff --git a/Tests/CombineExpectations/RecordingError.swift b/Tests/CombineExpectations/RecordingError.swift index cfb354c3fd..991856470a 100644 --- a/Tests/CombineExpectations/RecordingError.swift +++ b/Tests/CombineExpectations/RecordingError.swift @@ -1,5 +1,5 @@ #if canImport(Combine) -import Foundation +import protocol Foundation.LocalizedError /// An error that may be thrown when waiting for publisher expectations. public enum RecordingError: Error { diff --git a/Tests/GRDBCombineTests/Support.swift b/Tests/GRDBCombineTests/Support.swift index 6d35dd7718..6b9eaddf74 100644 --- a/Tests/GRDBCombineTests/Support.swift +++ b/Tests/GRDBCombineTests/Support.swift @@ -1,6 +1,6 @@ #if canImport(Combine) import Combine -import Foundation + import XCTest final class Test { diff --git a/Tests/GRDBTests/AsyncSemaphore.swift b/Tests/GRDBTests/AsyncSemaphore.swift index 97691ab67c..19c5fcca3d 100644 --- a/Tests/GRDBTests/AsyncSemaphore.swift +++ b/Tests/GRDBTests/AsyncSemaphore.swift @@ -21,7 +21,7 @@ // TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE // SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -import Foundation +import class Foundation.NSRecursiveLock /// An object that controls access to a resource across multiple execution /// contexts through use of a traditional counting semaphore. diff --git a/Tests/GRDBTests/DatabaseColumnEncodingStrategyTests.swift b/Tests/GRDBTests/DatabaseColumnEncodingStrategyTests.swift index 979557c05f..7077d43fd4 100644 --- a/Tests/GRDBTests/DatabaseColumnEncodingStrategyTests.swift +++ b/Tests/GRDBTests/DatabaseColumnEncodingStrategyTests.swift @@ -1,5 +1,5 @@ import XCTest -import Foundation + @testable import GRDB private struct UseDefaultKeysRecord: PersistableRecord, Encodable { diff --git a/Tests/GRDBTests/DatabaseDataDecodingStrategyTests.swift b/Tests/GRDBTests/DatabaseDataDecodingStrategyTests.swift index a071683cc3..e3d5fd49bf 100644 --- a/Tests/GRDBTests/DatabaseDataDecodingStrategyTests.swift +++ b/Tests/GRDBTests/DatabaseDataDecodingStrategyTests.swift @@ -1,4 +1,4 @@ -import Foundation + import XCTest @testable import GRDB // TODO: remove @testable when RowDecodingError is public diff --git a/Tests/GRDBTests/DatabaseDataEncodingStrategyTests.swift b/Tests/GRDBTests/DatabaseDataEncodingStrategyTests.swift index 61f42d7515..fee642b495 100644 --- a/Tests/GRDBTests/DatabaseDataEncodingStrategyTests.swift +++ b/Tests/GRDBTests/DatabaseDataEncodingStrategyTests.swift @@ -1,5 +1,5 @@ import XCTest -import Foundation + @testable import GRDB private protocol StrategyProvider { diff --git a/Tests/GRDBTests/DatabaseDateDecodingStrategyTests.swift b/Tests/GRDBTests/DatabaseDateDecodingStrategyTests.swift index a95dd9156e..c2c8dbe55c 100644 --- a/Tests/GRDBTests/DatabaseDateDecodingStrategyTests.swift +++ b/Tests/GRDBTests/DatabaseDateDecodingStrategyTests.swift @@ -1,4 +1,4 @@ -import Foundation + import XCTest @testable import GRDB // TODO: remove @testable when RowDecodingError is public diff --git a/Tests/GRDBTests/DatabaseDateEncodingStrategyTests.swift b/Tests/GRDBTests/DatabaseDateEncodingStrategyTests.swift index 90ab8c4102..2427bc3657 100644 --- a/Tests/GRDBTests/DatabaseDateEncodingStrategyTests.swift +++ b/Tests/GRDBTests/DatabaseDateEncodingStrategyTests.swift @@ -1,5 +1,5 @@ import XCTest -import Foundation + @testable import GRDB private protocol StrategyProvider { diff --git a/Tests/GRDBTests/DatabasePoolConcurrencyTests.swift b/Tests/GRDBTests/DatabasePoolConcurrencyTests.swift index 90e78168c8..d7fe8e698c 100644 --- a/Tests/GRDBTests/DatabasePoolConcurrencyTests.swift +++ b/Tests/GRDBTests/DatabasePoolConcurrencyTests.swift @@ -1,7 +1,7 @@ import XCTest import class Dispatch.DispatchSemaphore import class Dispatch.DispatchQueue -import Foundation + @testable import GRDB class DatabasePoolConcurrencyTests: GRDBTestCase { diff --git a/Tests/GRDBTests/DatabaseUUIDEncodingStrategyTests.swift b/Tests/GRDBTests/DatabaseUUIDEncodingStrategyTests.swift index 14dce9d843..a491a34f05 100644 --- a/Tests/GRDBTests/DatabaseUUIDEncodingStrategyTests.swift +++ b/Tests/GRDBTests/DatabaseUUIDEncodingStrategyTests.swift @@ -1,5 +1,5 @@ import XCTest -import Foundation + @testable import GRDB private protocol StrategyProvider { diff --git a/Tests/GRDBTests/DatabaseValueConvertibleEncodableTests.swift b/Tests/GRDBTests/DatabaseValueConvertibleEncodableTests.swift index 00f44620fe..1a27a908a0 100644 --- a/Tests/GRDBTests/DatabaseValueConvertibleEncodableTests.swift +++ b/Tests/GRDBTests/DatabaseValueConvertibleEncodableTests.swift @@ -1,5 +1,5 @@ import XCTest -import Foundation + import GRDB class DatabaseValueConvertibleEncodableTests: GRDBTestCase { diff --git a/Tests/GRDBTests/FTS5CustomTokenizerTests.swift b/Tests/GRDBTests/FTS5CustomTokenizerTests.swift index f5d76765d6..e8eae188ec 100644 --- a/Tests/GRDBTests/FTS5CustomTokenizerTests.swift +++ b/Tests/GRDBTests/FTS5CustomTokenizerTests.swift @@ -1,6 +1,6 @@ #if SQLITE_ENABLE_FTS5 import XCTest -import Foundation + import GRDB // A custom tokenizer that ignores some tokens diff --git a/Tests/GRDBTests/FTS5WrapperTokenizerTests.swift b/Tests/GRDBTests/FTS5WrapperTokenizerTests.swift index 78330fcfc1..d660227aba 100644 --- a/Tests/GRDBTests/FTS5WrapperTokenizerTests.swift +++ b/Tests/GRDBTests/FTS5WrapperTokenizerTests.swift @@ -1,6 +1,6 @@ #if SQLITE_ENABLE_FTS5 import XCTest -import Foundation + import GRDB // A custom wrapper tokenizer that ignores some tokens diff --git a/Tests/GRDBTests/FetchableRecordDecodableTests.swift b/Tests/GRDBTests/FetchableRecordDecodableTests.swift index c4f2bfc0d6..7c6a083fd3 100644 --- a/Tests/GRDBTests/FetchableRecordDecodableTests.swift +++ b/Tests/GRDBTests/FetchableRecordDecodableTests.swift @@ -1,4 +1,4 @@ -import Foundation + import XCTest @testable import GRDB diff --git a/Tests/GRDBTests/FoundationUUIDTests.swift b/Tests/GRDBTests/FoundationUUIDTests.swift index 9adfc228a4..ab47802835 100644 --- a/Tests/GRDBTests/FoundationUUIDTests.swift +++ b/Tests/GRDBTests/FoundationUUIDTests.swift @@ -1,5 +1,5 @@ import XCTest -import Foundation + import GRDB class FoundationUUIDTests: GRDBTestCase { diff --git a/Tests/GRDBTests/GRDBTestCase.swift b/Tests/GRDBTests/GRDBTestCase.swift index af1df612be..d165050134 100644 --- a/Tests/GRDBTests/GRDBTestCase.swift +++ b/Tests/GRDBTests/GRDBTestCase.swift @@ -10,7 +10,7 @@ import SQLite3 import GRDBSQLite #endif -import Foundation + import XCTest @testable import GRDB diff --git a/Tests/GRDBTests/MutablePersistableRecordEncodableTests.swift b/Tests/GRDBTests/MutablePersistableRecordEncodableTests.swift index 93552bcde2..a72f50f595 100644 --- a/Tests/GRDBTests/MutablePersistableRecordEncodableTests.swift +++ b/Tests/GRDBTests/MutablePersistableRecordEncodableTests.swift @@ -1,5 +1,5 @@ import XCTest -import Foundation + import GRDB class MutablePersistableRecordEncodableTests: GRDBTestCase { } diff --git a/Tests/GRDBTests/Mutex.swift b/Tests/GRDBTests/Mutex.swift index 1fb69c2e22..56a152a7c9 100644 --- a/Tests/GRDBTests/Mutex.swift +++ b/Tests/GRDBTests/Mutex.swift @@ -1,4 +1,4 @@ -import Foundation +import class Foundation.NSLock /// A Mutex protects a value with an NSLock. /// diff --git a/Tests/Performance/GRDBPerformance/Generation.swift b/Tests/Performance/GRDBPerformance/Generation.swift index a9d61d5c20..c32e70d034 100644 --- a/Tests/Performance/GRDBPerformance/Generation.swift +++ b/Tests/Performance/GRDBPerformance/Generation.swift @@ -1,5 +1,5 @@ import XCTest -import Foundation + import GRDB #if GRDB_COMPARE import CoreData