diff --git a/MobiusCore/Source/Disposables/EmptyDisposable.swift b/MobiusCore/Source/Disposables/EmptyDisposable.swift new file mode 100644 index 00000000..006bade3 --- /dev/null +++ b/MobiusCore/Source/Disposables/EmptyDisposable.swift @@ -0,0 +1,15 @@ +// Copyright Spotify AB. +// SPDX-License-Identifier: Apache-2.0 + +import Foundation + +/// The `EmptyDisposable` class implements a `Disposable` type for when you don't have anything to dispose of. +public final class EmptyDisposable: MobiusCore.Disposable { + + /// Create an `EmptyDisposable` + public init() {} + + public func dispose() { + // No-op + } +} diff --git a/MobiusCore/Source/EffectHandlers/EffectRouterDSL.swift b/MobiusCore/Source/EffectHandlers/EffectRouterDSL.swift index d3afd56a..1e682d77 100644 --- a/MobiusCore/Source/EffectHandlers/EffectRouterDSL.swift +++ b/MobiusCore/Source/EffectHandlers/EffectRouterDSL.swift @@ -31,7 +31,7 @@ public extension _PartialEffectRouter { return to { parameters, callback in fireAndForget(parameters) callback.end() - return AnonymousDisposable {} + return EmptyDisposable() } } @@ -47,7 +47,7 @@ public extension _PartialEffectRouter { callback.send(event) } callback.end() - return AnonymousDisposable {} + return EmptyDisposable() } } } diff --git a/MobiusCore/Source/EventSources/CompositeEventSourceBuilder.swift b/MobiusCore/Source/EventSources/CompositeEventSourceBuilder.swift index e47f54fa..63fd3838 100644 --- a/MobiusCore/Source/EventSources/CompositeEventSourceBuilder.swift +++ b/MobiusCore/Source/EventSources/CompositeEventSourceBuilder.swift @@ -29,7 +29,7 @@ public struct CompositeEventSourceBuilder { public func build() -> AnyEventSource { switch eventSources.count { case 0: - return AnyEventSource { _ in AnonymousDisposable {} } + return AnyEventSource { _ in EmptyDisposable() } case 1: return eventSources[0] default: diff --git a/MobiusCore/Test/EffectHandlers/EffectHandlerTests.swift b/MobiusCore/Test/EffectHandlers/EffectHandlerTests.swift index 9216ac93..750549a6 100644 --- a/MobiusCore/Test/EffectHandlers/EffectHandlerTests.swift +++ b/MobiusCore/Test/EffectHandlers/EffectHandlerTests.swift @@ -72,5 +72,5 @@ private func handleEffect(effect: Effect, callback: EffectCallback) -> Di callback.send(.eventForEffect1) } callback.end() - return AnonymousDisposable {} + return EmptyDisposable() } diff --git a/MobiusCore/Test/EffectHandlers/EffectRouterDSLTests.swift b/MobiusCore/Test/EffectHandlers/EffectRouterDSLTests.swift index 6f0ecbfd..d8721fae 100644 --- a/MobiusCore/Test/EffectHandlers/EffectRouterDSLTests.swift +++ b/MobiusCore/Test/EffectHandlers/EffectRouterDSLTests.swift @@ -156,7 +156,7 @@ class EffectRouterDSLTests: QuickSpec { expect(effect).to(equal(.effect1)) callback.send(.eventForEffect1) callback.end() - return AnonymousDisposable {} + return EmptyDisposable() } .asConnectable .connect { events.append($0) } diff --git a/MobiusCore/Test/EffectHandlers/EffectRouterTests.swift b/MobiusCore/Test/EffectHandlers/EffectRouterTests.swift index ac8b3f06..366b0203 100644 --- a/MobiusCore/Test/EffectHandlers/EffectRouterTests.swift +++ b/MobiusCore/Test/EffectHandlers/EffectRouterTests.swift @@ -87,7 +87,7 @@ class EffectRouterTests: QuickSpec { .to { _, callback in callback.send(.eventForEffect2) callback.end() - return AnonymousDisposable {} + return EmptyDisposable() } .asConnectable @@ -108,7 +108,7 @@ class EffectRouterTests: QuickSpec { beforeEach { let handler = AnyEffectHandler { _, _ in - AnonymousDisposable {} + EmptyDisposable() } let invalidRouter = EffectRouter() .routeEffects(equalTo: .multipleHandlersForThisEffect).to(handler) @@ -152,7 +152,7 @@ class EffectRouterTests: QuickSpec { .routeEffects(equalTo: .effect2) .to { _, callback in callback.end() - return AnonymousDisposable {} + return EmptyDisposable() } .asConnectable diff --git a/MobiusCore/Test/NonReentrancyTests.swift b/MobiusCore/Test/NonReentrancyTests.swift index 08461459..1ff1b0d4 100644 --- a/MobiusCore/Test/NonReentrancyTests.swift +++ b/MobiusCore/Test/NonReentrancyTests.swift @@ -56,7 +56,7 @@ class NonReentrancyTests: QuickSpec { let testEffectHandler = AnyEffectHandler { handleEffect($0, $1) - return AnonymousDisposable {} + return EmptyDisposable() } let effectConnectable = EffectRouter() diff --git a/MobiusExtras/Test/EventSource+ExtensionsTests.swift b/MobiusExtras/Test/EventSource+ExtensionsTests.swift index 82404354..6ba01803 100644 --- a/MobiusExtras/Test/EventSource+ExtensionsTests.swift +++ b/MobiusExtras/Test/EventSource+ExtensionsTests.swift @@ -16,7 +16,7 @@ class EventSourceExtensionsTests: QuickSpec { beforeEach { intEventSource = AnyEventSource { (consumer: @escaping (Int) -> Void) in subscribedIntConsumer = consumer - return AnonymousDisposable {} + return EmptyDisposable() } }