Skip to content

Commit

Permalink
Add Swift 5.7 support
Browse files Browse the repository at this point in the history
  • Loading branch information
ffried committed Sep 15, 2022
1 parent 9237f10 commit ee63ee0
Show file tree
Hide file tree
Showing 6 changed files with 87 additions and 26 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ jobs:
- uses: swift-actions/[email protected]
id: swift-setup
with:
swift-version: '5.6'
swift-version: '5.7'
- name: Read OS Version
uses: sersoft-gmbh/[email protected]
id: os-version
Expand Down Expand Up @@ -67,7 +67,7 @@ jobs:
- uses: swift-actions/[email protected]
id: swift-setup
with:
swift-version: '5.6'
swift-version: '5.7'
- name: Read OS Version
uses: sersoft-gmbh/[email protected]
id: os-version
Expand Down
50 changes: 28 additions & 22 deletions .github/workflows/swift-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,33 @@ jobs:
test-spm:
strategy:
matrix:
os: [ macos-latest, ubuntu-20.04 ]
swift-version: [ 5.5, 5.6 ]
os: [ macos-11 ]
swift-version: [ '' ]
xcode-version: [ '^13.0' ]
include:
- os: macos-12
swift-version: ''
xcode-version: '^14.0'
- os: ubuntu-20.04
swift-version: 5.5
xcode-version: ''
- os: ubuntu-20.04
swift-version: 5.6
xcode-version: ''
- os: ubuntu-20.04
swift-version: 5.7
xcode-version: ''
- os: ubuntu-22.04
swift-version: 5.7
xcode-version: ''

runs-on: ${{matrix.os}}

steps:
- if: runner.os == 'macOS'
uses: maxim-lobanov/[email protected]
with:
xcode-version: ^13.0
xcode-version: ${{matrix.xcode-version}}
- name: Install Swift
if: runner.os == 'Linux'
uses: sersoft-gmbh/[email protected]
Expand Down Expand Up @@ -55,44 +72,33 @@ jobs:
fail_ci_if_error: true

test-xcode:
runs-on: macos-latest
runs-on: macos-12
strategy:
matrix:
scheme: [GCDOperations-Package]
action: [ test ]
destination:
- platform=macOS
- platform=iOS Simulator,OS=latest,name=iPhone 11 Pro
- platform=iOS Simulator,OS=latest,name=iPad Pro (11-inch) (2nd generation)
- platform=tvOS Simulator,OS=latest,name=Apple TV 4K
include:
# The `XYZ-Package` scheme also builds the test targets, but XCTest is not available on watchOS.
- scheme: GCDOperations
action: build
destination: platform=watchOS Simulator,OS=latest,name=Apple Watch Series 5 - 44mm
- platform=iOS Simulator,OS=latest,name=iPhone 13 Pro
- platform=iOS Simulator,OS=latest,name=iPad Pro (11-inch) (3rd generation)
- platform=tvOS Simulator,OS=latest,name=Apple TV 4K (2nd generation)
- platform=watchOS Simulator,OS=latest,name=Apple Watch Series 7 (45mm)
steps:
- uses: maxim-lobanov/[email protected]
with:
xcode-version: ^13.0
xcode-version: ^14.0
- uses: actions/checkout@v3
- name: Read Swift Version
uses: sersoft-gmbh/[email protected]
id: swift-version
- name: Workaround Package.resolved format issues
if: ${{ startsWith(steps.swift-version.outputs.version, '5.5') }}
run: rm -rf Package.resolved
- uses: sersoft-gmbh/[email protected]
with:
spm-package: './'
scheme: ${{matrix.scheme}}
action: test
scheme: GCDOperations-Package
destination: ${{matrix.destination}}
action: ${{matrix.action}}
- uses: sersoft-gmbh/[email protected]
id: coverage-files
if: matrix.action == 'test'
- uses: codecov/codecov-action@v3
with:
token: ${{secrets.CODECOV_TOKEN}}
files: ${{join(fromJSON(steps.coverage-files.outputs.files), ',')}}
fail_ci_if_error: true
if: matrix.action == 'test'
2 changes: 1 addition & 1 deletion Package.swift
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// swift-tools-version:5.6
// swift-tools-version:5.7
// The swift-tools-version declares the minimum version of Swift required to build this package.

import PackageDescription
Expand Down
43 changes: 43 additions & 0 deletions [email protected]
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
// swift-tools-version:5.6
// The swift-tools-version declares the minimum version of Swift required to build this package.

import PackageDescription
import Foundation

let package = Package(
name: "GCDOperations",
platforms: [
.macOS(.v10_14),
.iOS(.v12),
.tvOS(.v12),
.watchOS(.v4),
],
products: [
// Products define the executables and libraries produced by a package, and make them visible to other packages.
.library(
name: "GCDCoreOperations",
targets: ["GCDCoreOperations"]),
.library(
name: "GCDOperations",
targets: ["GCDOperations"]),
],
targets: [
// Targets are the basic building blocks of a package. A target can define a module or a test suite.
// Targets can depend on other targets in this package, and on products in packages which this package depends on.
.target(
name: "GCDCoreOperations"),
.target(
name: "GCDOperations",
dependencies: ["GCDCoreOperations"]),
.testTarget(
name: "GCDCoreOperationsTests",
dependencies: ["GCDCoreOperations"]),
.testTarget(
name: "GCDOperationsTests",
dependencies: ["GCDOperations"]),
]
)

if ProcessInfo.processInfo.environment["ENABLE_DOCC_SUPPORT"] == "1" {
package.dependencies.append(.package(url: "https://github.com/apple/swift-docc-plugin", from: "1.0.0"))
}
12 changes: 12 additions & 0 deletions Sources/GCDCoreOperations/Condition/OperationCondition.swift
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,19 @@ public protocol AnyConditionError: Error {
var conditionName: String { get }
}

#if compiler(>=5.7)
/// An error describing a failed condition.
public protocol ConditionError<Condition>: AnyConditionError {
/// The condition that has failed.
associatedtype Condition: OperationCondition
}
#else
/// An error describing a failed condition.
public protocol ConditionError: AnyConditionError {
/// The condition that has failed.
associatedtype Condition: OperationCondition
}
#endif

extension ConditionError {
/// inherited
Expand All @@ -60,3 +68,7 @@ public enum OperationConditionResult {
}
}
}

#if compiler(>=5.5.2) && canImport(_Concurrency)
extension OperationConditionResult: Sendable {}
#endif
2 changes: 1 addition & 1 deletion Sources/GCDCoreOperations/Helpers/Synchronized.swift
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,6 @@ final class Synchronized<Value> {
}
}

#if compiler(>=5.5) && canImport(_Concurrency)
#if compiler(>=5.5.2) && canImport(_Concurrency)
extension Synchronized: @unchecked Sendable {}
#endif

0 comments on commit ee63ee0

Please sign in to comment.