Skip to content

Commit 87f5872

Browse files
volksecdbaeumer
andauthored
Expose null progress reporter detection (#1827)
* Expose null progress reporter detection * Address progress reporter API review --------- Co-authored-by: Dirk Bäumer <dirkb@microsoft.com>
1 parent 020e1b0 commit 87f5872

3 files changed

Lines changed: 15 additions & 5 deletions

File tree

‎server/src/common/api.ts‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import { _, Features, _Connection, _LanguagesImpl } from './server';
77
import { SemanticTokensBuilder } from './semanticTokens';
8-
import type { WorkDoneProgressReporter, WorkDoneProgressServerReporter, ResultProgressReporter } from './progress';
8+
import { WorkDoneProgressReporter, type WorkDoneProgressServerReporter, type ResultProgressReporter } from './progress';
99

1010
export * from 'vscode-languageserver-protocol';
1111
export { WorkDoneProgressReporter, WorkDoneProgressServerReporter, ResultProgressReporter };
@@ -22,4 +22,4 @@ export namespace ProposedFeatures {
2222
};
2323

2424
export type Connection = _Connection<_, _, _, _, _, _, _, _>;
25-
}
25+
}

‎server/src/common/progress.ts‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,15 @@ export interface WorkDoneProgressReporter {
2727
done(): void;
2828
}
2929

30+
export namespace WorkDoneProgressReporter {
31+
/**
32+
* Tests whether the given work done progress reporter discards progress.
33+
*/
34+
export function isNullInstance(reporter: WorkDoneProgressReporter): boolean {
35+
return reporter instanceof NullProgressReporter;
36+
}
37+
}
38+
3039
export interface WorkDoneProgressServerReporter extends WorkDoneProgressReporter {
3140
readonly token: CancellationToken;
3241
}

‎server/src/node/test/connection.test.ts‎

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { Duplex } from 'stream';
1010
import {
1111
InitializeParams, InitializeRequest, InitializeResult, createConnection, DidChangeConfigurationNotification,
1212
DidChangeConfigurationParams, Connection, DeclarationRequest, DeclarationParams, ProgressToken, WorkDoneProgress,
13-
LocationLink
13+
LocationLink, WorkDoneProgressReporter
1414
} from '../main';
1515

1616
class TestStream extends Duplex {
@@ -73,6 +73,7 @@ suite('Connection Tests', () => {
7373
test('Ensure work done converted', (done) => {
7474
serverConnection.onDeclaration((_params, _cancel, workDone, result) => {
7575
assert.ok(workDone !== undefined, 'Work Done token converted.');
76+
assert.ok(!WorkDoneProgressReporter.isNullInstance(workDone), 'Work Done token uses a progress reporter.');
7677
assert.ok(result === undefined, 'Result token undefined.');
7778
done();
7879
return [];
@@ -89,7 +90,7 @@ suite('Connection Tests', () => {
8990

9091
test('Ensure result converted', (done) => {
9192
serverConnection.onDeclaration((_params, _cancel, workDone, result) => {
92-
assert.ok(workDone === undefined || workDone.constructor.name === 'NullProgressReporter', 'Work Done token undefined or null progress.');
93+
assert.ok(WorkDoneProgressReporter.isNullInstance(workDone), 'Work Done token uses a null progress reporter.');
9394
assert.ok(result !== undefined, 'Result token converted.');
9495
done();
9596
return [];
@@ -177,4 +178,4 @@ suite('Connection Tests', () => {
177178
done();
178179
});
179180
});
180-
});
181+
});

0 commit comments

Comments
 (0)