Skip to content

Commit 129d334

Browse files
authored
Ignore new property wrappers with @ObservableState. (#3666)
1 parent abd1331 commit 129d334

File tree

2 files changed

+47
-6
lines changed

2 files changed

+47
-6
lines changed

Sources/ComposableArchitectureMacros/ObservableStateMacro.swift

+7-6
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,6 @@ public struct ObservableStateMacro {
4949
static let ignoredMacroName = "ObservationStateIgnored"
5050
static let presentsMacroName = "Presents"
5151
static let presentationStatePropertyWrapperName = "PresentationState"
52-
static let sharedPropertyWrapperName = "Shared"
53-
static let sharedReaderPropertyWrapperName = "SharedReader"
5452

5553
static let registrarVariableName = "_$observationRegistrar"
5654

@@ -450,8 +448,7 @@ extension ObservableStateMacro: MemberAttributeMacro {
450448
)
451449

452450
if property.hasMacroApplication(ObservableStateMacro.presentsMacroName)
453-
|| property.hasMacroApplication(ObservableStateMacro.sharedPropertyWrapperName)
454-
|| property.hasMacroApplication(ObservableStateMacro.sharedReaderPropertyWrapperName)
451+
|| knownSupportedPropertyWrappers.contains(where: property.hasMacroApplication)
455452
{
456453
return [
457454
AttributeSyntax(
@@ -543,7 +540,7 @@ public struct ObservationStateTrackedMacro: AccessorMacro {
543540
if property.hasMacroApplication(ObservableStateMacro.ignoredMacroName)
544541
|| property.hasMacroApplication(ObservableStateMacro.presentationStatePropertyWrapperName)
545542
|| property.hasMacroApplication(ObservableStateMacro.presentsMacroName)
546-
|| property.hasMacroApplication(ObservableStateMacro.sharedPropertyWrapperName)
543+
|| knownSupportedPropertyWrappers.contains(where: property.hasMacroApplication)
547544
{
548545
return []
549546
}
@@ -602,7 +599,7 @@ extension ObservationStateTrackedMacro: PeerMacro {
602599
if property.hasMacroApplication(ObservableStateMacro.ignoredMacroName)
603600
|| property.hasMacroApplication(ObservableStateMacro.presentationStatePropertyWrapperName)
604601
|| property.hasMacroApplication(ObservableStateMacro.presentsMacroName)
605-
|| property.hasMacroApplication(ObservableStateMacro.sharedPropertyWrapperName)
602+
|| knownSupportedPropertyWrappers.contains(where: property.hasMacroApplication)
606603
|| property.hasMacroApplication(ObservableStateMacro.trackedMacroName)
607604
{
608605
return []
@@ -626,3 +623,7 @@ public struct ObservationStateIgnoredMacro: AccessorMacro {
626623
return []
627624
}
628625
}
626+
627+
private let knownSupportedPropertyWrappers = [
628+
"Shared", "SharedReader", "Fetch", "FetchAll", "FetchOne"
629+
]

Tests/ComposableArchitectureMacrosTests/ObservableStateMacroTests.swift

+40
Original file line numberDiff line numberDiff line change
@@ -637,5 +637,45 @@
637637
"""
638638
}
639639
}
640+
641+
func testKnownSupportedPropertyWrappers() {
642+
assertMacro {
643+
"""
644+
@ObservableState
645+
struct State {
646+
@Shared var shared: Int
647+
@SharedReader var sharedReader: Int
648+
@Fetch var fetch: Int
649+
@FetchAll var fetchAll: Int
650+
@FetchOne var fetchOne: Int
651+
}
652+
"""
653+
} expansion: {
654+
"""
655+
struct State {
656+
@Shared
657+
var shared: Int
658+
@SharedReader
659+
var sharedReader: Int
660+
@Fetch
661+
var fetch: Int
662+
@FetchAll
663+
var fetchAll: Int
664+
@FetchOne
665+
var fetchOne: Int
666+
667+
var _$observationRegistrar = ComposableArchitecture.ObservationStateRegistrar()
668+
669+
public var _$id: ComposableArchitecture.ObservableStateID {
670+
_$observationRegistrar.id
671+
}
672+
673+
public mutating func _$willModify() {
674+
_$observationRegistrar._$willModify()
675+
}
676+
}
677+
"""
678+
}
679+
}
640680
}
641681
#endif

0 commit comments

Comments
 (0)