@@ -106,17 +106,16 @@ private protocol RuleThreadFlags {
106106}
107107
108108private struct AsyncThreadFlags : RuleThreadFlags {
109- static var value : OGAttributeTypeFlags { . init ( rawValue : 1 << 5 ) }
109+ static var value : OGAttributeTypeFlags { . asyncThread }
110110}
111111
112112private struct MainThreadFlags : RuleThreadFlags {
113- static var value : OGAttributeTypeFlags { . _8 }
113+ static var value : OGAttributeTypeFlags { . mainThread }
114114}
115115
116-
117116// MARK: - StaticBody
118117
119- private struct StaticBody < Accessor: BodyAccessor , ThreadFlags: RuleThreadFlags > : CustomStringConvertible , BodyAccessorRule /*, StatefulRule*/ {
118+ private struct StaticBody < Accessor: BodyAccessor , ThreadFlags: RuleThreadFlags > {
120119 let accessor : Accessor
121120 @Attribute
122121 var container : Accessor . Container
@@ -125,19 +124,23 @@ private struct StaticBody<Accessor: BodyAccessor, ThreadFlags: RuleThreadFlags>:
125124 self . accessor = accessor
126125 self . _container = container
127126 }
128-
127+ }
128+
129+ extension StaticBody : StatefulRule {
130+ typealias Value = Accessor . Body
131+
129132 func updateValue( ) {
130133 accessor. updateBody ( of: container, changed: true )
131134 }
132-
133- var description : String {
134- " \( Accessor . Body. self) "
135- }
136-
135+ }
136+
137+ extension StaticBody : _AttributeBody {
137138 static var flags : OGAttributeTypeFlags {
138139 ThreadFlags . value
139140 }
140-
141+ }
142+
143+ extension StaticBody : BodyAccessorRule {
141144 static var container : Any . Type {
142145 Accessor . Container. self
143146 }
@@ -160,3 +163,7 @@ private struct StaticBody<Accessor: BodyAccessor, ThreadFlags: RuleThreadFlags>:
160163 return [ ( " @self " , attribute. info. body. assumingMemoryBound ( to: Self . self) . pointee. _container. identifier) ]
161164 }
162165}
166+
167+ extension StaticBody : CustomStringConvertible {
168+ var description : String { " \( Accessor . Body. self) " }
169+ }
0 commit comments