* Use `AnyHashableSendable` from Concurrency Extras
Rather than use an ad hoc implementation with an `AnyHashable` under the
hood that may not be concurrency safe, let's adopt the helper we added
to the Concurrency Extras packages.
* fix
* wip
* wip
* Add Swift Macro Compatibility Check GitHub Action
This PR adds a **Swift Macro Compatibility Check** GitHub Action to ensure that macro changes remain compatible across different versions of `swift-syntax`. The action automatically verifies compatibility with major `swift-syntax` versions (`509.0.0`, `510.0.0`, `600.0.0`), running builds and tests. It's also posible to turn on checking agains all versions of `swift-syntax`.
#### Key Benefits:
- **Automated Compatibility Checks**: No need to manually test changes across different `swift-syntax` versions—this is handled automatically in CI.
- **Prevents Breakages**: Helps avoid accidentally committing changes that break older versions.
* Use major versions only
* Use `v1` version
---------
Co-authored-by: Stephen Celis <stephen@stephencelis.com>
* Apply existential any to protocol for Swift 6
* Update Package@swift-6.0.swift
* Update Package.swift
* Apply any to Macro.Type
* Apply any for the rest
* Applying the any keyword internally for typealias in a _KeyPath
* Undoing accidental syntax
---------
Co-authored-by: Stephen Celis <stephen@stephencelis.com>
Co-authored-by: Stephen Celis <stephen.celis@gmail.com>
* [FIX] Replace deprecated viewStore with store
* [FIX] Replace deprecated viewStore with store in Article
* [TEST] Match the changed view store message with the test message
* [TEST] Match the changed view store message with the test message
* Remove subscription on cancel
* Slight refactor
* Small refactor
Subscription keeps strong reference of `CurrentValueRelay` similar to `CurrentValueSubject`
* Add subscription lifetime tests
* Use weak subscriptions and remove inside send
* Change relay implementation
* For loop better
* Move tests to StoreTests.swift
* A few more locks and a Shared test.
---------
Co-authored-by: Brandon Williams <mbrandonw@hey.com>
* Edit 04-Navigation-Lists-NavigateAndLoad file in SwiftUI CaseStudies
* Update Examples/CaseStudies/SwiftUICaseStudies/04-Navigation-Lists-NavigateAndLoad.swift
Co-authored-by: Stephen Celis <stephen.celis@gmail.com>
* change selection Type to `Identified<Row.ID, Counter.State?>?`
---------
Co-authored-by: Stephen Celis <stephen.celis@gmail.com>
Co-authored-by: Stephen Celis <stephen@stephencelis.com>
* Warn if bindable store binding action isn't processed
Looks like the warnings we emit when we detect `BindingReducer` is
missing are only applied to view stores, and were not ported over to the
newer observable store bindings.
This PR fixes that, though the main caveat is the messages can't seem to
point to any good context. These bindings are derived from dynamic
member lookup, which can't include source context like file/line.
* wip
* Add test