Swift 6 compatibility for Xcode 16 #26
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This PR fixes Swift 6 compatibility issues that prevent the SDK from building on Xcode 16. These
changes allow developers to successfully integrate CircleModularWalletsCore via SPM in projects
using Swift 6.
Problem
When building with Xcode 16 (Swift 6), the SDK fails to compile with errors like:
Swift Compiler Error: Property access can throw but is not marked with 'try'
Utils.swift:97:32
And web3swift dependency errors:
Value of type 'RawSpan' has no member 'count'
Value of type 'RawSpan' has no subscripts
Changes
// Before:
.package(url: "...", .upToNextMajor(from: "3.2.2"))
// After:
.package(url: "...", .upToNextMajor(from: "3.2.2")) // Allows 3.3.x
// Before:
let rawClientData = webauthn.clientDataJSON.bytes
// After:
let rawClientData = try webauthn.clientDataJSON.bytes
Swift 6 enforces stricter error handling and recognizes .bytes as a throwing accessor.
// Before:
let callData = contract.method(functionName, parameters: args, extraData: nil)
// After:
let callData = try? contract.method(functionName, parameters: args, extraData: nil)
Testing
Related Issues
Fixes #25
Checklist
Requested Reviewers: @romac @cason @MasterXen @rdragos @christophercampbell