Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support #if branching in enum reducers/state #2800

Merged
merged 4 commits into from
Feb 26, 2024
Merged

Conversation

stephencelis
Copy link
Member

This adds support for #if branching across enum cases in observable state and reducer enums.

This adds support for `#if` branching across enum cases in observable
state and reducer enums.
@stephencelis
Copy link
Member Author

This is updated for #2827. I don't think there is a reasonable way to parse #if conditions and accumulate the proper body type per branching leaf, especially when it comes to reusing the same condition more than once, and in slightly different ways:

#if os(macOS) && DEBUG
  case macFeature1(MacFeature1)
#endif
 // other features
#if DEBUG && os(macOS)
  case macFeature2(MacFeature2)
#endif

As such, as soon as a case is contained in an #if we will erase the body to be a Reduce, instead.

In the future when the Swift bug is fixed we can remove this erasure, but it shouldn't be a big deal in the meantime, and isn't much different from the buildAvailability erasure that happens with SwiftUI views.

@stephencelis stephencelis merged commit 656fa9c into main Feb 26, 2024
7 checks passed
@stephencelis stephencelis deleted the if-config-macro-fixes branch February 26, 2024 21:02
cgrindel-self-hosted-renovate bot added a commit to cgrindel/rules_swift_package_manager that referenced this pull request Feb 29, 2024
…ure to from: "1.9.0" (#940)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
|
[pointfreeco/swift-composable-architecture](https://togithub.com/pointfreeco/swift-composable-architecture)
| minor | `from: "1.8.2"` -> `from: "1.9.0"` |

---

### Release Notes

<details>
<summary>pointfreeco/swift-composable-architecture
(pointfreeco/swift-composable-architecture)</summary>

###
[`v1.9.0`](https://togithub.com/pointfreeco/swift-composable-architecture/releases/tag/1.9.0)

[Compare
Source](https://togithub.com/pointfreeco/swift-composable-architecture/compare/1.8.2...1.9.0)

#### What's Changed

See [Migrating to
1.9](https://togithub.com/pointfreeco/swift-composable-architecture/blob/main/Sources/ComposableArchitecture/Documentation.docc/Articles/MigrationGuides/MigratingTo1.9.md)
for more details.

- Added: New versions of `TestStore.send` that accept case key paths
(thanks [@&#8203;scogeo](https://togithub.com/scogeo),
[pointfreeco/swift-composable-architecture#2681;
[pointfreeco/swift-composable-architecture#2868).
- Added `Reducer.dependency(value)`, for overriding a reducer's
dependency using a singleton value of a type
([pointfreeco/swift-composable-architecture#2863).
- Fixed: Improve `Store` diagnostics for deriving bindings
([pointfreeco/swift-composable-architecture#2793).
- Fixed: Avoid erroneous perception checks when `ViewStore`s are
initialized in a view that doesn't use `WithPerceptionTracking`
([pointfreeco/swift-composable-architecture#2849).
- Fixed: Support `#if` branching in `@ObservableState` and enum
`@Reducer`s
([pointfreeco/swift-composable-architecture#2800).
- Infrastructure: Tree navigation documentation fixes (thanks
[@&#8203;imjn](https://togithub.com/imjn),
[pointfreeco/swift-composable-architecture#2837);
presentation reducer documentation fixes (thanks
[@&#8203;ozumin](https://togithub.com/ozumin),
[pointfreeco/swift-composable-architecture#2853).
- Infrastructure: Improve tutorial diffing (thanks
[@&#8203;oka-yuji](https://togithub.com/oka-yuji),
[pointfreeco/swift-composable-architecture#2844).
- Infrastructure: Expand release build test coverage
([pointfreeco/swift-composable-architecture#2856).
- Infrastructure: Document gotcha with macros and previews
([pointfreeco/swift-composable-architecture#2855).

#### New Contributors

- [@&#8203;imjn](https://togithub.com/imjn) made their first
contribution in
[pointfreeco/swift-composable-architecture#2837
- [@&#8203;oka-yuji](https://togithub.com/oka-yuji) made their first
contribution in
[pointfreeco/swift-composable-architecture#2844
- [@&#8203;ozumin](https://togithub.com/ozumin) made their first
contribution in
[pointfreeco/swift-composable-architecture#2853

**Full Changelog**:
pointfreeco/swift-composable-architecture@1.8.2...1.9.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config help](https://togithub.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://togithub.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi4xMDAuMCIsInVwZGF0ZWRJblZlciI6IjM2LjEwMC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

Co-authored-by: Self-hosted Renovate Bot <361546+cgrindel-self-hosted-renovate[bot]@users.noreply.github.enterprise.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants