diff --git a/SwiftTask.xcodeproj/project.pbxproj b/SwiftTask.xcodeproj/project.pbxproj index 35ec5a4..ac6b1ab 100644 --- a/SwiftTask.xcodeproj/project.pbxproj +++ b/SwiftTask.xcodeproj/project.pbxproj @@ -303,7 +303,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0700; - LastUpgradeCheck = 0800; + LastUpgradeCheck = 0900; ORGANIZATIONNAME = "Yasuhiro Inami"; TargetAttributes = { 1F46DED3199EDF1000F97868 = { @@ -433,13 +433,21 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; @@ -478,13 +486,21 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = YES; @@ -522,6 +538,7 @@ PRODUCT_BUNDLE_IDENTIFIER = "com.inamiy.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(PROJECT_NAME)"; SKIP_INSTALL = YES; + SWIFT_VERSION = 4.0; }; name = Debug; }; @@ -541,6 +558,7 @@ PRODUCT_BUNDLE_IDENTIFIER = "com.inamiy.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(PROJECT_NAME)"; SKIP_INSTALL = YES; + SWIFT_VERSION = 4.0; }; name = Release; }; @@ -554,9 +572,11 @@ "$(inherited)", ); INFOPLIST_FILE = SwiftTaskTests/Info.plist; + MACOSX_DEPLOYMENT_TARGET = 10.10; PRODUCT_BUNDLE_IDENTIFIER = "com.inamiy.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = macosx; + SWIFT_VERSION = 4.0; }; name = Debug; }; @@ -566,9 +586,11 @@ buildSettings = { COMBINE_HIDPI_IMAGES = YES; INFOPLIST_FILE = SwiftTaskTests/Info.plist; + MACOSX_DEPLOYMENT_TARGET = 10.10; PRODUCT_BUNDLE_IDENTIFIER = "com.inamiy.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = macosx; + SWIFT_VERSION = 4.0; }; name = Release; }; @@ -581,9 +603,11 @@ "$(inherited)", ); INFOPLIST_FILE = SwiftTaskTests/Info.plist; + MACOSX_DEPLOYMENT_TARGET = 10.10; PRODUCT_BUNDLE_IDENTIFIER = "com.inamiy.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; + SWIFT_VERSION = 4.0; }; name = Debug; }; @@ -592,9 +616,11 @@ baseConfigurationReference = 1FFADCDE1C5CEC1B000B66BE /* UniversalFramework_Test.xcconfig */; buildSettings = { INFOPLIST_FILE = SwiftTaskTests/Info.plist; + MACOSX_DEPLOYMENT_TARGET = 10.10; PRODUCT_BUNDLE_IDENTIFIER = "com.inamiy.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; + SWIFT_VERSION = 4.0; VALIDATE_PRODUCT = YES; }; name = Release; diff --git a/SwiftTask.xcodeproj/xcshareddata/xcschemes/SwiftTask.xcscheme b/SwiftTask.xcodeproj/xcshareddata/xcschemes/SwiftTask.xcscheme index 09eb84c..234c8fd 100644 --- a/SwiftTask.xcodeproj/xcshareddata/xcschemes/SwiftTask.xcscheme +++ b/SwiftTask.xcodeproj/xcshareddata/xcschemes/SwiftTask.xcscheme @@ -1,6 +1,6 @@ : Cancellable, CustomStringConvertible { var token: _HandlerToken? = nil self._machine.addProgressTupleHandler(&token, progressClosure) + weak var machine = _machine - canceller = C { [weak self] in - self?._machine.removeProgressTupleHandler(token) + canceller = C { + machine?.removeProgressTupleHandler(token) } return self diff --git a/SwiftTask/_StateMachine.swift b/SwiftTask/_StateMachine.swift index 1a19b1e..b7cc569 100644 --- a/SwiftTask/_StateMachine.swift +++ b/SwiftTask/_StateMachine.swift @@ -114,7 +114,7 @@ internal class _StateMachine } for handler in self._progressTupleHandlers { - handler(oldProgress: oldProgress, newProgress: progress) + handler((oldProgress: oldProgress, newProgress: progress)) } } } diff --git a/SwiftTaskTests/SwiftTaskTests.swift b/SwiftTaskTests/SwiftTaskTests.swift index 50b689e..60d9342 100644 --- a/SwiftTaskTests/SwiftTaskTests.swift +++ b/SwiftTaskTests/SwiftTaskTests.swift @@ -536,7 +536,7 @@ class SwiftTaskTests: _TestCase let task = _interruptableTask(progressCount: 5) // 1st async task (5 progresses) // chain async-task with then - let task3 = task.then { _ -> _InterruptableTask in + let task3 = task.then { _,_ -> _InterruptableTask in let task2 = _interruptableTask(progressCount: 7) // 2st async task (7 progresses) return task2 } @@ -760,7 +760,7 @@ class SwiftTaskTests: _TestCase weak var innerTask: _InterruptableTask? // chain async-task with `then` - let task2 = task.then { _ -> _InterruptableTask in + let task2 = task.then { _,_ -> _InterruptableTask in innerTask = _interruptableTask(progressCount: 5) return innerTask! }