From 8f08c2ffa75e9ca53ac8ef67ff023feeb94fe5fc Mon Sep 17 00:00:00 2001 From: Martin Aeschlimann Date: Tue, 7 Jan 2020 22:21:03 +0100 Subject: [PATCH] more tests --- .../server/src/modes/javascriptMode.ts | 12 +++--- .../src/modes/javascriptSemanticTokens.ts | 7 +++- .../server/src/test/semanticTokens.test.ts | 37 ++++++++++++++----- .../common/tokenClassificationRegistry.ts | 3 +- 4 files changed, 40 insertions(+), 19 deletions(-) diff --git a/extensions/html-language-features/server/src/modes/javascriptMode.ts b/extensions/html-language-features/server/src/modes/javascriptMode.ts index 2e5231a84fb..03dc5755c1a 100644 --- a/extensions/html-language-features/server/src/modes/javascriptMode.ts +++ b/extensions/html-language-features/server/src/modes/javascriptMode.ts @@ -24,10 +24,10 @@ if (!ts.sys.fileExists(jquery_d_ts)) { jquery_d_ts = join(__dirname, '../../lib/jquery.d.ts'); // from source } -export function getJavaScriptMode(documentRegions: LanguageModelCache, id: 'javascript' | 'typescript'): LanguageMode { - let jsDocuments = getLanguageModelCache(10, 60, document => documentRegions.get(document).getEmbeddedDocument('javascript')); +export function getJavaScriptMode(documentRegions: LanguageModelCache, languageId: 'javascript' | 'typescript'): LanguageMode { + let jsDocuments = getLanguageModelCache(10, 60, document => documentRegions.get(document).getEmbeddedDocument(languageId)); - const workingFile = id === 'javascript' ? 'vscode://javascript/1.js' : 'vscode://javascript/2.ts'; // the same 'file' is used for all contents + const workingFile = languageId === 'javascript' ? 'vscode://javascript/1.js' : 'vscode://javascript/2.ts'; // the same 'file' is used for all contents let compilerOptions: ts.CompilerOptions = { allowNonTsExtensions: true, allowJs: true, lib: ['lib.es6.d.ts'], target: ts.ScriptTarget.Latest, moduleResolution: ts.ModuleResolutionKind.Classic }; let currentTextDocument: TextDocument; @@ -72,7 +72,7 @@ export function getJavaScriptMode(documentRegions: LanguageModelCache { +suite('JavaScript Semantic Tokens', () => { test('variables', () => { const input = [ @@ -133,20 +133,39 @@ suite('Type Semantic Tokens', () => { /*1*/'', /*2*/'', - /*6*/'', - /*7*/'', + /*4*/' const p = { x: 1, y: 2 } as Position;', + /*5*/' const foo = (o: Position) => o.x + o.y;', + /*6*/'', + /*7*/'', + /*8*/'', ]; assertTokens(input, [ - t(3, 6, 1, 'variable.declaration'), t(3, 13, 2, 'variable.declaration'), t(3, 19, 1, 'variable'), - t(5, 15, 1, 'variable.declaration'), t(5, 20, 2, 'variable'), - t(6, 11, 1, 'variable.declaration'), - t(7, 10, 2, 'variable') + t(3, 12, 8, 'interface.declaration'), t(3, 23, 1, 'property.declaration'), t(3, 34, 1, 'property.declaration'), + t(4, 8, 1, 'variable.declaration'), t(4, 30, 8, 'interface'), + t(5, 8, 3, 'variable.declaration'), t(5, 15, 1, 'parameter.declaration'), t(5, 18, 8, 'interface'), t(5, 31, 1, 'parameter'), t(5, 33, 1, 'property'), t(5, 37, 1, 'parameter'), t(5, 39, 1, 'property') ]); }); + test('type alias', () => { + const input = [ + /*0*/'', + /*1*/'', + /*2*/'', + /*8*/'', + /*9*/'', + ]; + assertTokens(input, [ + t(3, 7, 5, 'type.declaration'), t(3, 15, 3, 'variable') /* to investiagte */, + t(4, 11, 1, 'function.declaration'), t(4, 13, 1, 'typeParameter.declaration'), t(4, 23, 5, 'type'), t(4, 30, 1, 'parameter.declaration'), t(4, 33, 1, 'typeParameter'), t(4, 47, 1, 'typeParameter'), + t(5, 12, 1, 'typeParameter'), t(5, 29, 3, 'variable'), t(5, 41, 5, 'type'), + ]); + }); }); diff --git a/src/vs/platform/theme/common/tokenClassificationRegistry.ts b/src/vs/platform/theme/common/tokenClassificationRegistry.ts index a67211cf7ed..1f387335ec2 100644 --- a/src/vs/platform/theme/common/tokenClassificationRegistry.ts +++ b/src/vs/platform/theme/common/tokenClassificationRegistry.ts @@ -378,7 +378,7 @@ function registerDefaultClassifications(): void { registerTokenType('class', nls.localize('class', "Style for classes."), [['entity.name.class']], 'type'); registerTokenType('interface', nls.localize('interface', "Style for interfaces."), undefined, 'type'); registerTokenType('enum', nls.localize('enum', "Style for enums."), undefined, 'type'); - registerTokenType('parameterType', nls.localize('parameterType', "Style for parameter types."), undefined, 'type'); + registerTokenType('typeParameter', nls.localize('typeParameter', "Style for type parameters."), undefined, 'type'); registerTokenType('function', nls.localize('function', "Style for functions"), [['entity.name.function'], ['support.function']]); registerTokenType('member', nls.localize('member', "Style for member"), [['entity.name.function'], ['support.function']]); @@ -395,7 +395,6 @@ function registerDefaultClassifications(): void { tokenClassificationRegistry.registerTokenModifier('declaration', nls.localize('declaration', "Style for all symbol declarations."), undefined); tokenClassificationRegistry.registerTokenModifier('documentation', nls.localize('documentation', "Style to use for references in documentation."), undefined); - //tokenClassificationRegistry.registerTokenModifier('member', nls.localize('member', "Style to use for member functions, variables (fields) and types."), undefined); tokenClassificationRegistry.registerTokenModifier('static', nls.localize('static', "Style to use for symbols that are static."), undefined); tokenClassificationRegistry.registerTokenModifier('abstract', nls.localize('abstract', "Style to use for symbols that are abstract."), undefined); tokenClassificationRegistry.registerTokenModifier('deprecated', nls.localize('deprecated', "Style to use for symbols that are deprecated."), undefined); -- GitLab