From e535ddced0c61fb2ee4cb5ae80cca17ab224469a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9F=A9=E5=8A=B2=E4=BF=8A?= Date: Wed, 30 Jun 2021 11:46:31 +0800 Subject: [PATCH] =?UTF-8?q?await=E5=85=B3=E9=94=AE=E8=AF=8D=E6=94=B9?= =?UTF-8?q?=E5=9B=9Eco=5Fawait?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cocore/co_queuedebugging_support.m | 2 +- coobjc.xcodeproj/project.pbxproj | 61 +++++++++++++------ .../xcshareddata/xcschemes/cocore.xcscheme | 6 +- .../xcshareddata/xcschemes/coobjc.xcscheme | 6 +- .../xcshareddata/xcschemes/coswift.xcscheme | 6 +- coswift/Generator.swift | 4 +- coswift/coswift.swift | 12 ++-- 7 files changed, 55 insertions(+), 42 deletions(-) diff --git a/cocore/co_queuedebugging_support.m b/cocore/co_queuedebugging_support.m index 88c8199..f389401 100644 --- a/cocore/co_queuedebugging_support.m +++ b/cocore/co_queuedebugging_support.m @@ -120,7 +120,7 @@ static BOOL co_isDebuggerAttached() { -void co_rebind_backtrace() { +void co_rebind_backtrace(void) { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ if (co_isDebuggerAttached()) { diff --git a/coobjc.xcodeproj/project.pbxproj b/coobjc.xcodeproj/project.pbxproj index e68a7ae..dc21ec7 100644 --- a/coobjc.xcodeproj/project.pbxproj +++ b/coobjc.xcodeproj/project.pbxproj @@ -440,12 +440,12 @@ D85037C51B9C6D8400864DF0 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0640; + LastUpgradeCheck = 1300; ORGANIZATIONNAME = "Alibaba lnc."; TargetAttributes = { A35C049721EC366A00AC7D6E = { CreatedOnToolsVersion = 10.1; - LastSwiftMigration = 1010; + LastSwiftMigration = 1300; ProvisioningStyle = Automatic; }; A372DA752236597600EF87AA = { @@ -460,10 +460,9 @@ }; buildConfigurationList = D85037C81B9C6D8400864DF0 /* Build configuration list for PBXProject "coobjc" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( - English, en, Base, ); @@ -587,7 +586,7 @@ CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_IDENTITY = "iPhone Developer"; + CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = dwarf; @@ -601,7 +600,7 @@ HEADER_SEARCH_PATHS = ""; INFOPLIST_FILE = coswift/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; @@ -612,7 +611,7 @@ SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -640,7 +639,7 @@ CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_IDENTITY = "iPhone Developer"; + CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; @@ -653,7 +652,7 @@ HEADER_SEARCH_PATHS = ""; INFOPLIST_FILE = coswift/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; MTL_FAST_MATH = YES; @@ -662,7 +661,7 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -689,7 +688,7 @@ CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_IDENTITY = "iPhone Developer"; + CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = dwarf; @@ -701,7 +700,7 @@ GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = cocore/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; @@ -735,7 +734,7 @@ CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_IDENTITY = "iPhone Developer"; + CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; @@ -746,7 +745,7 @@ GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = cocore/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACH_O_TYPE = staticlib; MTL_FAST_MATH = YES; @@ -765,21 +764,34 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 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_DEPRECATED_OBJC_IMPLEMENTATIONS = 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_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + 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; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; @@ -795,7 +807,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; }; @@ -805,17 +817,29 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 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_DEPRECATED_OBJC_IMPLEMENTATIONS = 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_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + 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; @@ -829,8 +853,9 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; + SWIFT_COMPILATION_MODE = wholemodule; }; name = Release; }; @@ -853,7 +878,7 @@ GCC_PREFIX_HEADER = "coobjc/coobjc-Prefix.pch"; HEADER_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = coobjc/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LIBRARY_SEARCH_PATHS = "$(inherited)"; MACH_O_TYPE = staticlib; OTHER_CFLAGS = "$(inherited)"; @@ -887,7 +912,7 @@ GCC_PREFIX_HEADER = "coobjc/coobjc-Prefix.pch"; HEADER_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = coobjc/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LIBRARY_SEARCH_PATHS = "$(inherited)"; MACH_O_TYPE = staticlib; OTHER_CFLAGS = "$(inherited)"; diff --git a/coobjc.xcodeproj/xcshareddata/xcschemes/cocore.xcscheme b/coobjc.xcodeproj/xcshareddata/xcschemes/cocore.xcscheme index 281c6a2..96eeea2 100644 --- a/coobjc.xcodeproj/xcshareddata/xcschemes/cocore.xcscheme +++ b/coobjc.xcodeproj/xcshareddata/xcschemes/cocore.xcscheme @@ -1,6 +1,6 @@ - - - - - - - - - - - - (closure: @escaping () -> T ) throws { /// - Throws: COError public func yield(closure: @escaping () -> Promise ) throws { try yield { - return try await(closure: closure) + return try co_await(closure: closure) } } @@ -118,7 +118,7 @@ public func yield(closure: @escaping () -> Promise ) throws { /// - Throws: COError public func yield(closure: @escaping () -> Chan ) throws { try yield { - return try await(closure: closure) + return try co_await(closure: closure) } } diff --git a/coswift/coswift.swift b/coswift/coswift.swift index 3bbd22c..f294a01 100644 --- a/coswift/coswift.swift +++ b/coswift/coswift.swift @@ -49,7 +49,7 @@ public func co_launch(queue: DispatchQueue? = nil, stackSize: UInt32? = nil, blo /// // the promise reject /// break /// } -public func await(promise: Promise) throws -> Resolution { +public func co_await(promise: Promise) throws -> Resolution { if let _ = Coroutine.current() { let chan = Chan>(buffCount: 1) @@ -78,8 +78,8 @@ public func await(promise: Promise) throws -> Resolution { /// - Parameter closure: return a Promise object /// - Returns: the promise's resolution /// - Throws: COError -public func await(closure: @escaping () -> Promise ) throws -> Resolution { - return try await(promise: closure()) +public func co_await(closure: @escaping () -> Promise ) throws -> Resolution { + return try co_await(promise: closure()) } /// Await a channel object, blocking current process, wait the channel send something. @@ -87,7 +87,7 @@ public func await(closure: @escaping () -> Promise ) throws -> Resolution< /// - Parameter channel: the Chan object /// - Returns: The value passing to channel /// - Throws: COError -public func await(channel: Chan) throws -> T { +public func co_await(channel: Chan) throws -> T { if let _ = Coroutine.current() { return try channel.receive() } else { @@ -100,8 +100,8 @@ public func await(channel: Chan) throws -> T { /// - Parameter closure: return a Promise object /// - Returns: the promise's resolution /// - Throws: COError -public func await(closure: @escaping () -> Chan ) throws -> T { - return try await(channel: closure()) +public func co_await(closure: @escaping () -> Chan ) throws -> T { + return try co_await(channel: closure()) } /// Check current coroutine is active or not.