mirror of
https://github.com/microsoft/vscode.git
synced 2026-08-30 10:38:28 +01:00
Fixes bug in observable event adaptor. (#188196)
This commit is contained in:
@@ -682,6 +682,7 @@ export namespace Event {
|
||||
}
|
||||
};
|
||||
observable.addObserver(observer);
|
||||
observable.reportChanges();
|
||||
return {
|
||||
dispose() {
|
||||
observable.removeObserver(observer);
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import * as assert from 'assert';
|
||||
import { Emitter } from 'vs/base/common/event';
|
||||
import { Emitter, Event } from 'vs/base/common/event';
|
||||
import { ISettableObservable, autorun, derived, ITransaction, observableFromEvent, observableValue, transaction, keepAlive } from 'vs/base/common/observable';
|
||||
import { BaseObservable, IObservable, IObserver } from 'vs/base/common/observableImpl/base';
|
||||
|
||||
@@ -962,6 +962,36 @@ suite('observables', () => {
|
||||
myObservable2.set(1, tx);
|
||||
});
|
||||
});
|
||||
|
||||
test('bug: fromObservableLight doesnt subscribe', () => {
|
||||
const log = new Log();
|
||||
const myObservable = new LoggingObservableValue('myObservable', 0, log);
|
||||
|
||||
const myDerived = derived('myDerived', reader => {
|
||||
const val = myObservable.read(reader);
|
||||
log.log(`myDerived.computed(myObservable2: ${val})`);
|
||||
return val % 10;
|
||||
});
|
||||
|
||||
const e = Event.fromObservableLight(myDerived);
|
||||
log.log('event created');
|
||||
e(() => {
|
||||
log.log('event fired');
|
||||
});
|
||||
|
||||
myObservable.set(1, undefined);
|
||||
|
||||
assert.deepStrictEqual(log.getAndClearEntries(), [
|
||||
'event created',
|
||||
'myObservable.firstObserverAdded',
|
||||
'myObservable.get',
|
||||
'myDerived.computed(myObservable2: 0)',
|
||||
'myObservable.set (value 1)',
|
||||
'myObservable.get',
|
||||
'myDerived.computed(myObservable2: 1)',
|
||||
'event fired',
|
||||
]);
|
||||
});
|
||||
});
|
||||
|
||||
export class LoggingObserver implements IObserver {
|
||||
|
||||
Reference in New Issue
Block a user