Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/editor/contrib/semanticTokens/test/browser/getSemanticTokens.test.ts
4780 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import assert from 'assert';
7
import { CancellationToken } from '../../../../../base/common/cancellation.js';
8
import { canceled } from '../../../../../base/common/errors.js';
9
import { DisposableStore } from '../../../../../base/common/lifecycle.js';
10
import { ensureNoDisposablesAreLeakedInTestSuite } from '../../../../../base/test/common/utils.js';
11
import { LanguageFeatureRegistry } from '../../../../common/languageFeatureRegistry.js';
12
import { DocumentSemanticTokensProvider, ProviderResult, SemanticTokens, SemanticTokensEdits, SemanticTokensLegend } from '../../../../common/languages.js';
13
import { ITextModel } from '../../../../common/model.js';
14
import { getDocumentSemanticTokens } from '../../common/getSemanticTokens.js';
15
import { createTextModel } from '../../../../test/common/testTextModel.js';
16
17
suite('getSemanticTokens', () => {
18
19
ensureNoDisposablesAreLeakedInTestSuite();
20
21
test('issue #136540: semantic highlighting flickers', async () => {
22
const disposables = new DisposableStore();
23
const registry = new LanguageFeatureRegistry<DocumentSemanticTokensProvider>();
24
const provider = new class implements DocumentSemanticTokensProvider {
25
getLegend(): SemanticTokensLegend {
26
return { tokenTypes: ['test'], tokenModifiers: [] };
27
}
28
provideDocumentSemanticTokens(model: ITextModel, lastResultId: string | null, token: CancellationToken): ProviderResult<SemanticTokens | SemanticTokensEdits> {
29
throw canceled();
30
}
31
releaseDocumentSemanticTokens(resultId: string | undefined): void {
32
}
33
};
34
35
disposables.add(registry.register('testLang', provider));
36
37
const textModel = disposables.add(createTextModel('example', 'testLang'));
38
39
await getDocumentSemanticTokens(registry, textModel, null, null, CancellationToken.None).then((res) => {
40
assert.fail();
41
}, (err) => {
42
assert.ok(!!err);
43
});
44
45
disposables.dispose();
46
});
47
48
});
49
50