Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions server/src/common/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,11 @@

import { _, Features, _Connection, _LanguagesImpl } from './server';
import { SemanticTokensBuilder } from './semanticTokens';
import type { WorkDoneProgressReporter, WorkDoneProgressServerReporter, ResultProgressReporter } from './progress';
import { isNullProgressReporter, type WorkDoneProgressReporter, type WorkDoneProgressServerReporter, type ResultProgressReporter } from './progress';

export * from 'vscode-languageserver-protocol';
export { WorkDoneProgressReporter, WorkDoneProgressServerReporter, ResultProgressReporter };
export { isNullProgressReporter };
export { SemanticTokensBuilder };
import { TextDocuments, TextDocumentsConfiguration, TextDocumentChangeEvent, TextDocumentWillSaveEvent } from './textDocuments';
export { TextDocuments, TextDocumentsConfiguration, TextDocumentChangeEvent, TextDocumentWillSaveEvent };
Expand All @@ -22,4 +23,4 @@ export namespace ProposedFeatures {
};

export type Connection = _Connection<_, _, _, _, _, _, _, _>;
}
}
7 changes: 7 additions & 0 deletions server/src/common/progress.ts
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,13 @@ class NullProgressServerReporter extends NullProgressReporter implements WorkDon
}
}

/**
* Tests whether the given work done progress reporter discards progress.
*/
export function isNullProgressReporter(reporter: WorkDoneProgressReporter): boolean {
return reporter instanceof NullProgressReporter;
}

export function attachWorkDone(connection: ProgressContext, params: WorkDoneProgressParams | undefined): WorkDoneProgressReporter {
if (params === undefined || params.workDoneToken === undefined) {
return new NullProgressReporter();
Expand Down
7 changes: 4 additions & 3 deletions server/src/node/test/connection.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import { Duplex } from 'stream';
import {
InitializeParams, InitializeRequest, InitializeResult, createConnection, DidChangeConfigurationNotification,
DidChangeConfigurationParams, Connection, DeclarationRequest, DeclarationParams, ProgressToken, WorkDoneProgress,
LocationLink
LocationLink, isNullProgressReporter
} from '../main';

class TestStream extends Duplex {
Expand Down Expand Up @@ -73,6 +73,7 @@ suite('Connection Tests', () => {
test('Ensure work done converted', (done) => {
serverConnection.onDeclaration((_params, _cancel, workDone, result) => {
assert.ok(workDone !== undefined, 'Work Done token converted.');
assert.ok(!isNullProgressReporter(workDone), 'Work Done token uses a progress reporter.');
assert.ok(result === undefined, 'Result token undefined.');
done();
return [];
Expand All @@ -89,7 +90,7 @@ suite('Connection Tests', () => {

test('Ensure result converted', (done) => {
serverConnection.onDeclaration((_params, _cancel, workDone, result) => {
assert.ok(workDone === undefined || workDone.constructor.name === 'NullProgressReporter', 'Work Done token undefined or null progress.');
assert.ok(isNullProgressReporter(workDone), 'Work Done token uses a null progress reporter.');
assert.ok(result !== undefined, 'Result token converted.');
done();
return [];
Expand Down Expand Up @@ -177,4 +178,4 @@ suite('Connection Tests', () => {
done();
});
});
});
});