From efb568046891792e40486810eeb4c4ef52e3f94f Mon Sep 17 00:00:00 2001 From: Glen M Date: Sun, 13 Nov 2016 04:45:21 -0500 Subject: [PATCH] Add Emitter.clear() and DisposableStatic.isDisposable() (#12472) --- event-kit/event-kit-tests.ts | 2 ++ event-kit/index.d.ts | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/event-kit/event-kit-tests.ts b/event-kit/event-kit-tests.ts index 8c5969f756..4b4a0d4e7c 100644 --- a/event-kit/event-kit-tests.ts +++ b/event-kit/event-kit-tests.ts @@ -24,6 +24,7 @@ class User { } destroy(): void { + this.emitter.clear(); this.emitter.dispose(); } } @@ -39,6 +40,7 @@ var user = new User(); var subscription = user.onDidChangeName((name: string) => { console.log('User name change to: ' + name); }); +if(Disposable.isDisposable(subscription)) {} subscription.dispose(); // CompositeDisposable diff --git a/event-kit/index.d.ts b/event-kit/index.d.ts index de4e7a485c..0e2efc1e65 100644 --- a/event-kit/index.d.ts +++ b/event-kit/index.d.ts @@ -14,6 +14,10 @@ declare namespace AtomEventKit { interface DisposableStatic { prototype: Disposable; new (disposalAction: Function): Disposable; + /** + * Ensure that Object correctly implements the Disposable. + */ + isDisposable(object: Object): boolean; } /** Instance side of the Disposable class. */ @@ -59,6 +63,13 @@ declare namespace AtomEventKit { isDisposed: boolean; constructor: EmitterStatic; + /** + * Clear out any existing subscribers. + */ + clear(): void; + /** + * Unsubscribe all handlers. + */ dispose(): void; /** * Registers a handler to be invoked whenever the given event is emitted.