Skip to content

Commit c9b9d99

Browse files
authored
[gardening]: remove unneeded 'isRootNode' param (#322)
minor cleanup of a now-superfluous parameter used for logging determinations
1 parent 4b9f961 commit c9b9d99

6 files changed

+47
-21
lines changed

Workflow/Sources/SubtreeManager.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -476,7 +476,7 @@ extension WorkflowNode.SubtreeManager {
476476
}
477477

478478
func render() -> W.Rendering {
479-
node.render(isRootNode: false)
479+
node.render()
480480
}
481481

482482
func update(

Workflow/Sources/WorkflowHost.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public final class WorkflowHost<WorkflowType: Workflow> {
6969
observer: observer
7070
)
7171

72-
self.mutableRendering = MutableProperty(rootNode.render(isRootNode: true))
72+
self.mutableRendering = MutableProperty(rootNode.render())
7373
self.rendering = Property(mutableRendering)
7474
rootNode.enableEvents()
7575

@@ -96,7 +96,7 @@ public final class WorkflowHost<WorkflowType: Workflow> {
9696
}
9797

9898
private func handle(output: WorkflowNode<WorkflowType>.Output) {
99-
mutableRendering.value = rootNode.render(isRootNode: true)
99+
mutableRendering.value = rootNode.render()
100100

101101
if let outputEvent = output.outputEvent {
102102
outputEventObserver.send(value: outputEvent)

Workflow/Sources/WorkflowLogger.swift

+6-8
Original file line numberDiff line numberDiff line change
@@ -161,11 +161,10 @@ enum WorkflowLogger {
161161
// MARK: Rendering
162162

163163
static func logWorkflowStartedRendering<WorkflowType>(
164-
ref: WorkflowNode<WorkflowType>,
165-
isRootNode: Bool
164+
ref: WorkflowNode<WorkflowType>
166165
) {
167166
guard shouldLogRenderTimings(
168-
isRootNode: isRootNode
167+
isRootNode: ref.isRootNode
169168
) else { return }
170169

171170
let signpostID = OSSignpostID(log: .active, object: ref)
@@ -180,11 +179,10 @@ enum WorkflowLogger {
180179
}
181180

182181
static func logWorkflowFinishedRendering(
183-
ref: WorkflowNode<some Any>,
184-
isRootNode: Bool
182+
ref: WorkflowNode<some Any>
185183
) {
186184
guard shouldLogRenderTimings(
187-
isRootNode: isRootNode
185+
isRootNode: ref.isRootNode
188186
) else { return }
189187

190188
let signpostID = OSSignpostID(log: .active, object: ref)
@@ -194,7 +192,7 @@ enum WorkflowLogger {
194192
// MARK: - Utilities
195193

196194
private static func shouldLogRenderTimings(
197-
isRootNode: Bool
195+
isRootNode: @autoclosure () -> Bool
198196
) -> Bool {
199197
guard WorkflowLogging.isOSLoggingAllowed else {
200198
return false
@@ -203,7 +201,7 @@ enum WorkflowLogger {
203201
case .none:
204202
return false
205203
case .rootsOnly:
206-
return isRootNode
204+
return isRootNode()
207205
case .allNodes:
208206
return true
209207
}

Workflow/Sources/WorkflowNode.swift

+11-3
Original file line numberDiff line numberDiff line change
@@ -114,8 +114,8 @@ final class WorkflowNode<WorkflowType: Workflow> {
114114
/// - Parameter isRootNode: whether or not this is the root node of the tree. Note, this
115115
/// is currently only used as a hint for the logging infrastructure, and is up to callers to correctly specify.
116116
/// - Returns: A `Rendering` of appropriate type
117-
func render(isRootNode: Bool = false) -> WorkflowType.Rendering {
118-
WorkflowLogger.logWorkflowStartedRendering(ref: self, isRootNode: isRootNode)
117+
func render() -> WorkflowType.Rendering {
118+
WorkflowLogger.logWorkflowStartedRendering(ref: self)
119119

120120
let renderObserverCompletion = observer?.workflowWillRender(
121121
workflow,
@@ -128,7 +128,7 @@ final class WorkflowNode<WorkflowType: Workflow> {
128128
defer {
129129
renderObserverCompletion?(rendering)
130130

131-
WorkflowLogger.logWorkflowFinishedRendering(ref: self, isRootNode: isRootNode)
131+
WorkflowLogger.logWorkflowFinishedRendering(ref: self)
132132
}
133133

134134
rendering = subtreeManager.render { context in
@@ -213,3 +213,11 @@ extension WorkflowNode {
213213
return output
214214
}
215215
}
216+
217+
// MARK: - Utility
218+
219+
extension WorkflowNode {
220+
var isRootNode: Bool {
221+
session.parent == nil
222+
}
223+
}

Workflow/Tests/PerformanceTests.swift

+7-7
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ class PerformanceTests: XCTestCase {
3737
func test_render_wideShallowTree() throws {
3838
measure {
3939
let node = WorkflowNode(workflow: WideShallowParentWorkflow())
40-
_ = node.render(isRootNode: true)
40+
_ = node.render()
4141
}
4242
}
4343

@@ -47,14 +47,14 @@ class PerformanceTests: XCTestCase {
4747
workflow: WideShallowParentWorkflow(),
4848
observer: noOpObserver
4949
)
50-
_ = node.render(isRootNode: true)
50+
_ = node.render()
5151
}
5252
}
5353

5454
func test_render_narrowDeepTree() throws {
5555
measure {
5656
let node = WorkflowNode(workflow: NarrowDeepParentWorkflow())
57-
_ = node.render(isRootNode: true)
57+
_ = node.render()
5858
}
5959
}
6060

@@ -64,7 +64,7 @@ class PerformanceTests: XCTestCase {
6464
workflow: NarrowDeepParentWorkflow(),
6565
observer: noOpObserver
6666
)
67-
_ = node.render(isRootNode: true)
67+
_ = node.render()
6868
}
6969
}
7070

@@ -74,7 +74,7 @@ class PerformanceTests: XCTestCase {
7474

7575
measure {
7676
let node = WorkflowNode(workflow: WideShallowParentWorkflow())
77-
_ = node.render(isRootNode: true)
77+
_ = node.render()
7878
}
7979
}
8080

@@ -84,7 +84,7 @@ class PerformanceTests: XCTestCase {
8484

8585
measure {
8686
let node = WorkflowNode(workflow: WideShallowParentWorkflow())
87-
_ = node.render(isRootNode: true)
87+
_ = node.render()
8888
}
8989
}
9090

@@ -94,7 +94,7 @@ class PerformanceTests: XCTestCase {
9494

9595
measure {
9696
let node = WorkflowNode(workflow: NarrowDeepParentWorkflow())
97-
_ = node.render(isRootNode: true)
97+
_ = node.render()
9898
}
9999
}
100100
}

Workflow/Tests/WorkflowNodeTests.swift

+20
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,26 @@ final class WorkflowNodeTests: XCTestCase {
236236
XCTAssertTrue(sessions[2].workflowType is EventEmittingWorkflow.Type)
237237
XCTAssertEqual(sessions[0].sessionID, sessions[1].parent?.sessionID)
238238
}
239+
240+
func test_isRootNode() {
241+
do {
242+
let root = WorkflowNode(workflow: SimpleWorkflow(string: "root"))
243+
XCTAssert(root.isRootNode)
244+
}
245+
246+
do {
247+
let parentSession = WorkflowSession(
248+
workflow: SimpleWorkflow(string: "parent"),
249+
renderKey: "",
250+
parent: nil
251+
)
252+
let root = WorkflowNode(
253+
workflow: SimpleWorkflow(string: "root"),
254+
parentSession: parentSession
255+
)
256+
XCTAssertFalse(root.isRootNode)
257+
}
258+
}
239259
}
240260

241261
/// Renders two child state machines of types `A` and `B`.

0 commit comments

Comments
 (0)