events: correctly trigger the onDidAddListener event in emitter options (#230259)

* Correctly trigger the `onDidAddListener` event in emitter options

* Add test for `Emitter.onDidAddListener`
This commit is contained in:
Connor Peet
2024-10-03 09:19:50 -07:00
committed by GitHub
2 changed files with 22 additions and 0 deletions
+1
View File
@@ -1155,6 +1155,7 @@ export class Emitter<T> {
} else {
this._listeners.push(contained);
}
this._options?.onDidAddListener?.(this);
this._size++;
+21
View File
@@ -308,6 +308,27 @@ suite('Event', function () {
assert.strictEqual(lastCount, 1);
});
test('onDidAddListener', () => {
let count = 0;
const a = ds.add(new Emitter({
onDidAddListener() { count += 1; }
}));
assert.strictEqual(count, 0);
let subscription = ds.add(a.event(function () { }));
assert.strictEqual(count, 1);
subscription.dispose();
assert.strictEqual(count, 1);
subscription = ds.add(a.event(function () { }));
assert.strictEqual(count, 2);
subscription.dispose();
assert.strictEqual(count, 2);
});
test('onWillRemoveListener', () => {
let count = 0;
const a = ds.add(new Emitter({