Path: blob/main/src/vs/editor/contrib/semanticTokens/test/browser/getSemanticTokens.test.ts
4780 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import assert from 'assert';6import { CancellationToken } from '../../../../../base/common/cancellation.js';7import { canceled } from '../../../../../base/common/errors.js';8import { DisposableStore } from '../../../../../base/common/lifecycle.js';9import { ensureNoDisposablesAreLeakedInTestSuite } from '../../../../../base/test/common/utils.js';10import { LanguageFeatureRegistry } from '../../../../common/languageFeatureRegistry.js';11import { DocumentSemanticTokensProvider, ProviderResult, SemanticTokens, SemanticTokensEdits, SemanticTokensLegend } from '../../../../common/languages.js';12import { ITextModel } from '../../../../common/model.js';13import { getDocumentSemanticTokens } from '../../common/getSemanticTokens.js';14import { createTextModel } from '../../../../test/common/testTextModel.js';1516suite('getSemanticTokens', () => {1718ensureNoDisposablesAreLeakedInTestSuite();1920test('issue #136540: semantic highlighting flickers', async () => {21const disposables = new DisposableStore();22const registry = new LanguageFeatureRegistry<DocumentSemanticTokensProvider>();23const provider = new class implements DocumentSemanticTokensProvider {24getLegend(): SemanticTokensLegend {25return { tokenTypes: ['test'], tokenModifiers: [] };26}27provideDocumentSemanticTokens(model: ITextModel, lastResultId: string | null, token: CancellationToken): ProviderResult<SemanticTokens | SemanticTokensEdits> {28throw canceled();29}30releaseDocumentSemanticTokens(resultId: string | undefined): void {31}32};3334disposables.add(registry.register('testLang', provider));3536const textModel = disposables.add(createTextModel('example', 'testLang'));3738await getDocumentSemanticTokens(registry, textModel, null, null, CancellationToken.None).then((res) => {39assert.fail();40}, (err) => {41assert.ok(!!err);42});4344disposables.dispose();45});4647});484950