Skip to content

Commit 8feff44

Browse files
committed
Migrate to Swift 3.0
1 parent 4237467 commit 8feff44

10 files changed

+68
-55
lines changed
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
public extension Array {
22

3-
public func arrayByAppending(elements: Element...) -> Array<Element> {
3+
public func arrayByAppending(_ elements: Element...) -> Array<Element> {
44
return arrayByAppending(elements)
55
}
66

7-
public func arrayByAppending(elements: [Element]) -> Array<Element> {
7+
public func arrayByAppending(_ elements: [Element]) -> Array<Element> {
88
var mutableCopy = self
9-
mutableCopy.appendContentsOf(elements)
9+
mutableCopy.append(contentsOf: elements)
1010
return mutableCopy
1111
}
1212

13-
public func product<U>(other: [U]) -> Array<(Element, U)> {
13+
public func product<U>(_ other: [U]) -> Array<(Element, U)> {
1414
return flatMap { t in
1515
other.map { u in (t, u) }
1616
}
1717
}
18-
}
18+
}

Source/Cancellable.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,13 @@ public protocol Cancellable {
1313

1414
/// A token that can be used to cancel requests
1515
public struct CancellableToken: Cancellable {
16-
let cancelAction: Void -> Void
16+
let cancelAction: () -> Void
1717

18-
public init(cancelAction: Void -> Void) {
18+
public init(cancelAction: @escaping () -> Void) {
1919
self.cancelAction = cancelAction
2020
}
2121

2222
public func cancel() {
2323
cancelAction()
2424
}
25-
}
25+
}

Source/DispatchHelpers.swift

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,14 @@
88

99
import Foundation
1010

11-
public func cancellableDispatchAfter(seconds: Double, queue: dispatch_queue_t = dispatch_get_main_queue(), block: () -> ()) -> Cancellable {
12-
let delay = dispatch_time(DISPATCH_TIME_NOW, Int64(seconds * Double(NSEC_PER_SEC)))
11+
public func cancellableDispatchAfter(_ seconds: Double, queue: DispatchQueue = DispatchQueue.main, block: @escaping () -> ()) -> Cancellable {
12+
let delay = DispatchTime.now() + Double(Int64(seconds * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC)
1313
return cancellableDispatchAfter(delay, on: queue, block: block)
1414
}
1515

16-
public func cancellableDispatchAfter(time: dispatch_time_t, on queue: dispatch_queue_t, block: () -> ()) -> Cancellable {
16+
public func cancellableDispatchAfter(_ time: DispatchTime, on queue: DispatchQueue, block: @escaping () -> ()) -> Cancellable {
1717
var cancelled: Bool = false
18-
dispatch_after(time, queue) {
18+
queue.asyncAfter(deadline: time) {
1919
if cancelled == false {
2020
block()
2121
}
@@ -25,10 +25,10 @@ public func cancellableDispatchAfter(time: dispatch_time_t, on queue: dispatch_q
2525
}
2626
}
2727

28-
public func cancellableDispatchAsync(on queue: dispatch_queue_t = dispatch_get_main_queue(), block: () -> ()) -> Cancellable {
28+
public func cancellableDispatchAsync(on queue: DispatchQueue = DispatchQueue.main, block: @escaping () -> ()) -> Cancellable {
2929
var cancelled: Bool = false
3030

31-
dispatch_async(queue) {
31+
queue.async {
3232
if cancelled == false {
3333
block()
3434
}
@@ -37,4 +37,4 @@ public func cancellableDispatchAsync(on queue: dispatch_queue_t = dispatch_get_m
3737
return CancellableToken {
3838
cancelled = true
3939
}
40-
}
40+
}

Source/GlobalFunctions.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public func inferredType<T>() -> T.Type {
1212
return T.self
1313
}
1414

15-
public func associatedObject<T: AnyObject>(base: AnyObject, key: UnsafePointer<UInt8>, @noescape initializer: () -> T) -> T {
15+
public func associatedObject<T: AnyObject>(_ base: AnyObject, key: UnsafePointer<UInt8>, initializer: () -> T) -> T {
1616
if let associated = objc_getAssociatedObject(base, key) as? T {
1717
return associated
1818
}
@@ -22,6 +22,6 @@ public func associatedObject<T: AnyObject>(base: AnyObject, key: UnsafePointer<U
2222
return associated
2323
}
2424

25-
public func associateObject<T: AnyObject>(base: AnyObject, key: UnsafePointer<UInt8>, value: T) {
25+
public func associateObject<T: AnyObject>(_ base: AnyObject, key: UnsafePointer<UInt8>, value: T) {
2626
objc_setAssociatedObject(base, key, value, .OBJC_ASSOCIATION_RETAIN)
27-
}
27+
}

Source/Int+Functionals.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88

99
public extension Int {
1010

11-
public func times(@noescape closure: () -> ()) {
11+
public func times(_ closure: () -> ()) {
1212
(0..<self).forEach { _ in closure() }
1313
}
1414

15-
}
15+
}

Source/MoreFunctionalGlobals.swift

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,51 +8,51 @@
88

99
import Foundation
1010

11-
public func ignoreResult<IN, OUT>(original: IN -> OUT) -> IN -> () {
12-
return { original($0) }
11+
public func ignoreResult<IN, OUT>(_ original: @escaping (IN) -> OUT) -> (IN) -> () {
12+
return { _ = original($0) }
1313
}
1414

15-
public func curry<IN, OUT>(input: IN, original: IN -> OUT) -> () -> OUT {
15+
public func curry<IN, OUT>(_ input: IN, original: @escaping (IN) -> OUT) -> () -> OUT {
1616
return { original(input) }
1717
}
1818

19-
public func curry<IN1, IN2, OUT>(input: IN1, original: (IN1, IN2) -> OUT) -> IN2 -> OUT {
19+
public func curry<IN1, IN2, OUT>(_ input: IN1, original: @escaping (IN1, IN2) -> OUT) -> (IN2) -> OUT {
2020
return { original(input, $0) }
2121
}
2222

23-
public func curry<IN1, IN2, IN3, OUT>(input: IN1, original: (IN1, IN2, IN3) -> OUT) -> (IN2, IN3) -> OUT {
23+
public func curry<IN1, IN2, IN3, OUT>(_ input: IN1, original: @escaping (IN1, IN2, IN3) -> OUT) -> (IN2, IN3) -> OUT {
2424
return { original(input, $0, $1) }
2525
}
2626

27-
public func curry<IN1, IN2, IN3, OUT>(input: IN2, original: (IN1, IN2, IN3) -> OUT) -> (IN1, IN3) -> OUT {
27+
public func curry<IN1, IN2, IN3, OUT>(_ input: IN2, original: @escaping (IN1, IN2, IN3) -> OUT) -> (IN1, IN3) -> OUT {
2828
return { original($0, input, $1) }
2929
}
3030

31-
public func curry<IN1, IN2, IN3, OUT>(input: IN3, original: (IN1, IN2, IN3) -> OUT) -> (IN1, IN2) -> OUT {
31+
public func curry<IN1, IN2, IN3, OUT>(_ input: IN3, original: @escaping (IN1, IN2, IN3) -> OUT) -> (IN1, IN2) -> OUT {
3232
return { original($0, $1, input) }
3333
}
3434

35-
public func curry<IN1, IN2, IN3, OUT>(input: (IN1, IN2), original: (IN1, IN2, IN3) -> OUT) -> IN3 -> OUT {
35+
public func curry<IN1, IN2, IN3, OUT>(_ input: (IN1, IN2), original: @escaping (IN1, IN2, IN3) -> OUT) -> (IN3) -> OUT {
3636
return { original(input.0, input.1, $0) }
3737
}
3838

3939

40-
public func backCurry<IN1, IN2, OUT>(input: IN2, original: (IN1, IN2) -> OUT) -> IN1 -> OUT {
40+
public func backCurry<IN1, IN2, OUT>(_ input: IN2, original: @escaping (IN1, IN2) -> OUT) -> (IN1) -> OUT {
4141
return { original($0, input) }
4242
}
4343

44-
public func merge<IN, INTERMEDIATE, OUT>(closure: IN -> INTERMEDIATE -> OUT) -> (IN, INTERMEDIATE) -> OUT {
44+
public func merge<IN, INTERMEDIATE, OUT>(_ closure: @escaping (IN) -> (INTERMEDIATE) -> OUT) -> (IN, INTERMEDIATE) -> OUT {
4545
return { closure($0)($1) }
4646
}
4747

48-
public func split<IN, INTERMEDIATE, OUT>(closure: (IN, INTERMEDIATE) -> OUT) -> IN -> INTERMEDIATE -> OUT {
48+
public func split<IN, INTERMEDIATE, OUT>(_ closure: @escaping (IN, INTERMEDIATE) -> OUT) -> (IN) -> (INTERMEDIATE) -> OUT {
4949
return { input in { intermediate in closure(input, intermediate) } }
5050
}
5151

52-
public func flattenInput<A, B, C, OUT>(closure: ((A, B), C) -> OUT) -> (A, B, C) -> OUT {
52+
public func flattenInput<A, B, C, OUT>(_ closure: @escaping ((A, B), C) -> OUT) -> (A, B, C) -> OUT {
5353
return { closure(($0, $1), $2) }
5454
}
5555

56-
public func flattenInput<A, B, C, OUT>(closure: (A, (B, C)) -> OUT) -> (A, B, C) -> OUT {
56+
public func flattenInput<A, B, C, OUT>(_ closure: @escaping (A, (B, C)) -> OUT) -> (A, B, C) -> OUT {
5757
return { closure($0, ($1, $2)) }
58-
}
58+
}

Source/ThreadLocal.swift

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,36 +8,36 @@
88

99
import Foundation
1010

11-
public class ThreadLocal<T: AnyObject>: ThreadLocalParametrized<Void, T> {
11+
open class ThreadLocal<T: AnyObject>: ThreadLocalParametrized<Void, T> {
1212

13-
public convenience init(create: () -> T) {
14-
self.init(id: NSUUID().UUIDString, create: create)
13+
public convenience init(create: @escaping () -> T) {
14+
self.init(id: UUID().uuidString, create: create)
1515
}
1616

17-
public override init(id: String, create: () -> T) {
17+
public override init(id: String, create: @escaping () -> T) {
1818
super.init(id: id, create: create)
1919
}
2020

21-
public func get() -> T {
21+
open func get() -> T {
2222
return super.get()
2323
}
2424
}
2525

26-
public class ThreadLocalParametrized<PARAMS, T: AnyObject> {
27-
private let id: String
28-
private let create: PARAMS -> T
26+
open class ThreadLocalParametrized<PARAMS, T: AnyObject> {
27+
fileprivate let id: String
28+
fileprivate let create: (PARAMS) -> T
2929

30-
public convenience init(create: PARAMS -> T) {
31-
self.init(id: NSUUID().UUIDString, create: create)
30+
public convenience init(create: @escaping (PARAMS) -> T) {
31+
self.init(id: UUID().uuidString, create: create)
3232
}
3333

34-
public init(id: String, create: PARAMS -> T) {
34+
public init(id: String, create: @escaping (PARAMS) -> T) {
3535
self.id = id
3636
self.create = create
3737
}
3838

39-
public func get(parameters: PARAMS) -> T {
40-
if let cachedObject = NSThread.currentThread().threadDictionary[id] as? T {
39+
open func get(_ parameters: PARAMS) -> T {
40+
if let cachedObject = Thread.current.threadDictionary[id] as? T {
4141
return cachedObject
4242
} else {
4343
let newObject = create(parameters)
@@ -46,12 +46,12 @@ public class ThreadLocalParametrized<PARAMS, T: AnyObject> {
4646
}
4747
}
4848

49-
public func set(value: T) {
50-
NSThread.currentThread().threadDictionary[id] = value
49+
open func set(_ value: T) {
50+
Thread.current.threadDictionary[id] = value
5151
}
5252

53-
public func remove() {
54-
NSThread.currentThread().threadDictionary.removeObjectForKey(id)
53+
open func remove() {
54+
Thread.current.threadDictionary.removeObject(forKey: id)
5555
}
5656

57-
}
57+
}

SwiftKitStaging.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Pod::Spec.new do |s|
22
s.name = "SwiftKitStaging"
3-
s.version = "0.1.2"
3+
s.version = "0.2.0"
44
s.summary = "Staging for new features that are to be added into SwiftKit, but does not have final API."
55
s.description = <<-DESC
66
Sources in Staging is used in various SwiftKit libraries, however use it only in case you do not care about needing to update your codebase every other day.

SwiftKitStaging.xcodeproj/project.pbxproj

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,14 +178,16 @@
178178
isa = PBXProject;
179179
attributes = {
180180
LastSwiftUpdateCheck = 0720;
181-
LastUpgradeCheck = 0720;
181+
LastUpgradeCheck = 0800;
182182
ORGANIZATIONNAME = Brightify;
183183
TargetAttributes = {
184184
184A87A21C55081E00D4BC6D = {
185185
CreatedOnToolsVersion = 7.2;
186+
LastSwiftMigration = 0800;
186187
};
187188
184A87AC1C55081E00D4BC6D = {
188189
CreatedOnToolsVersion = 7.2;
190+
LastSwiftMigration = 0800;
189191
};
190192
};
191193
};
@@ -273,8 +275,10 @@
273275
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
274276
CLANG_WARN_EMPTY_BODY = YES;
275277
CLANG_WARN_ENUM_CONVERSION = YES;
278+
CLANG_WARN_INFINITE_RECURSION = YES;
276279
CLANG_WARN_INT_CONVERSION = YES;
277280
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
281+
CLANG_WARN_SUSPICIOUS_MOVE = YES;
278282
CLANG_WARN_UNREACHABLE_CODE = YES;
279283
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
280284
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
@@ -321,8 +325,10 @@
321325
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
322326
CLANG_WARN_EMPTY_BODY = YES;
323327
CLANG_WARN_ENUM_CONVERSION = YES;
328+
CLANG_WARN_INFINITE_RECURSION = YES;
324329
CLANG_WARN_INT_CONVERSION = YES;
325330
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
331+
CLANG_WARN_SUSPICIOUS_MOVE = YES;
326332
CLANG_WARN_UNREACHABLE_CODE = YES;
327333
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
328334
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
@@ -342,6 +348,7 @@
342348
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
343349
MTL_ENABLE_DEBUG_INFO = NO;
344350
SDKROOT = iphoneos;
351+
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
345352
TARGETED_DEVICE_FAMILY = "1,2";
346353
VALIDATE_PRODUCT = YES;
347354
VERSIONING_SYSTEM = "apple-generic";
@@ -353,6 +360,7 @@
353360
isa = XCBuildConfiguration;
354361
buildSettings = {
355362
CLANG_ENABLE_MODULES = YES;
363+
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
356364
DEFINES_MODULE = YES;
357365
DYLIB_COMPATIBILITY_VERSION = 1;
358366
DYLIB_CURRENT_VERSION = 1;
@@ -364,13 +372,15 @@
364372
PRODUCT_NAME = SwiftKitStaging;
365373
SKIP_INSTALL = YES;
366374
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
375+
SWIFT_VERSION = 3.0;
367376
};
368377
name = Debug;
369378
};
370379
184A87B91C55081E00D4BC6D /* Release */ = {
371380
isa = XCBuildConfiguration;
372381
buildSettings = {
373382
CLANG_ENABLE_MODULES = YES;
383+
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
374384
DEFINES_MODULE = YES;
375385
DYLIB_COMPATIBILITY_VERSION = 1;
376386
DYLIB_CURRENT_VERSION = 1;
@@ -381,6 +391,7 @@
381391
PRODUCT_BUNDLE_IDENTIFIER = org.brightify.SwiftKitStaging;
382392
PRODUCT_NAME = SwiftKitStaging;
383393
SKIP_INSTALL = YES;
394+
SWIFT_VERSION = 3.0;
384395
};
385396
name = Release;
386397
};
@@ -391,6 +402,7 @@
391402
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
392403
PRODUCT_BUNDLE_IDENTIFIER = org.brightify.SwiftKitStagingTests;
393404
PRODUCT_NAME = SwiftKitStaging;
405+
SWIFT_VERSION = 3.0;
394406
};
395407
name = Debug;
396408
};
@@ -401,6 +413,7 @@
401413
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
402414
PRODUCT_BUNDLE_IDENTIFIER = org.brightify.SwiftKitStagingTests;
403415
PRODUCT_NAME = SwiftKitStaging;
416+
SWIFT_VERSION = 3.0;
404417
};
405418
name = Release;
406419
};

SwiftKitStaging.xcodeproj/xcshareddata/xcschemes/SwiftKitStaging.xcscheme

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<Scheme
3-
LastUpgradeVersion = "0720"
3+
LastUpgradeVersion = "0800"
44
version = "1.3">
55
<BuildAction
66
parallelizeBuildables = "YES"

0 commit comments

Comments
 (0)