Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 7 additions & 6 deletions Sources/ComposableArchitectureMacros/ObservableStateMacro.swift
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,6 @@ public struct ObservableStateMacro {
static let ignoredMacroName = "ObservationStateIgnored"
static let presentsMacroName = "Presents"
static let presentationStatePropertyWrapperName = "PresentationState"
static let sharedPropertyWrapperName = "Shared"
static let sharedReaderPropertyWrapperName = "SharedReader"

static let registrarVariableName = "_$observationRegistrar"

Expand Down Expand Up @@ -450,8 +448,7 @@ extension ObservableStateMacro: MemberAttributeMacro {
)

if property.hasMacroApplication(ObservableStateMacro.presentsMacroName)
|| property.hasMacroApplication(ObservableStateMacro.sharedPropertyWrapperName)
|| property.hasMacroApplication(ObservableStateMacro.sharedReaderPropertyWrapperName)
|| knownSupportedPropertyWrappers.contains(where: property.hasMacroApplication)
{
return [
AttributeSyntax(
Expand Down Expand Up @@ -543,7 +540,7 @@ public struct ObservationStateTrackedMacro: AccessorMacro {
if property.hasMacroApplication(ObservableStateMacro.ignoredMacroName)
|| property.hasMacroApplication(ObservableStateMacro.presentationStatePropertyWrapperName)
|| property.hasMacroApplication(ObservableStateMacro.presentsMacroName)
|| property.hasMacroApplication(ObservableStateMacro.sharedPropertyWrapperName)
|| knownSupportedPropertyWrappers.contains(where: property.hasMacroApplication)
{
return []
}
Expand Down Expand Up @@ -602,7 +599,7 @@ extension ObservationStateTrackedMacro: PeerMacro {
if property.hasMacroApplication(ObservableStateMacro.ignoredMacroName)
|| property.hasMacroApplication(ObservableStateMacro.presentationStatePropertyWrapperName)
|| property.hasMacroApplication(ObservableStateMacro.presentsMacroName)
|| property.hasMacroApplication(ObservableStateMacro.sharedPropertyWrapperName)
|| knownSupportedPropertyWrappers.contains(where: property.hasMacroApplication)
|| property.hasMacroApplication(ObservableStateMacro.trackedMacroName)
{
return []
Expand All @@ -626,3 +623,7 @@ public struct ObservationStateIgnoredMacro: AccessorMacro {
return []
}
}

private let knownSupportedPropertyWrappers = [
"Shared", "SharedReader", "Fetch", "FetchAll", "FetchOne"
]
Original file line number Diff line number Diff line change
Expand Up @@ -637,5 +637,45 @@
"""
}
}

func testKnownSupportedPropertyWrappers() {
assertMacro {
"""
@ObservableState
struct State {
@Shared var shared: Int
@SharedReader var sharedReader: Int
@Fetch var fetch: Int
@FetchAll var fetchAll: Int
@FetchOne var fetchOne: Int
}
"""
} expansion: {
"""
struct State {
@Shared
var shared: Int
@SharedReader
var sharedReader: Int
@Fetch
var fetch: Int
@FetchAll
var fetchAll: Int
@FetchOne
var fetchOne: Int

var _$observationRegistrar = ComposableArchitecture.ObservationStateRegistrar()

public var _$id: ComposableArchitecture.ObservableStateID {
_$observationRegistrar.id
}

public mutating func _$willModify() {
_$observationRegistrar._$willModify()
}
}
"""
}
}
}
#endif
Loading