diff --git a/.gitignore b/.gitignore index ca9af23..e777a46 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ # Xcode Add Xcode project to allow Carthage. #*.xcodeproj #*.xcworkspace +Concurrency.xcodeproj/xcshareddata/xcschemes/Concurrency-Package.xcscheme ## Build generated build/ diff --git a/Concurrency.xcodeproj/project.pbxproj b/Concurrency.xcodeproj/project.pbxproj index 21dd01d..70936a0 100644 --- a/Concurrency.xcodeproj/project.pbxproj +++ b/Concurrency.xcodeproj/project.pbxproj @@ -1,653 +1,859 @@ // !$*UTF8*$! { - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - OBJ_40 /* AtomicBool.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_9 /* AtomicBool.swift */; }; - OBJ_41 /* AtomicInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_10 /* AtomicInt.swift */; }; - OBJ_42 /* AtomicReference.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_11 /* AtomicReference.swift */; }; - OBJ_43 /* CountDownLatch.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_12 /* CountDownLatch.swift */; }; - OBJ_44 /* ConcurrentSequenceExecutor.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_14 /* ConcurrentSequenceExecutor.swift */; }; - OBJ_45 /* ImmediateSerialSequenceExecutor.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_15 /* ImmediateSerialSequenceExecutor.swift */; }; - OBJ_46 /* SequenceExecutor.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_16 /* SequenceExecutor.swift */; }; - OBJ_47 /* Task.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_17 /* Task.swift */; }; - OBJ_49 /* ObjCBridges.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = "Concurrency::ObjCBridges::Product" /* ObjCBridges.framework */; }; - OBJ_68 /* AtomicBoolTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_25 /* AtomicBoolTests.swift */; }; - OBJ_69 /* AtomicIntTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_26 /* AtomicIntTests.swift */; }; - OBJ_70 /* AtomicReferenceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_27 /* AtomicReferenceTests.swift */; }; - OBJ_71 /* CountDownLatchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_28 /* CountDownLatchTests.swift */; }; - OBJ_72 /* ConcurrentSequenceExecutorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_30 /* ConcurrentSequenceExecutorTests.swift */; }; - OBJ_74 /* Concurrency.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = "Concurrency::Concurrency::Product" /* Concurrency.framework */; }; - OBJ_75 /* ObjCBridges.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = "Concurrency::ObjCBridges::Product" /* ObjCBridges.framework */; }; - OBJ_82 /* AtomicBridges.m in Sources */ = {isa = PBXBuildFile; fileRef = OBJ_19 /* AtomicBridges.m */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 41B04ADA21C1E84C00328020 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = OBJ_1 /* Project object */; - proxyType = 1; - remoteGlobalIDString = "Concurrency::ObjCBridges"; - remoteInfo = ObjCBridges; - }; - 41B04ADB21C1E84C00328020 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = OBJ_1 /* Project object */; - proxyType = 1; - remoteGlobalIDString = "Concurrency::Concurrency"; - remoteInfo = Concurrency; - }; - 41B04ADC21C1E84C00328020 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = OBJ_1 /* Project object */; - proxyType = 1; - remoteGlobalIDString = "Concurrency::ObjCBridges"; - remoteInfo = ObjCBridges; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - "Concurrency::Concurrency::Product" /* Concurrency.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Concurrency.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - "Concurrency::ConcurrencyTests::Product" /* ConcurrencyTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; path = ConcurrencyTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - "Concurrency::ObjCBridges::Product" /* ObjCBridges.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = ObjCBridges.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - OBJ_10 /* AtomicInt.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AtomicInt.swift; sourceTree = ""; }; - OBJ_11 /* AtomicReference.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AtomicReference.swift; sourceTree = ""; }; - OBJ_12 /* CountDownLatch.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CountDownLatch.swift; sourceTree = ""; }; - OBJ_14 /* ConcurrentSequenceExecutor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConcurrentSequenceExecutor.swift; sourceTree = ""; }; - OBJ_15 /* ImmediateSerialSequenceExecutor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImmediateSerialSequenceExecutor.swift; sourceTree = ""; }; - OBJ_16 /* SequenceExecutor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SequenceExecutor.swift; sourceTree = ""; }; - OBJ_17 /* Task.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Task.swift; sourceTree = ""; }; - OBJ_19 /* AtomicBridges.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AtomicBridges.m; sourceTree = ""; }; - OBJ_21 /* AtomicBridges.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AtomicBridges.h; sourceTree = ""; }; - OBJ_22 /* module.modulemap */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.module-map"; name = module.modulemap; path = "/Users/yiw/Uber/GitHub/swift-concurrency/Concurrency.xcodeproj/GeneratedModuleMap/ObjCBridges/module.modulemap"; sourceTree = ""; }; - OBJ_25 /* AtomicBoolTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AtomicBoolTests.swift; sourceTree = ""; }; - OBJ_26 /* AtomicIntTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AtomicIntTests.swift; sourceTree = ""; }; - OBJ_27 /* AtomicReferenceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AtomicReferenceTests.swift; sourceTree = ""; }; - OBJ_28 /* CountDownLatchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CountDownLatchTests.swift; sourceTree = ""; }; - OBJ_30 /* ConcurrentSequenceExecutorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConcurrentSequenceExecutorTests.swift; sourceTree = ""; }; - OBJ_6 /* Package.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; path = Package.swift; sourceTree = ""; }; - OBJ_9 /* AtomicBool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AtomicBool.swift; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - OBJ_48 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 0; - files = ( - OBJ_49 /* ObjCBridges.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - OBJ_73 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 0; - files = ( - OBJ_74 /* Concurrency.framework in Frameworks */, - OBJ_75 /* ObjCBridges.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - OBJ_83 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 0; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - OBJ_13 /* Executor */ = { - isa = PBXGroup; - children = ( - OBJ_14 /* ConcurrentSequenceExecutor.swift */, - OBJ_15 /* ImmediateSerialSequenceExecutor.swift */, - OBJ_16 /* SequenceExecutor.swift */, - OBJ_17 /* Task.swift */, - ); - path = Executor; - sourceTree = ""; - }; - OBJ_18 /* ObjCBridges */ = { - isa = PBXGroup; - children = ( - OBJ_19 /* AtomicBridges.m */, - OBJ_20 /* include */, - ); - name = ObjCBridges; - path = Sources/ObjCBridges; - sourceTree = SOURCE_ROOT; - }; - OBJ_20 /* include */ = { - isa = PBXGroup; - children = ( - OBJ_21 /* AtomicBridges.h */, - OBJ_22 /* module.modulemap */, - ); - path = include; - sourceTree = ""; - }; - OBJ_23 /* Tests */ = { - isa = PBXGroup; - children = ( - OBJ_24 /* ConcurrencyTests */, - ); - name = Tests; - sourceTree = SOURCE_ROOT; - }; - OBJ_24 /* ConcurrencyTests */ = { - isa = PBXGroup; - children = ( - OBJ_25 /* AtomicBoolTests.swift */, - OBJ_26 /* AtomicIntTests.swift */, - OBJ_27 /* AtomicReferenceTests.swift */, - OBJ_28 /* CountDownLatchTests.swift */, - OBJ_29 /* Executor */, - ); - name = ConcurrencyTests; - path = Tests/ConcurrencyTests; - sourceTree = SOURCE_ROOT; - }; - OBJ_29 /* Executor */ = { - isa = PBXGroup; - children = ( - OBJ_30 /* ConcurrentSequenceExecutorTests.swift */, - ); - path = Executor; - sourceTree = ""; - }; - OBJ_31 /* Products */ = { - isa = PBXGroup; - children = ( - "Concurrency::ConcurrencyTests::Product" /* ConcurrencyTests.xctest */, - "Concurrency::ObjCBridges::Product" /* ObjCBridges.framework */, - "Concurrency::Concurrency::Product" /* Concurrency.framework */, - ); - name = Products; - sourceTree = BUILT_PRODUCTS_DIR; - }; - OBJ_5 /* */ = { - isa = PBXGroup; - children = ( - OBJ_6 /* Package.swift */, - OBJ_7 /* Sources */, - OBJ_23 /* Tests */, - OBJ_31 /* Products */, - ); - name = ""; - sourceTree = ""; - }; - OBJ_7 /* Sources */ = { - isa = PBXGroup; - children = ( - OBJ_8 /* Concurrency */, - OBJ_18 /* ObjCBridges */, - ); - name = Sources; - sourceTree = SOURCE_ROOT; - }; - OBJ_8 /* Concurrency */ = { - isa = PBXGroup; - children = ( - OBJ_9 /* AtomicBool.swift */, - OBJ_10 /* AtomicInt.swift */, - OBJ_11 /* AtomicReference.swift */, - OBJ_12 /* CountDownLatch.swift */, - OBJ_13 /* Executor */, - ); - name = Concurrency; - path = Sources/Concurrency; - sourceTree = SOURCE_ROOT; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - "Concurrency::Concurrency" /* Concurrency */ = { - isa = PBXNativeTarget; - buildConfigurationList = OBJ_36 /* Build configuration list for PBXNativeTarget "Concurrency" */; - buildPhases = ( - OBJ_39 /* Sources */, - OBJ_48 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - OBJ_50 /* PBXTargetDependency */, - ); - name = Concurrency; - productName = Concurrency; - productReference = "Concurrency::Concurrency::Product" /* Concurrency.framework */; - productType = "com.apple.product-type.framework"; - }; - "Concurrency::ConcurrencyTests" /* ConcurrencyTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = OBJ_64 /* Build configuration list for PBXNativeTarget "ConcurrencyTests" */; - buildPhases = ( - OBJ_67 /* Sources */, - OBJ_73 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - OBJ_76 /* PBXTargetDependency */, - OBJ_77 /* PBXTargetDependency */, - ); - name = ConcurrencyTests; - productName = ConcurrencyTests; - productReference = "Concurrency::ConcurrencyTests::Product" /* ConcurrencyTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; - "Concurrency::ObjCBridges" /* ObjCBridges */ = { - isa = PBXNativeTarget; - buildConfigurationList = OBJ_78 /* Build configuration list for PBXNativeTarget "ObjCBridges" */; - buildPhases = ( - OBJ_81 /* Sources */, - OBJ_83 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = ObjCBridges; - productName = ObjCBridges; - productReference = "Concurrency::ObjCBridges::Product" /* ObjCBridges.framework */; - productType = "com.apple.product-type.framework"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - OBJ_1 /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 1010; - TargetAttributes = { - "Concurrency::Concurrency" = { - LastSwiftMigration = 1010; - }; - "Concurrency::ConcurrencyTests" = { - LastSwiftMigration = 1010; - }; - }; - }; - buildConfigurationList = OBJ_2 /* Build configuration list for PBXProject "Concurrency" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = OBJ_5 /* */; - productRefGroup = OBJ_31 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - "Concurrency::Concurrency" /* Concurrency */, - "Concurrency::ConcurrencyTests" /* ConcurrencyTests */, - "Concurrency::ObjCBridges" /* ObjCBridges */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXSourcesBuildPhase section */ - OBJ_39 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 0; - files = ( - OBJ_40 /* AtomicBool.swift in Sources */, - OBJ_41 /* AtomicInt.swift in Sources */, - OBJ_42 /* AtomicReference.swift in Sources */, - OBJ_43 /* CountDownLatch.swift in Sources */, - OBJ_44 /* ConcurrentSequenceExecutor.swift in Sources */, - OBJ_45 /* ImmediateSerialSequenceExecutor.swift in Sources */, - OBJ_46 /* SequenceExecutor.swift in Sources */, - OBJ_47 /* Task.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - OBJ_67 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 0; - files = ( - OBJ_68 /* AtomicBoolTests.swift in Sources */, - OBJ_69 /* AtomicIntTests.swift in Sources */, - OBJ_70 /* AtomicReferenceTests.swift in Sources */, - OBJ_71 /* CountDownLatchTests.swift in Sources */, - OBJ_72 /* ConcurrentSequenceExecutorTests.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - OBJ_81 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 0; - files = ( - OBJ_82 /* AtomicBridges.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - OBJ_50 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = "Concurrency::ObjCBridges" /* ObjCBridges */; - targetProxy = 41B04ADA21C1E84C00328020 /* PBXContainerItemProxy */; - }; - OBJ_76 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = "Concurrency::Concurrency" /* Concurrency */; - targetProxy = 41B04ADB21C1E84C00328020 /* PBXContainerItemProxy */; - }; - OBJ_77 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = "Concurrency::ObjCBridges" /* ObjCBridges */; - targetProxy = 41B04ADC21C1E84C00328020 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - OBJ_3 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - 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_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_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; - COMBINE_HIDPI_IMAGES = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_NS_ASSERTIONS = YES; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; - MACOSX_DEPLOYMENT_TARGET = 10.12; - ONLY_ACTIVE_ARCH = YES; - OTHER_SWIFT_FLAGS = "-DXcode"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = macosx; - SUPPORTED_PLATFORMS = "macosx iphoneos iphonesimulator appletvos appletvsimulator watchos watchsimulator"; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "SWIFT_PACKAGE DEBUG"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - USE_HEADERMAP = NO; - }; - name = Debug; - }; - OBJ_37 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ENABLE_TESTABILITY = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PLATFORM_DIR)/Developer/Library/Frameworks", - ); - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "$(SRCROOT)/Sources/ObjCBridges/include", - "$(SRCROOT)/Concurrency.xcodeproj/GeneratedModuleMap/ObjCBridges", - ); - INFOPLIST_FILE = Concurrency.xcodeproj/Concurrency_Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) $(TOOLCHAIN_DIR)/usr/lib/swift/macosx"; - OTHER_CFLAGS = "$(inherited)"; - OTHER_LDFLAGS = "$(inherited)"; - OTHER_SWIFT_FLAGS = "$(inherited) -Xcc -fmodule-map-file=$(SRCROOT)/Concurrency.xcodeproj/GeneratedModuleMap/ObjCBridges/module.modulemap"; - PRODUCT_BUNDLE_IDENTIFIER = Concurrency; - PRODUCT_MODULE_NAME = "$(TARGET_NAME:c99extidentifier)"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited)"; - SWIFT_VERSION = 4.2; - TARGET_NAME = Concurrency; - }; - name = Debug; - }; - OBJ_38 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ENABLE_TESTABILITY = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PLATFORM_DIR)/Developer/Library/Frameworks", - ); - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "$(SRCROOT)/Sources/ObjCBridges/include", - "$(SRCROOT)/Concurrency.xcodeproj/GeneratedModuleMap/ObjCBridges", - ); - INFOPLIST_FILE = Concurrency.xcodeproj/Concurrency_Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) $(TOOLCHAIN_DIR)/usr/lib/swift/macosx"; - OTHER_CFLAGS = "$(inherited)"; - OTHER_LDFLAGS = "$(inherited)"; - OTHER_SWIFT_FLAGS = "$(inherited) -Xcc -fmodule-map-file=$(SRCROOT)/Concurrency.xcodeproj/GeneratedModuleMap/ObjCBridges/module.modulemap"; - PRODUCT_BUNDLE_IDENTIFIER = Concurrency; - PRODUCT_MODULE_NAME = "$(TARGET_NAME:c99extidentifier)"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited)"; - SWIFT_VERSION = 4.2; - TARGET_NAME = Concurrency; - }; - name = Release; - }; - OBJ_4 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - 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_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_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; - COMBINE_HIDPI_IMAGES = YES; - COPY_PHASE_STRIP = YES; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = s; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; - MACOSX_DEPLOYMENT_TARGET = 10.12; - OTHER_SWIFT_FLAGS = "-DXcode"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = macosx; - SUPPORTED_PLATFORMS = "macosx iphoneos iphonesimulator appletvos appletvsimulator watchos watchsimulator"; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = SWIFT_PACKAGE; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - USE_HEADERMAP = NO; - }; - name = Release; - }; - OBJ_65 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - CLANG_ENABLE_MODULES = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PLATFORM_DIR)/Developer/Library/Frameworks", - ); - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "$(SRCROOT)/Sources/ObjCBridges/include", - "$(SRCROOT)/Concurrency.xcodeproj/GeneratedModuleMap/ObjCBridges", - ); - INFOPLIST_FILE = Concurrency.xcodeproj/ConcurrencyTests_Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @loader_path/../Frameworks @loader_path/Frameworks"; - OTHER_CFLAGS = "$(inherited)"; - OTHER_LDFLAGS = "$(inherited)"; - OTHER_SWIFT_FLAGS = "$(inherited) -Xcc -fmodule-map-file=$(SRCROOT)/Concurrency.xcodeproj/GeneratedModuleMap/ObjCBridges/module.modulemap"; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited)"; - SWIFT_VERSION = 4.2; - TARGET_NAME = ConcurrencyTests; - }; - name = Debug; - }; - OBJ_66 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - CLANG_ENABLE_MODULES = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PLATFORM_DIR)/Developer/Library/Frameworks", - ); - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "$(SRCROOT)/Sources/ObjCBridges/include", - "$(SRCROOT)/Concurrency.xcodeproj/GeneratedModuleMap/ObjCBridges", - ); - INFOPLIST_FILE = Concurrency.xcodeproj/ConcurrencyTests_Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @loader_path/../Frameworks @loader_path/Frameworks"; - OTHER_CFLAGS = "$(inherited)"; - OTHER_LDFLAGS = "$(inherited)"; - OTHER_SWIFT_FLAGS = "$(inherited) -Xcc -fmodule-map-file=$(SRCROOT)/Concurrency.xcodeproj/GeneratedModuleMap/ObjCBridges/module.modulemap"; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited)"; - SWIFT_VERSION = 4.2; - TARGET_NAME = ConcurrencyTests; - }; - name = Release; - }; - OBJ_79 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - DEFINES_MODULE = NO; - ENABLE_TESTABILITY = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PLATFORM_DIR)/Developer/Library/Frameworks", - ); - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "$(SRCROOT)/Sources/ObjCBridges/include", - ); - INFOPLIST_FILE = Concurrency.xcodeproj/ObjCBridges_Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) $(TOOLCHAIN_DIR)/usr/lib/swift/macosx"; - OTHER_CFLAGS = "$(inherited)"; - OTHER_LDFLAGS = "$(inherited)"; - OTHER_SWIFT_FLAGS = "$(inherited)"; - PRODUCT_BUNDLE_IDENTIFIER = ObjCBridges; - PRODUCT_MODULE_NAME = "$(TARGET_NAME:c99extidentifier)"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited)"; - TARGET_NAME = ObjCBridges; - }; - name = Debug; - }; - OBJ_80 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - DEFINES_MODULE = NO; - ENABLE_TESTABILITY = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PLATFORM_DIR)/Developer/Library/Frameworks", - ); - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "$(SRCROOT)/Sources/ObjCBridges/include", - ); - INFOPLIST_FILE = Concurrency.xcodeproj/ObjCBridges_Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) $(TOOLCHAIN_DIR)/usr/lib/swift/macosx"; - OTHER_CFLAGS = "$(inherited)"; - OTHER_LDFLAGS = "$(inherited)"; - OTHER_SWIFT_FLAGS = "$(inherited)"; - PRODUCT_BUNDLE_IDENTIFIER = ObjCBridges; - PRODUCT_MODULE_NAME = "$(TARGET_NAME:c99extidentifier)"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited)"; - TARGET_NAME = ObjCBridges; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - OBJ_2 /* Build configuration list for PBXProject "Concurrency" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - OBJ_3 /* Debug */, - OBJ_4 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - OBJ_36 /* Build configuration list for PBXNativeTarget "Concurrency" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - OBJ_37 /* Debug */, - OBJ_38 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - OBJ_64 /* Build configuration list for PBXNativeTarget "ConcurrencyTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - OBJ_65 /* Debug */, - OBJ_66 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - OBJ_78 /* Build configuration list for PBXNativeTarget "ObjCBridges" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - OBJ_79 /* Debug */, - OBJ_80 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = OBJ_1 /* Project object */; + archiveVersion = "1"; + objectVersion = "46"; + objects = { + "Concurrency::Concurrency" = { + isa = "PBXNativeTarget"; + buildConfigurationList = "OBJ_36"; + buildPhases = ( + "OBJ_39", + "OBJ_48" + ); + dependencies = ( + "OBJ_50" + ); + name = "Concurrency"; + productName = "Concurrency"; + productReference = "Concurrency::Concurrency::Product"; + productType = "com.apple.product-type.framework"; + }; + "Concurrency::Concurrency::Product" = { + isa = "PBXFileReference"; + path = "Concurrency.framework"; + sourceTree = "BUILT_PRODUCTS_DIR"; + }; + "Concurrency::ConcurrencyPackageTests::ProductTarget" = { + isa = "PBXAggregateTarget"; + buildConfigurationList = "OBJ_59"; + buildPhases = ( + ); + dependencies = ( + "OBJ_62" + ); + name = "ConcurrencyPackageTests"; + productName = "ConcurrencyPackageTests"; + }; + "Concurrency::ConcurrencyTests" = { + isa = "PBXNativeTarget"; + buildConfigurationList = "OBJ_64"; + buildPhases = ( + "OBJ_67", + "OBJ_73" + ); + dependencies = ( + "OBJ_76", + "OBJ_77" + ); + name = "ConcurrencyTests"; + productName = "ConcurrencyTests"; + productReference = "Concurrency::ConcurrencyTests::Product"; + productType = "com.apple.product-type.bundle.unit-test"; + }; + "Concurrency::ConcurrencyTests::Product" = { + isa = "PBXFileReference"; + path = "ConcurrencyTests.xctest"; + sourceTree = "BUILT_PRODUCTS_DIR"; + }; + "Concurrency::ObjCBridges" = { + isa = "PBXNativeTarget"; + buildConfigurationList = "OBJ_78"; + buildPhases = ( + "OBJ_81", + "OBJ_83" + ); + dependencies = ( + ); + name = "ObjCBridges"; + productName = "ObjCBridges"; + productReference = "Concurrency::ObjCBridges::Product"; + productType = "com.apple.product-type.framework"; + }; + "Concurrency::ObjCBridges::Product" = { + isa = "PBXFileReference"; + path = "ObjCBridges.framework"; + sourceTree = "BUILT_PRODUCTS_DIR"; + }; + "Concurrency::SwiftPMPackageDescription" = { + isa = "PBXNativeTarget"; + buildConfigurationList = "OBJ_53"; + buildPhases = ( + "OBJ_56" + ); + dependencies = ( + ); + name = "ConcurrencyPackageDescription"; + productName = "ConcurrencyPackageDescription"; + productType = "com.apple.product-type.framework"; + }; + "OBJ_1" = { + isa = "PBXProject"; + attributes = { + LastUpgradeCheck = "9999"; + }; + buildConfigurationList = "OBJ_2"; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = "English"; + hasScannedForEncodings = "0"; + knownRegions = ( + "en" + ); + mainGroup = "OBJ_5"; + productRefGroup = "OBJ_31"; + projectDirPath = "."; + targets = ( + "Concurrency::Concurrency", + "Concurrency::SwiftPMPackageDescription", + "Concurrency::ConcurrencyPackageTests::ProductTarget", + "Concurrency::ConcurrencyTests", + "Concurrency::ObjCBridges" + ); + }; + "OBJ_10" = { + isa = "PBXGroup"; + children = ( + "OBJ_11", + "OBJ_12" + ); + name = "include"; + path = "include"; + sourceTree = ""; + }; + "OBJ_11" = { + isa = "PBXFileReference"; + path = "AtomicBridges.h"; + sourceTree = ""; + }; + "OBJ_12" = { + isa = "PBXFileReference"; + name = "module.modulemap"; + path = "/Users/yiw/Uber/GitHub/swift-concurrency/Concurrency.xcodeproj/GeneratedModuleMap/ObjCBridges/module.modulemap"; + sourceTree = ""; + }; + "OBJ_13" = { + isa = "PBXGroup"; + children = ( + "OBJ_14", + "OBJ_15", + "OBJ_16", + "OBJ_17", + "OBJ_18" + ); + name = "Concurrency"; + path = "Sources/Concurrency"; + sourceTree = "SOURCE_ROOT"; + }; + "OBJ_14" = { + isa = "PBXFileReference"; + path = "AtomicBool.swift"; + sourceTree = ""; + }; + "OBJ_15" = { + isa = "PBXFileReference"; + path = "AtomicInt.swift"; + sourceTree = ""; + }; + "OBJ_16" = { + isa = "PBXFileReference"; + path = "AtomicReference.swift"; + sourceTree = ""; + }; + "OBJ_17" = { + isa = "PBXFileReference"; + path = "CountDownLatch.swift"; + sourceTree = ""; + }; + "OBJ_18" = { + isa = "PBXGroup"; + children = ( + "OBJ_19", + "OBJ_20", + "OBJ_21", + "OBJ_22" + ); + name = "Executor"; + path = "Executor"; + sourceTree = ""; + }; + "OBJ_19" = { + isa = "PBXFileReference"; + path = "ConcurrentSequenceExecutor.swift"; + sourceTree = ""; + }; + "OBJ_2" = { + isa = "XCConfigurationList"; + buildConfigurations = ( + "OBJ_3", + "OBJ_4" + ); + defaultConfigurationIsVisible = "0"; + defaultConfigurationName = "Release"; + }; + "OBJ_20" = { + isa = "PBXFileReference"; + path = "ImmediateSerialSequenceExecutor.swift"; + sourceTree = ""; + }; + "OBJ_21" = { + isa = "PBXFileReference"; + path = "SequenceExecutor.swift"; + sourceTree = ""; + }; + "OBJ_22" = { + isa = "PBXFileReference"; + path = "Task.swift"; + sourceTree = ""; + }; + "OBJ_23" = { + isa = "PBXGroup"; + children = ( + "OBJ_24" + ); + name = "Tests"; + path = ""; + sourceTree = "SOURCE_ROOT"; + }; + "OBJ_24" = { + isa = "PBXGroup"; + children = ( + "OBJ_25", + "OBJ_26", + "OBJ_27", + "OBJ_28", + "OBJ_29" + ); + name = "ConcurrencyTests"; + path = "Tests/ConcurrencyTests"; + sourceTree = "SOURCE_ROOT"; + }; + "OBJ_25" = { + isa = "PBXFileReference"; + path = "AtomicBoolTests.swift"; + sourceTree = ""; + }; + "OBJ_26" = { + isa = "PBXFileReference"; + path = "AtomicIntTests.swift"; + sourceTree = ""; + }; + "OBJ_27" = { + isa = "PBXFileReference"; + path = "AtomicReferenceTests.swift"; + sourceTree = ""; + }; + "OBJ_28" = { + isa = "PBXFileReference"; + path = "CountDownLatchTests.swift"; + sourceTree = ""; + }; + "OBJ_29" = { + isa = "PBXGroup"; + children = ( + "OBJ_30" + ); + name = "Executor"; + path = "Executor"; + sourceTree = ""; + }; + "OBJ_3" = { + isa = "XCBuildConfiguration"; + buildSettings = { + CLANG_ENABLE_OBJC_ARC = "YES"; + COMBINE_HIDPI_IMAGES = "YES"; + COPY_PHASE_STRIP = "NO"; + DEBUG_INFORMATION_FORMAT = "dwarf"; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_NS_ASSERTIONS = "YES"; + GCC_OPTIMIZATION_LEVEL = "0"; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)" + ); + MACOSX_DEPLOYMENT_TARGET = "10.10"; + ONLY_ACTIVE_ARCH = "YES"; + OTHER_SWIFT_FLAGS = ( + "-DXcode" + ); + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = "macosx"; + SUPPORTED_PLATFORMS = ( + "macosx", + "iphoneos", + "iphonesimulator", + "appletvos", + "appletvsimulator", + "watchos", + "watchsimulator" + ); + SWIFT_ACTIVE_COMPILATION_CONDITIONS = ( + "SWIFT_PACKAGE", + "DEBUG" + ); + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + USE_HEADERMAP = "NO"; + }; + name = "Debug"; + }; + "OBJ_30" = { + isa = "PBXFileReference"; + path = "ConcurrentSequenceExecutorTests.swift"; + sourceTree = ""; + }; + "OBJ_31" = { + isa = "PBXGroup"; + children = ( + "Concurrency::Concurrency::Product", + "Concurrency::ObjCBridges::Product", + "Concurrency::ConcurrencyTests::Product" + ); + name = "Products"; + path = ""; + sourceTree = "BUILT_PRODUCTS_DIR"; + }; + "OBJ_36" = { + isa = "XCConfigurationList"; + buildConfigurations = ( + "OBJ_37", + "OBJ_38" + ); + defaultConfigurationIsVisible = "0"; + defaultConfigurationName = "Release"; + }; + "OBJ_37" = { + isa = "XCBuildConfiguration"; + buildSettings = { + ENABLE_TESTABILITY = "YES"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PLATFORM_DIR)/Developer/Library/Frameworks" + ); + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "$(SRCROOT)/Sources/ObjCBridges/include", + "$(SRCROOT)/Concurrency.xcodeproj/GeneratedModuleMap/ObjCBridges" + ); + INFOPLIST_FILE = "Concurrency.xcodeproj/Concurrency_Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "$(TOOLCHAIN_DIR)/usr/lib/swift/macosx" + ); + OTHER_CFLAGS = ( + "$(inherited)" + ); + OTHER_LDFLAGS = ( + "$(inherited)" + ); + OTHER_SWIFT_FLAGS = ( + "$(inherited)", + "-Xcc", + "-fmodule-map-file=$(SRCROOT)/Concurrency.xcodeproj/GeneratedModuleMap/ObjCBridges/module.modulemap" + ); + PRODUCT_BUNDLE_IDENTIFIER = "Concurrency"; + PRODUCT_MODULE_NAME = "$(TARGET_NAME:c99extidentifier)"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SKIP_INSTALL = "YES"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = ( + "$(inherited)" + ); + SWIFT_VERSION = "4.0"; + TARGET_NAME = "Concurrency"; + }; + name = "Debug"; + }; + "OBJ_38" = { + isa = "XCBuildConfiguration"; + buildSettings = { + ENABLE_TESTABILITY = "YES"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PLATFORM_DIR)/Developer/Library/Frameworks" + ); + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "$(SRCROOT)/Sources/ObjCBridges/include", + "$(SRCROOT)/Concurrency.xcodeproj/GeneratedModuleMap/ObjCBridges" + ); + INFOPLIST_FILE = "Concurrency.xcodeproj/Concurrency_Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "$(TOOLCHAIN_DIR)/usr/lib/swift/macosx" + ); + OTHER_CFLAGS = ( + "$(inherited)" + ); + OTHER_LDFLAGS = ( + "$(inherited)" + ); + OTHER_SWIFT_FLAGS = ( + "$(inherited)", + "-Xcc", + "-fmodule-map-file=$(SRCROOT)/Concurrency.xcodeproj/GeneratedModuleMap/ObjCBridges/module.modulemap" + ); + PRODUCT_BUNDLE_IDENTIFIER = "Concurrency"; + PRODUCT_MODULE_NAME = "$(TARGET_NAME:c99extidentifier)"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SKIP_INSTALL = "YES"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = ( + "$(inherited)" + ); + SWIFT_VERSION = "4.0"; + TARGET_NAME = "Concurrency"; + }; + name = "Release"; + }; + "OBJ_39" = { + isa = "PBXSourcesBuildPhase"; + files = ( + "OBJ_40", + "OBJ_41", + "OBJ_42", + "OBJ_43", + "OBJ_44", + "OBJ_45", + "OBJ_46", + "OBJ_47" + ); + }; + "OBJ_4" = { + isa = "XCBuildConfiguration"; + buildSettings = { + CLANG_ENABLE_OBJC_ARC = "YES"; + COMBINE_HIDPI_IMAGES = "YES"; + COPY_PHASE_STRIP = "YES"; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_OPTIMIZATION_LEVEL = "s"; + MACOSX_DEPLOYMENT_TARGET = "10.10"; + OTHER_SWIFT_FLAGS = ( + "-DXcode" + ); + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = "macosx"; + SUPPORTED_PLATFORMS = ( + "macosx", + "iphoneos", + "iphonesimulator", + "appletvos", + "appletvsimulator", + "watchos", + "watchsimulator" + ); + SWIFT_ACTIVE_COMPILATION_CONDITIONS = ( + "SWIFT_PACKAGE" + ); + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + USE_HEADERMAP = "NO"; + }; + name = "Release"; + }; + "OBJ_40" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_14"; + }; + "OBJ_41" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_15"; + }; + "OBJ_42" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_16"; + }; + "OBJ_43" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_17"; + }; + "OBJ_44" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_19"; + }; + "OBJ_45" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_20"; + }; + "OBJ_46" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_21"; + }; + "OBJ_47" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_22"; + }; + "OBJ_48" = { + isa = "PBXFrameworksBuildPhase"; + files = ( + "OBJ_49" + ); + }; + "OBJ_49" = { + isa = "PBXBuildFile"; + fileRef = "Concurrency::ObjCBridges::Product"; + }; + "OBJ_5" = { + isa = "PBXGroup"; + children = ( + "OBJ_6", + "OBJ_7", + "OBJ_23", + "OBJ_31" + ); + path = ""; + sourceTree = ""; + }; + "OBJ_50" = { + isa = "PBXTargetDependency"; + target = "Concurrency::ObjCBridges"; + }; + "OBJ_53" = { + isa = "XCConfigurationList"; + buildConfigurations = ( + "OBJ_54", + "OBJ_55" + ); + defaultConfigurationIsVisible = "0"; + defaultConfigurationName = "Release"; + }; + "OBJ_54" = { + isa = "XCBuildConfiguration"; + buildSettings = { + LD = "/usr/bin/true"; + OTHER_SWIFT_FLAGS = ( + "-swift-version", + "4", + "-I", + "$(TOOLCHAIN_DIR)/usr/lib/swift/pm/4", + "-target", + "x86_64-apple-macosx10.10", + "-sdk", + "/Applications/Xcode.10.1.0.10B61.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk" + ); + SWIFT_VERSION = "4.0"; + }; + name = "Debug"; + }; + "OBJ_55" = { + isa = "XCBuildConfiguration"; + buildSettings = { + LD = "/usr/bin/true"; + OTHER_SWIFT_FLAGS = ( + "-swift-version", + "4", + "-I", + "$(TOOLCHAIN_DIR)/usr/lib/swift/pm/4", + "-target", + "x86_64-apple-macosx10.10", + "-sdk", + "/Applications/Xcode.10.1.0.10B61.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk" + ); + SWIFT_VERSION = "4.0"; + }; + name = "Release"; + }; + "OBJ_56" = { + isa = "PBXSourcesBuildPhase"; + files = ( + "OBJ_57" + ); + }; + "OBJ_57" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_6"; + }; + "OBJ_59" = { + isa = "XCConfigurationList"; + buildConfigurations = ( + "OBJ_60", + "OBJ_61" + ); + defaultConfigurationIsVisible = "0"; + defaultConfigurationName = "Release"; + }; + "OBJ_6" = { + isa = "PBXFileReference"; + explicitFileType = "sourcecode.swift"; + path = "Package.swift"; + sourceTree = ""; + }; + "OBJ_60" = { + isa = "XCBuildConfiguration"; + buildSettings = { + }; + name = "Debug"; + }; + "OBJ_61" = { + isa = "XCBuildConfiguration"; + buildSettings = { + }; + name = "Release"; + }; + "OBJ_62" = { + isa = "PBXTargetDependency"; + target = "Concurrency::ConcurrencyTests"; + }; + "OBJ_64" = { + isa = "XCConfigurationList"; + buildConfigurations = ( + "OBJ_65", + "OBJ_66" + ); + defaultConfigurationIsVisible = "0"; + defaultConfigurationName = "Release"; + }; + "OBJ_65" = { + isa = "XCBuildConfiguration"; + buildSettings = { + CLANG_ENABLE_MODULES = "YES"; + EMBEDDED_CONTENT_CONTAINS_SWIFT = "YES"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PLATFORM_DIR)/Developer/Library/Frameworks" + ); + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "$(SRCROOT)/Sources/ObjCBridges/include", + "$(SRCROOT)/Concurrency.xcodeproj/GeneratedModuleMap/ObjCBridges" + ); + INFOPLIST_FILE = "Concurrency.xcodeproj/ConcurrencyTests_Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@loader_path/../Frameworks", + "@loader_path/Frameworks" + ); + OTHER_CFLAGS = ( + "$(inherited)" + ); + OTHER_LDFLAGS = ( + "$(inherited)" + ); + OTHER_SWIFT_FLAGS = ( + "$(inherited)", + "-Xcc", + "-fmodule-map-file=$(SRCROOT)/Concurrency.xcodeproj/GeneratedModuleMap/ObjCBridges/module.modulemap" + ); + SWIFT_ACTIVE_COMPILATION_CONDITIONS = ( + "$(inherited)" + ); + SWIFT_VERSION = "4.0"; + TARGET_NAME = "ConcurrencyTests"; + }; + name = "Debug"; + }; + "OBJ_66" = { + isa = "XCBuildConfiguration"; + buildSettings = { + CLANG_ENABLE_MODULES = "YES"; + EMBEDDED_CONTENT_CONTAINS_SWIFT = "YES"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PLATFORM_DIR)/Developer/Library/Frameworks" + ); + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "$(SRCROOT)/Sources/ObjCBridges/include", + "$(SRCROOT)/Concurrency.xcodeproj/GeneratedModuleMap/ObjCBridges" + ); + INFOPLIST_FILE = "Concurrency.xcodeproj/ConcurrencyTests_Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@loader_path/../Frameworks", + "@loader_path/Frameworks" + ); + OTHER_CFLAGS = ( + "$(inherited)" + ); + OTHER_LDFLAGS = ( + "$(inherited)" + ); + OTHER_SWIFT_FLAGS = ( + "$(inherited)", + "-Xcc", + "-fmodule-map-file=$(SRCROOT)/Concurrency.xcodeproj/GeneratedModuleMap/ObjCBridges/module.modulemap" + ); + SWIFT_ACTIVE_COMPILATION_CONDITIONS = ( + "$(inherited)" + ); + SWIFT_VERSION = "4.0"; + TARGET_NAME = "ConcurrencyTests"; + }; + name = "Release"; + }; + "OBJ_67" = { + isa = "PBXSourcesBuildPhase"; + files = ( + "OBJ_68", + "OBJ_69", + "OBJ_70", + "OBJ_71", + "OBJ_72" + ); + }; + "OBJ_68" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_25"; + }; + "OBJ_69" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_26"; + }; + "OBJ_7" = { + isa = "PBXGroup"; + children = ( + "OBJ_8", + "OBJ_13" + ); + name = "Sources"; + path = ""; + sourceTree = "SOURCE_ROOT"; + }; + "OBJ_70" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_27"; + }; + "OBJ_71" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_28"; + }; + "OBJ_72" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_30"; + }; + "OBJ_73" = { + isa = "PBXFrameworksBuildPhase"; + files = ( + "OBJ_74", + "OBJ_75" + ); + }; + "OBJ_74" = { + isa = "PBXBuildFile"; + fileRef = "Concurrency::Concurrency::Product"; + }; + "OBJ_75" = { + isa = "PBXBuildFile"; + fileRef = "Concurrency::ObjCBridges::Product"; + }; + "OBJ_76" = { + isa = "PBXTargetDependency"; + target = "Concurrency::Concurrency"; + }; + "OBJ_77" = { + isa = "PBXTargetDependency"; + target = "Concurrency::ObjCBridges"; + }; + "OBJ_78" = { + isa = "XCConfigurationList"; + buildConfigurations = ( + "OBJ_79", + "OBJ_80" + ); + defaultConfigurationIsVisible = "0"; + defaultConfigurationName = "Release"; + }; + "OBJ_79" = { + isa = "XCBuildConfiguration"; + buildSettings = { + DEFINES_MODULE = "NO"; + ENABLE_TESTABILITY = "YES"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PLATFORM_DIR)/Developer/Library/Frameworks" + ); + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "$(SRCROOT)/Sources/ObjCBridges/include" + ); + INFOPLIST_FILE = "Concurrency.xcodeproj/ObjCBridges_Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "$(TOOLCHAIN_DIR)/usr/lib/swift/macosx" + ); + OTHER_CFLAGS = ( + "$(inherited)" + ); + OTHER_LDFLAGS = ( + "$(inherited)" + ); + OTHER_SWIFT_FLAGS = ( + "$(inherited)" + ); + PRODUCT_BUNDLE_IDENTIFIER = "ObjCBridges"; + PRODUCT_MODULE_NAME = "$(TARGET_NAME:c99extidentifier)"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SKIP_INSTALL = "YES"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = ( + "$(inherited)" + ); + TARGET_NAME = "ObjCBridges"; + }; + name = "Debug"; + }; + "OBJ_8" = { + isa = "PBXGroup"; + children = ( + "OBJ_9", + "OBJ_10" + ); + name = "ObjCBridges"; + path = "Sources/ObjCBridges"; + sourceTree = "SOURCE_ROOT"; + }; + "OBJ_80" = { + isa = "XCBuildConfiguration"; + buildSettings = { + DEFINES_MODULE = "NO"; + ENABLE_TESTABILITY = "YES"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PLATFORM_DIR)/Developer/Library/Frameworks" + ); + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "$(SRCROOT)/Sources/ObjCBridges/include" + ); + INFOPLIST_FILE = "Concurrency.xcodeproj/ObjCBridges_Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "$(TOOLCHAIN_DIR)/usr/lib/swift/macosx" + ); + OTHER_CFLAGS = ( + "$(inherited)" + ); + OTHER_LDFLAGS = ( + "$(inherited)" + ); + OTHER_SWIFT_FLAGS = ( + "$(inherited)" + ); + PRODUCT_BUNDLE_IDENTIFIER = "ObjCBridges"; + PRODUCT_MODULE_NAME = "$(TARGET_NAME:c99extidentifier)"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SKIP_INSTALL = "YES"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = ( + "$(inherited)" + ); + TARGET_NAME = "ObjCBridges"; + }; + name = "Release"; + }; + "OBJ_81" = { + isa = "PBXSourcesBuildPhase"; + files = ( + "OBJ_82" + ); + }; + "OBJ_82" = { + isa = "PBXBuildFile"; + fileRef = "OBJ_9"; + }; + "OBJ_83" = { + isa = "PBXFrameworksBuildPhase"; + files = ( + ); + }; + "OBJ_9" = { + isa = "PBXFileReference"; + path = "AtomicBridges.m"; + sourceTree = ""; + }; + }; + rootObject = "OBJ_1"; } diff --git a/Sources/Concurrency/Executor/ConcurrentSequenceExecutor.swift b/Sources/Concurrency/Executor/ConcurrentSequenceExecutor.swift index 997c1a6..25aa8ac 100644 --- a/Sources/Concurrency/Executor/ConcurrentSequenceExecutor.swift +++ b/Sources/Concurrency/Executor/ConcurrentSequenceExecutor.swift @@ -81,15 +81,19 @@ public class ConcurrentSequenceExecutor: SequenceExecutor { sequenceHandle.willBeginExecuting(taskId: task.id) } - let result = task.typeErasedExecute() - let nextExecution = execution(task, result) - self.taskSemaphore?.signal() - - switch nextExecution { - case .continueSequence(let nextTask): - self.execute(nextTask, with: sequenceHandle, execution) - case .endOfSequence(let result): - sequenceHandle.sequenceDidComplete(with: result) + do { + let result = try task.typeErasedExecute() + let nextExecution = execution(task, result) + self.taskSemaphore?.signal() + + switch nextExecution { + case .continueSequence(let nextTask): + self.execute(nextTask, with: sequenceHandle, execution) + case .endOfSequence(let result): + sequenceHandle.sequenceDidComplete(with: result) + } + } catch { + sequenceHandle.sequenceDidError(with: error) } } } @@ -101,11 +105,12 @@ private class SynchronizedSequenceExecutionHandle: SequenceE private let didCancel = AtomicBool(initialValue: false) private let currentTaskId = AtomicInt(initialValue: nonTrackingDefaultTaskId) - // Use a lock to ensure result is properly accessed, since the read + // Use a lock to ensure result/error is properly accessed, since the read // `await` method may be invoked on a different thread than the write - // `sequenceDidComplete` method. + // `sequenceDidComplete`/`sequenceDidError` method. private let resultLock = NSRecursiveLock() private var result: SequenceResultType? + private var error: Error? fileprivate var isCancelled: Bool { return didCancel.value @@ -125,9 +130,13 @@ private class SynchronizedSequenceExecutionHandle: SequenceE defer { resultLock.unlock() } - // If latch was counted down, the result must have been set. Therefore, - // this forced unwrap is safe. - return result! + if let error = self.error { + throw error + } else { + // If latch was counted down and there is no error, the result must have been + // set. Therefore, this forced-unwrap is safe. + return result! + } } fileprivate func sequenceDidComplete(with result: SequenceResultType) { @@ -138,6 +147,14 @@ private class SynchronizedSequenceExecutionHandle: SequenceE latch.countDown() } + fileprivate func sequenceDidError(with error: Error) { + resultLock.lock() + self.error = error + resultLock.unlock() + + latch.countDown() + } + fileprivate override func cancel() { didCancel.compareAndSet(expect: false, newValue: true) } diff --git a/Sources/Concurrency/Executor/ImmediateSerialSequenceExecutor.swift b/Sources/Concurrency/Executor/ImmediateSerialSequenceExecutor.swift index 667fc78..576b046 100644 --- a/Sources/Concurrency/Executor/ImmediateSerialSequenceExecutor.swift +++ b/Sources/Concurrency/Executor/ImmediateSerialSequenceExecutor.swift @@ -54,13 +54,17 @@ public class ImmediateSerialSequenceExecutor: SequenceExecutor { return } - let result = task.typeErasedExecute() - let nextExecution = execution(task, result) - switch nextExecution { - case .continueSequence(let nextTask): - self.execute(nextTask, with: sequenceHandle, execution) - case .endOfSequence(let result): - sequenceHandle.sequenceDidComplete(with: result) + do { + let result = try task.typeErasedExecute() + let nextExecution = execution(task, result) + switch nextExecution { + case .continueSequence(let nextTask): + self.execute(nextTask, with: sequenceHandle, execution) + case .endOfSequence(let result): + sequenceHandle.sequenceDidComplete(with: result) + } + } catch { + sequenceHandle.sequenceDidError(with: error) } } } @@ -69,19 +73,28 @@ private class SequenceExecutionHandleImpl: SequenceExecution private var didCancel = false private var result: SequenceResultType? + private var error: Error? fileprivate var isCancelled: Bool { return didCancel } fileprivate override func await(withTimeout timeout: TimeInterval?) throws -> SequenceResultType { - return result! + if let error = self.error { + throw error + } else { + return result! + } } fileprivate func sequenceDidComplete(with result: SequenceResultType) { self.result = result } + fileprivate func sequenceDidError(with error: Error) { + self.error = error + } + fileprivate override func cancel() { didCancel = true } diff --git a/Sources/Concurrency/Executor/SequenceExecutor.swift b/Sources/Concurrency/Executor/SequenceExecutor.swift index d87e3f8..27b5029 100644 --- a/Sources/Concurrency/Executor/SequenceExecutor.swift +++ b/Sources/Concurrency/Executor/SequenceExecutor.swift @@ -43,6 +43,7 @@ open class SequenceExecutionHandle { /// completes. /// - throws: `SequenceExecutionError.awaitTimeout` if the given timeout /// period elapsed before the sequence execution completed. + /// - throws: Any error thrown by the task during execution. open func await(withTimeout timeout: TimeInterval?) throws -> SequenceResultType { fatalError("await not yet implemented.") } diff --git a/Sources/Concurrency/Executor/Task.swift b/Sources/Concurrency/Executor/Task.swift index a969e75..a67a75b 100644 --- a/Sources/Concurrency/Executor/Task.swift +++ b/Sources/Concurrency/Executor/Task.swift @@ -32,10 +32,11 @@ public protocol Task { /// - note: This method should only be used by internal executor /// implementations. /// - returns: The type erased execution result of this task. + /// - throws: Any error occurred during execution. // Return type cannot be generic since the `Task` type needs to be // referenced by the executor class which cannot provide type information // for results. - func typeErasedExecute() -> Any + func typeErasedExecute() throws -> Any } /// The base abstraction of a task that has a defined execution result @@ -62,17 +63,19 @@ open class AbstractTask: Task { /// - note: This method should only be used by internal executor /// implementations. /// - returns: The type erased execution result of this task. + /// - throws: Any error occurred during execution. // Return type cannot be generic since the `Task` type needs to be // referenced by the executor class which cannot provide type information // for results. - public final func typeErasedExecute() -> Any { - return execute() + public final func typeErasedExecute() throws -> Any { + return try execute() } /// Execute this task and return the result. /// /// - returns: The execution result of this task. - open func execute() -> ResultType { + /// - throws: Any error occurred during execution. + open func execute() throws -> ResultType { fatalError("\(self).execute is not yet implemented.") } } diff --git a/Tests/ConcurrencyTests/Executor/ConcurrentSequenceExecutorTests.swift b/Tests/ConcurrencyTests/Executor/ConcurrentSequenceExecutorTests.swift index 7936e36..8c199d8 100644 --- a/Tests/ConcurrencyTests/Executor/ConcurrentSequenceExecutorTests.swift +++ b/Tests/ConcurrencyTests/Executor/ConcurrentSequenceExecutorTests.swift @@ -149,18 +149,46 @@ class ConcurrentSequenceExecutorTests: XCTestCase { XCTAssertTrue(didThrowError) } + + func test_executeSequence_taskThrowsError_verifyError() { + let executor = ConcurrentSequenceExecutor(name: "test_executeSequence_withNonTerminatingSequence_withTimeout_verifyAwaitTimeout", shouldTrackTaskId: true) + + let throwTask = MockSelfRepeatingTask(id: 123) { + throw MockError.messagedError("bhdsfgqowfnjkbvnzxcvojqweofbn9823ry3h9g") + } + + let handle = executor.executeSequence(from: throwTask) { (_, result) -> SequenceExecution in + return .endOfSequence(result as! Int) + } + + do { + _ = try handle.await(withTimeout: nil) + XCTFail() + } catch { + switch error { + case MockError.messagedError(let message): + XCTAssertEqual(message, "bhdsfgqowfnjkbvnzxcvojqweofbn9823ry3h9g") + default: + XCTFail() + } + } + } } class MockSelfRepeatingTask: AbstractTask { - private let execution: () -> Int + private let execution: () throws -> Int - init(id: Int = nonTrackingDefaultTaskId, execution: @escaping () -> Int) { + init(id: Int = nonTrackingDefaultTaskId, execution: @escaping () throws -> Int) { self.execution = execution super.init(id: id) } - override func execute() -> Int { - return execution() + override func execute() throws -> Int { + return try execution() } } + +enum MockError: Error { + case messagedError(String) +}