From 3f8579f96a5d19cde78d3897b809ccdb62f72834 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Thu, 3 Jan 2019 16:59:13 -0800 Subject: [PATCH] Avoid some common type casts Casts can hide some type errors --- .../src/features/definitions.ts | 4 +- .../search/test/common/queryBuilder.test.ts | 92 +++++----- .../preferences/common/preferencesModels.ts | 2 +- .../test/node/textSearch.integrationTest.ts | 38 ++--- .../api/extHostLanguageFeatures.test.ts | 158 +++++++++--------- 5 files changed, 147 insertions(+), 147 deletions(-) diff --git a/extensions/typescript-language-features/src/features/definitions.ts b/extensions/typescript-language-features/src/features/definitions.ts index 26f89f5f33e..5fe72c2005f 100644 --- a/extensions/typescript-language-features/src/features/definitions.ts +++ b/extensions/typescript-language-features/src/features/definitions.ts @@ -35,13 +35,13 @@ export default class TypeScriptDefinitionProvider extends DefinitionProviderBase const span = response.body.textSpan ? typeConverters.Range.fromTextSpan(response.body.textSpan) : undefined; return response.body.definitions - .map(location => { + .map((location): vscode.DefinitionLink => { const target = typeConverters.Location.fromTextSpan(this.client.toResource(location.file), location); return { originSelectionRange: span, targetRange: target.range, targetUri: target.uri, - } as vscode.DefinitionLink; + }; }); } diff --git a/src/vs/workbench/parts/search/test/common/queryBuilder.test.ts b/src/vs/workbench/parts/search/test/common/queryBuilder.test.ts index 90664b91ab7..a62178ae986 100644 --- a/src/vs/workbench/parts/search/test/common/queryBuilder.test.ts +++ b/src/vs/workbench/parts/search/test/common/queryBuilder.test.ts @@ -52,7 +52,7 @@ suite('QueryBuilder', () => { test('simple text pattern', () => { assertEqualTextQueries( queryBuilder.text(PATTERN_INFO), - { + { folderQueries: [], contentPattern: PATTERN_INFO, type: QueryType.Text @@ -65,7 +65,7 @@ suite('QueryBuilder', () => { PATTERN_INFO, [ROOT_1_URI] ), - { + { contentPattern: PATTERN_INFO, folderQueries: [{ folder: ROOT_1_URI }], type: QueryType.Text @@ -88,7 +88,7 @@ suite('QueryBuilder', () => { PATTERN_INFO, [ROOT_1_URI] ), - { + { contentPattern: PATTERN_INFO, folderQueries: [{ folder: ROOT_1_URI, @@ -110,7 +110,7 @@ suite('QueryBuilder', () => { [ROOT_1_URI], { includePattern: './bar' } ), - { + { contentPattern: PATTERN_INFO, folderQueries: [{ folder: ROOT_1_URI, @@ -128,7 +128,7 @@ suite('QueryBuilder', () => { [ROOT_1_URI], { includePattern: '.\\bar' } ), - { + { contentPattern: PATTERN_INFO, folderQueries: [{ folder: ROOT_1_URI, @@ -158,7 +158,7 @@ suite('QueryBuilder', () => { [ROOT_1_URI], { includePattern: './foo' } ), - { + { contentPattern: PATTERN_INFO, folderQueries: [{ folder: ROOT_1_URI, @@ -201,7 +201,7 @@ suite('QueryBuilder', () => { PATTERN_INFO, [ROOT_1_URI, ROOT_2_URI, ROOT_3_URI] ), - { + { contentPattern: PATTERN_INFO, folderQueries: [ { folder: ROOT_1_URI, excludePattern: patternsToIExpression('foo/**/*.js') }, @@ -219,7 +219,7 @@ suite('QueryBuilder', () => { [ROOT_1_URI, ROOT_2_URI, ROOT_3_URI], { includePattern: './root2/src' } ), - { + { contentPattern: PATTERN_INFO, folderQueries: [ { @@ -245,7 +245,7 @@ suite('QueryBuilder', () => { [ROOT_1_URI], { excludePattern: 'foo' } ), - { + { contentPattern: PATTERN_INFO, folderQueries: [{ folder: ROOT_1_URI @@ -262,7 +262,7 @@ suite('QueryBuilder', () => { undefined, { filePattern: ` ${content} ` } ), - { + { folderQueries: [], filePattern: content, type: QueryType.File @@ -276,7 +276,7 @@ suite('QueryBuilder', () => { [ROOT_1_URI], { excludePattern: './bar' } ), - { + { contentPattern: PATTERN_INFO, folderQueries: [{ folder: ROOT_1_URI, @@ -291,7 +291,7 @@ suite('QueryBuilder', () => { [ROOT_1_URI], { excludePattern: './bar/**/*.ts' } ), - { + { contentPattern: PATTERN_INFO, folderQueries: [{ folder: ROOT_1_URI, @@ -306,7 +306,7 @@ suite('QueryBuilder', () => { [ROOT_1_URI], { excludePattern: '.\\bar\\**\\*.ts' } ), - { + { contentPattern: PATTERN_INFO, folderQueries: [{ folder: ROOT_1_URI, @@ -323,7 +323,7 @@ suite('QueryBuilder', () => { [ROOT_1_URI], { extraFileResources: [getUri('/foo/bar.js')] } ), - { + { contentPattern: PATTERN_INFO, folderQueries: [{ folder: ROOT_1_URI @@ -341,7 +341,7 @@ suite('QueryBuilder', () => { excludePattern: '*.js' } ), - { + { contentPattern: PATTERN_INFO, folderQueries: [{ folder: ROOT_1_URI @@ -359,7 +359,7 @@ suite('QueryBuilder', () => { includePattern: '*.txt' } ), - { + { contentPattern: PATTERN_INFO, folderQueries: [{ folder: ROOT_1_URI @@ -374,7 +374,7 @@ suite('QueryBuilder', () => { function testSimpleIncludes(includePattern: string, expectedPatterns: string[]): void { assert.deepEqual( queryBuilder.parseSearchPaths(includePattern), - { + { pattern: patternsToIExpression(...expectedPatterns) }, includePattern); @@ -405,26 +405,26 @@ suite('QueryBuilder', () => { const cases: [string, ISearchPathsResult][] = [ [ fixPath('/foo/bar'), - { + { searchPaths: [{ searchPath: getUri('/foo/bar') }] } ], [ fixPath('/foo/bar') + ',' + 'a', - { + { searchPaths: [{ searchPath: getUri('/foo/bar') }], pattern: patternsToIExpression(...globalGlob('a')) } ], [ fixPath('/foo/bar') + ',' + fixPath('/1/2'), - { + { searchPaths: [{ searchPath: getUri('/foo/bar') }, { searchPath: getUri('/1/2') }] } ], [ fixPath('/foo/bar') + ',' + fixPath('/foo/../foo/bar/fooar/..'), - { + { searchPaths: [{ searchPath: getUri('/foo/bar') }] @@ -432,7 +432,7 @@ suite('QueryBuilder', () => { ], [ fixPath('/foo/bar/**/*.ts'), - { + { searchPaths: [{ searchPath: getUri('/foo/bar'), pattern: patternsToIExpression('**/*.ts', '**/*.ts/**') @@ -441,7 +441,7 @@ suite('QueryBuilder', () => { ], [ fixPath('/foo/bar/*a/b/c'), - { + { searchPaths: [{ searchPath: getUri('/foo/bar'), pattern: patternsToIExpression('*a/b/c', '*a/b/c/**') @@ -450,7 +450,7 @@ suite('QueryBuilder', () => { ], [ fixPath('/*a/b/c'), - { + { searchPaths: [{ searchPath: getUri('/'), pattern: patternsToIExpression('*a/b/c', '*a/b/c/**') @@ -459,7 +459,7 @@ suite('QueryBuilder', () => { ], [ fixPath('/foo/{b,c}ar'), - { + { searchPaths: [{ searchPath: getUri('/foo'), pattern: patternsToIExpression('{b,c}ar', '{b,c}ar/**') @@ -475,20 +475,20 @@ suite('QueryBuilder', () => { const cases: [string, ISearchPathsResult][] = [ [ '~/foo/bar', - { + { searchPaths: [{ searchPath: getUri(userHome, '/foo/bar') }] } ], [ '~/foo/bar, a', - { + { searchPaths: [{ searchPath: getUri(userHome, '/foo/bar') }], pattern: patternsToIExpression(...globalGlob('a')) } ], [ fixPath('/foo/~/bar'), - { + { searchPaths: [{ searchPath: getUri('/foo/~/bar') }] } ], @@ -500,7 +500,7 @@ suite('QueryBuilder', () => { const cases: [string, ISearchPathsResult][] = [ [ './a', - { + { searchPaths: [{ searchPath: ROOT_1_URI, pattern: patternsToIExpression('a', 'a/**') @@ -509,7 +509,7 @@ suite('QueryBuilder', () => { ], [ './a/', - { + { searchPaths: [{ searchPath: ROOT_1_URI, pattern: patternsToIExpression('a', 'a/**') @@ -518,7 +518,7 @@ suite('QueryBuilder', () => { ], [ './a/*b/c', - { + { searchPaths: [{ searchPath: ROOT_1_URI, pattern: patternsToIExpression('a/*b/c', 'a/*b/c/**') @@ -527,7 +527,7 @@ suite('QueryBuilder', () => { ], [ './a/*b/c, ' + fixPath('/project/foo'), - { + { searchPaths: [ { searchPath: ROOT_1_URI, @@ -540,7 +540,7 @@ suite('QueryBuilder', () => { ], [ './a/b/,./c/d', - { + { searchPaths: [{ searchPath: ROOT_1_URI, pattern: patternsToIExpression('a/b', 'a/b/**', 'c/d', 'c/d/**') @@ -550,7 +550,7 @@ suite('QueryBuilder', () => { // TODO @ rob // [ // '../', - // { + // { // searchPaths: [{ // searchPath: getUri('foo/') // }] @@ -568,7 +568,7 @@ suite('QueryBuilder', () => { const cases: [string, ISearchPathsResult][] = [ [ './root1', - { + { searchPaths: [{ searchPath: getUri(ROOT_1) }] @@ -576,7 +576,7 @@ suite('QueryBuilder', () => { ], [ './root2', - { + { searchPaths: [{ searchPath: getUri(ROOT_2), }] @@ -584,7 +584,7 @@ suite('QueryBuilder', () => { ], [ './root1/a/**/b, ./root2/**/*.txt', - { + { searchPaths: [ { searchPath: ROOT_1_URI, @@ -609,7 +609,7 @@ suite('QueryBuilder', () => { const cases: [string, ISearchPathsResult][] = [ [ './foldername', - { + { searchPaths: [{ searchPath: ROOT_1_URI }] @@ -617,7 +617,7 @@ suite('QueryBuilder', () => { ], [ './foldername/foo', - { + { searchPaths: [{ searchPath: ROOT_1_URI, pattern: patternsToIExpression('foo', 'foo/**') @@ -637,19 +637,19 @@ suite('QueryBuilder', () => { const cases: [string, ISearchPathsResult][] = [ [ '', - { + { searchPaths: undefined } ], [ './', - { + { searchPaths: undefined } ], [ './root1', - { + { searchPaths: [{ searchPath: getUri(ROOT_1) }] @@ -657,7 +657,7 @@ suite('QueryBuilder', () => { ], [ './root1,./', - { + { searchPaths: [{ searchPath: getUri(ROOT_1) }] @@ -665,7 +665,7 @@ suite('QueryBuilder', () => { ], [ './rootB', - { + { searchPaths: [ { searchPath: getUri(ROOT_2), @@ -677,7 +677,7 @@ suite('QueryBuilder', () => { ], [ './rootB/a/**/b, ./rootB/b/**/*.txt', - { + { searchPaths: [ { searchPath: getUri(ROOT_2), @@ -691,7 +691,7 @@ suite('QueryBuilder', () => { ], [ './root1/**/foo/, bar/', - { + { pattern: patternsToIExpression('**/bar', '**/bar/**'), searchPaths: [ { diff --git a/src/vs/workbench/services/preferences/common/preferencesModels.ts b/src/vs/workbench/services/preferences/common/preferencesModels.ts index a55b9507160..3af1075054e 100644 --- a/src/vs/workbench/services/preferences/common/preferencesModels.ts +++ b/src/vs/workbench/services/preferences/common/preferencesModels.ts @@ -195,7 +195,7 @@ export class SettingsEditorModel extends AbstractSettingsModel implements ISetti } const metadata = this.collectMetadata(resultGroups); - return { + return { allGroups: this.settingsGroups, filteredGroups: filteredGroup ? [filteredGroup] : [], matches, diff --git a/src/vs/workbench/services/search/test/node/textSearch.integrationTest.ts b/src/vs/workbench/services/search/test/node/textSearch.integrationTest.ts index 0324c11b8d7..6d776117484 100644 --- a/src/vs/workbench/services/search/test/node/textSearch.integrationTest.ts +++ b/src/vs/workbench/services/search/test/node/textSearch.integrationTest.ts @@ -78,7 +78,7 @@ suite('Search-integration', function () { this.timeout(1000 * 60); // increase timeout for this suite test('Text: GameOfLife', () => { - const config = { + const config: ITextQuery = { type: QueryType.Text, folderQueries: ROOT_FOLDER_QUERY, contentPattern: { pattern: 'GameOfLife' }, @@ -88,7 +88,7 @@ suite('Search-integration', function () { }); test('Text: GameOfLife (RegExp)', () => { - const config = { + const config: ITextQuery = { type: QueryType.Text, folderQueries: ROOT_FOLDER_QUERY, contentPattern: { pattern: 'Game.?fL\\w?fe', isRegExp: true } @@ -98,7 +98,7 @@ suite('Search-integration', function () { }); test('Text: GameOfLife (PCRE2 RegExp)', () => { - const config = { + const config: ITextQuery = { type: QueryType.Text, folderQueries: ROOT_FOLDER_QUERY, usePCRE2: true, @@ -109,7 +109,7 @@ suite('Search-integration', function () { }); test('Text: GameOfLife (RegExp to EOL)', () => { - const config = { + const config: ITextQuery = { type: QueryType.Text, folderQueries: ROOT_FOLDER_QUERY, contentPattern: { pattern: 'GameOfLife.*', isRegExp: true } @@ -119,7 +119,7 @@ suite('Search-integration', function () { }); test('Text: GameOfLife (Word Match, Case Sensitive)', () => { - const config = { + const config: ITextQuery = { type: QueryType.Text, folderQueries: ROOT_FOLDER_QUERY, contentPattern: { pattern: 'GameOfLife', isWordMatch: true, isCaseSensitive: true } @@ -129,7 +129,7 @@ suite('Search-integration', function () { }); test('Text: GameOfLife (Word Match, Spaces)', () => { - const config = { + const config: ITextQuery = { type: QueryType.Text, folderQueries: ROOT_FOLDER_QUERY, contentPattern: { pattern: ' GameOfLife ', isWordMatch: true } @@ -139,7 +139,7 @@ suite('Search-integration', function () { }); test('Text: GameOfLife (Word Match, Punctuation and Spaces)', () => { - const config = { + const config: ITextQuery = { type: QueryType.Text, folderQueries: ROOT_FOLDER_QUERY, contentPattern: { pattern: ', as =', isWordMatch: true } @@ -149,7 +149,7 @@ suite('Search-integration', function () { }); test('Text: Helvetica (UTF 16)', () => { - const config = { + const config: ITextQuery = { type: QueryType.Text, folderQueries: ROOT_FOLDER_QUERY, contentPattern: { pattern: 'Helvetica' } @@ -159,7 +159,7 @@ suite('Search-integration', function () { }); test('Text: e', () => { - const config = { + const config: ITextQuery = { type: QueryType.Text, folderQueries: ROOT_FOLDER_QUERY, contentPattern: { pattern: 'e' } @@ -233,7 +233,7 @@ suite('Search-integration', function () { test('Text: a (capped)', () => { const maxResults = 520; - const config = { + const config: ITextQuery = { type: QueryType.Text, folderQueries: ROOT_FOLDER_QUERY, contentPattern: { pattern: 'a' }, @@ -247,7 +247,7 @@ suite('Search-integration', function () { }); test('Text: a (no results)', () => { - const config = { + const config: ITextQuery = { type: QueryType.Text, folderQueries: ROOT_FOLDER_QUERY, contentPattern: { pattern: 'ahsogehtdas' } @@ -257,7 +257,7 @@ suite('Search-integration', function () { }); test('Text: -size', () => { - const config = { + const config: ITextQuery = { type: QueryType.Text, folderQueries: ROOT_FOLDER_QUERY, contentPattern: { pattern: '-size' } @@ -312,7 +312,7 @@ suite('Search-integration', function () { }); test('Text: 语', () => { - const config = { + const config: ITextQuery = { type: QueryType.Text, folderQueries: ROOT_FOLDER_QUERY, contentPattern: { pattern: '语' } @@ -330,7 +330,7 @@ suite('Search-integration', function () { }); test('Multiple matches on line: h\\d,', () => { - const config = { + const config: ITextQuery = { type: QueryType.Text, folderQueries: ROOT_FOLDER_QUERY, contentPattern: { pattern: 'h\\d,', isRegExp: true } @@ -345,7 +345,7 @@ suite('Search-integration', function () { }); test('Search with context matches', () => { - const config = { + const config: ITextQuery = { type: QueryType.Text, folderQueries: ROOT_FOLDER_QUERY, contentPattern: { pattern: 'compiler.typeCheck();' }, @@ -367,7 +367,7 @@ suite('Search-integration', function () { suite('error messages', () => { test('invalid encoding', () => { - const config = { + const config: ITextQuery = { type: QueryType.Text, folderQueries: [ { @@ -388,7 +388,7 @@ suite('Search-integration', function () { }); test('invalid regex', () => { - const config = { + const config: ITextQuery = { type: QueryType.Text, folderQueries: ROOT_FOLDER_QUERY, contentPattern: { pattern: ')', isRegExp: true }, @@ -404,7 +404,7 @@ suite('Search-integration', function () { }); test('invalid glob', () => { - const config = { + const config: ITextQuery = { type: QueryType.Text, folderQueries: ROOT_FOLDER_QUERY, contentPattern: { pattern: 'foo' }, @@ -423,7 +423,7 @@ suite('Search-integration', function () { }); test('invalid literal', () => { - const config = { + const config: ITextQuery = { type: QueryType.Text, folderQueries: ROOT_FOLDER_QUERY, contentPattern: { pattern: 'foo\nbar', isRegExp: true } diff --git a/src/vs/workbench/test/electron-browser/api/extHostLanguageFeatures.test.ts b/src/vs/workbench/test/electron-browser/api/extHostLanguageFeatures.test.ts index 66c740fbaa3..c1916f66807 100644 --- a/src/vs/workbench/test/electron-browser/api/extHostLanguageFeatures.test.ts +++ b/src/vs/workbench/test/electron-browser/api/extHostLanguageFeatures.test.ts @@ -134,7 +134,7 @@ suite('ExtHostLanguageFeatures', function () { test('DocumentSymbols, register/deregister', function () { assert.equal(modes.DocumentSymbolProviderRegistry.all(model).length, 0); - let d1 = extHost.registerDocumentSymbolProvider(defaultExtension, defaultSelector, { + let d1 = extHost.registerDocumentSymbolProvider(defaultExtension, defaultSelector, new class implements vscode.DocumentSymbolProvider { provideDocumentSymbols() { return []; } @@ -149,12 +149,12 @@ suite('ExtHostLanguageFeatures', function () { }); test('DocumentSymbols, evil provider', function () { - disposables.push(extHost.registerDocumentSymbolProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerDocumentSymbolProvider(defaultExtension, defaultSelector, new class implements vscode.DocumentSymbolProvider { provideDocumentSymbols(): any { throw new Error('evil document symbol provider'); } })); - disposables.push(extHost.registerDocumentSymbolProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerDocumentSymbolProvider(defaultExtension, defaultSelector, new class implements vscode.DocumentSymbolProvider { provideDocumentSymbols(): any { return [new types.SymbolInformation('test', types.SymbolKind.Field, new types.Range(0, 0, 0, 0))]; } @@ -169,7 +169,7 @@ suite('ExtHostLanguageFeatures', function () { }); test('DocumentSymbols, data conversion', function () { - disposables.push(extHost.registerDocumentSymbolProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerDocumentSymbolProvider(defaultExtension, defaultSelector, new class implements vscode.DocumentSymbolProvider { provideDocumentSymbols(): any { return [new types.SymbolInformation('test', types.SymbolKind.Field, new types.Range(0, 0, 0, 0))]; } @@ -191,12 +191,12 @@ suite('ExtHostLanguageFeatures', function () { test('CodeLens, evil provider', function () { - disposables.push(extHost.registerCodeLensProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerCodeLensProvider(defaultExtension, defaultSelector, new class implements vscode.CodeLensProvider { provideCodeLenses(): any { throw new Error('evil'); } })); - disposables.push(extHost.registerCodeLensProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerCodeLensProvider(defaultExtension, defaultSelector, new class implements vscode.CodeLensProvider { provideCodeLenses() { return [new types.CodeLens(new types.Range(0, 0, 0, 0))]; } @@ -211,12 +211,12 @@ suite('ExtHostLanguageFeatures', function () { test('CodeLens, do not resolve a resolved lens', function () { - disposables.push(extHost.registerCodeLensProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerCodeLensProvider(defaultExtension, defaultSelector, new class implements vscode.CodeLensProvider { provideCodeLenses(): any { return [new types.CodeLens( new types.Range(0, 0, 0, 0), { command: 'id', title: 'Title' })]; - }, + } resolveCodeLens(): any { assert.ok(false, 'do not resolve'); } @@ -237,7 +237,7 @@ suite('ExtHostLanguageFeatures', function () { test('CodeLens, missing command', function () { - disposables.push(extHost.registerCodeLensProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerCodeLensProvider(defaultExtension, defaultSelector, new class implements vscode.CodeLensProvider { provideCodeLenses() { return [new types.CodeLens(new types.Range(0, 0, 0, 0))]; } @@ -262,7 +262,7 @@ suite('ExtHostLanguageFeatures', function () { test('Definition, data conversion', function () { - disposables.push(extHost.registerDefinitionProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerDefinitionProvider(defaultExtension, defaultSelector, new class implements vscode.DefinitionProvider { provideDefinition(): any { return [new types.Location(model.uri, new types.Range(1, 2, 3, 4))]; } @@ -281,12 +281,12 @@ suite('ExtHostLanguageFeatures', function () { test('Definition, one or many', function () { - disposables.push(extHost.registerDefinitionProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerDefinitionProvider(defaultExtension, defaultSelector, new class implements vscode.DefinitionProvider { provideDefinition(): any { return [new types.Location(model.uri, new types.Range(1, 1, 1, 1))]; } })); - disposables.push(extHost.registerDefinitionProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerDefinitionProvider(defaultExtension, defaultSelector, new class implements vscode.DefinitionProvider { provideDefinition(): any { return new types.Location(model.uri, new types.Range(1, 1, 1, 1)); } @@ -302,13 +302,13 @@ suite('ExtHostLanguageFeatures', function () { test('Definition, registration order', function () { - disposables.push(extHost.registerDefinitionProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerDefinitionProvider(defaultExtension, defaultSelector, new class implements vscode.DefinitionProvider { provideDefinition(): any { return [new types.Location(URI.parse('far://first'), new types.Range(2, 3, 4, 5))]; } })); - disposables.push(extHost.registerDefinitionProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerDefinitionProvider(defaultExtension, defaultSelector, new class implements vscode.DefinitionProvider { provideDefinition(): any { return new types.Location(URI.parse('far://second'), new types.Range(1, 2, 3, 4)); } @@ -328,12 +328,12 @@ suite('ExtHostLanguageFeatures', function () { test('Definition, evil provider', function () { - disposables.push(extHost.registerDefinitionProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerDefinitionProvider(defaultExtension, defaultSelector, new class implements vscode.DefinitionProvider { provideDefinition(): any { throw new Error('evil provider'); } })); - disposables.push(extHost.registerDefinitionProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerDefinitionProvider(defaultExtension, defaultSelector, new class implements vscode.DefinitionProvider { provideDefinition(): any { return new types.Location(model.uri, new types.Range(1, 1, 1, 1)); } @@ -351,7 +351,7 @@ suite('ExtHostLanguageFeatures', function () { test('Declaration, data conversion', function () { - disposables.push(extHost.registerDeclarationProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerDeclarationProvider(defaultExtension, defaultSelector, new class implements vscode.DeclarationProvider { provideDeclaration(): any { return [new types.Location(model.uri, new types.Range(1, 2, 3, 4))]; } @@ -372,7 +372,7 @@ suite('ExtHostLanguageFeatures', function () { test('Implementation, data conversion', function () { - disposables.push(extHost.registerImplementationProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerImplementationProvider(defaultExtension, defaultSelector, new class implements vscode.ImplementationProvider { provideImplementation(): any { return [new types.Location(model.uri, new types.Range(1, 2, 3, 4))]; } @@ -392,7 +392,7 @@ suite('ExtHostLanguageFeatures', function () { test('Type Definition, data conversion', function () { - disposables.push(extHost.registerTypeDefinitionProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerTypeDefinitionProvider(defaultExtension, defaultSelector, new class implements vscode.TypeDefinitionProvider { provideTypeDefinition(): any { return [new types.Location(model.uri, new types.Range(1, 2, 3, 4))]; } @@ -412,7 +412,7 @@ suite('ExtHostLanguageFeatures', function () { test('HoverProvider, word range at pos', function () { - disposables.push(extHost.registerHoverProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerHoverProvider(defaultExtension, defaultSelector, new class implements vscode.HoverProvider { provideHover(): any { return new types.Hover('Hello'); } @@ -430,7 +430,7 @@ suite('ExtHostLanguageFeatures', function () { test('HoverProvider, given range', function () { - disposables.push(extHost.registerHoverProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerHoverProvider(defaultExtension, defaultSelector, new class implements vscode.HoverProvider { provideHover(): any { return new types.Hover('Hello', new types.Range(3, 0, 8, 7)); } @@ -448,14 +448,14 @@ suite('ExtHostLanguageFeatures', function () { test('HoverProvider, registration order', function () { - disposables.push(extHost.registerHoverProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerHoverProvider(defaultExtension, defaultSelector, new class implements vscode.HoverProvider { provideHover(): any { return new types.Hover('registered first'); } })); - disposables.push(extHost.registerHoverProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerHoverProvider(defaultExtension, defaultSelector, new class implements vscode.HoverProvider { provideHover(): any { return new types.Hover('registered second'); } @@ -474,12 +474,12 @@ suite('ExtHostLanguageFeatures', function () { test('HoverProvider, evil provider', function () { - disposables.push(extHost.registerHoverProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerHoverProvider(defaultExtension, defaultSelector, new class implements vscode.HoverProvider { provideHover(): any { throw new Error('evil'); } })); - disposables.push(extHost.registerHoverProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerHoverProvider(defaultExtension, defaultSelector, new class implements vscode.HoverProvider { provideHover(): any { return new types.Hover('Hello'); } @@ -498,7 +498,7 @@ suite('ExtHostLanguageFeatures', function () { test('Occurrences, data conversion', function () { - disposables.push(extHost.registerDocumentHighlightProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerDocumentHighlightProvider(defaultExtension, defaultSelector, new class implements vscode.DocumentHighlightProvider { provideDocumentHighlights(): any { return [new types.DocumentHighlight(new types.Range(0, 0, 0, 4))]; } @@ -517,12 +517,12 @@ suite('ExtHostLanguageFeatures', function () { test('Occurrences, order 1/2', function () { - disposables.push(extHost.registerDocumentHighlightProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerDocumentHighlightProvider(defaultExtension, defaultSelector, new class implements vscode.DocumentHighlightProvider { provideDocumentHighlights(): any { return []; } })); - disposables.push(extHost.registerDocumentHighlightProvider(defaultExtension, '*', { + disposables.push(extHost.registerDocumentHighlightProvider(defaultExtension, '*', new class implements vscode.DocumentHighlightProvider { provideDocumentHighlights(): any { return [new types.DocumentHighlight(new types.Range(0, 0, 0, 4))]; } @@ -541,12 +541,12 @@ suite('ExtHostLanguageFeatures', function () { test('Occurrences, order 2/2', function () { - disposables.push(extHost.registerDocumentHighlightProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerDocumentHighlightProvider(defaultExtension, defaultSelector, new class implements vscode.DocumentHighlightProvider { provideDocumentHighlights(): any { return [new types.DocumentHighlight(new types.Range(0, 0, 0, 2))]; } })); - disposables.push(extHost.registerDocumentHighlightProvider(defaultExtension, '*', { + disposables.push(extHost.registerDocumentHighlightProvider(defaultExtension, '*', new class implements vscode.DocumentHighlightProvider { provideDocumentHighlights(): any { return [new types.DocumentHighlight(new types.Range(0, 0, 0, 4))]; } @@ -565,13 +565,13 @@ suite('ExtHostLanguageFeatures', function () { test('Occurrences, evil provider', function () { - disposables.push(extHost.registerDocumentHighlightProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerDocumentHighlightProvider(defaultExtension, defaultSelector, new class implements vscode.DocumentHighlightProvider { provideDocumentHighlights(): any { throw new Error('evil'); } })); - disposables.push(extHost.registerDocumentHighlightProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerDocumentHighlightProvider(defaultExtension, defaultSelector, new class implements vscode.DocumentHighlightProvider { provideDocumentHighlights(): any { return [new types.DocumentHighlight(new types.Range(0, 0, 0, 4))]; } @@ -589,13 +589,13 @@ suite('ExtHostLanguageFeatures', function () { test('References, registration order', function () { - disposables.push(extHost.registerReferenceProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerReferenceProvider(defaultExtension, defaultSelector, new class implements vscode.ReferenceProvider { provideReferences(): any { return [new types.Location(URI.parse('far://register/first'), new types.Range(0, 0, 0, 0))]; } })); - disposables.push(extHost.registerReferenceProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerReferenceProvider(defaultExtension, defaultSelector, new class implements vscode.ReferenceProvider { provideReferences(): any { return [new types.Location(URI.parse('far://register/second'), new types.Range(0, 0, 0, 0))]; } @@ -615,7 +615,7 @@ suite('ExtHostLanguageFeatures', function () { test('References, data conversion', function () { - disposables.push(extHost.registerReferenceProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerReferenceProvider(defaultExtension, defaultSelector, new class implements vscode.ReferenceProvider { provideReferences(): any { return [new types.Location(model.uri, new types.Position(0, 0))]; } @@ -636,12 +636,12 @@ suite('ExtHostLanguageFeatures', function () { test('References, evil provider', function () { - disposables.push(extHost.registerReferenceProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerReferenceProvider(defaultExtension, defaultSelector, new class implements vscode.ReferenceProvider { provideReferences(): any { throw new Error('evil'); } })); - disposables.push(extHost.registerReferenceProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerReferenceProvider(defaultExtension, defaultSelector, new class implements vscode.ReferenceProvider { provideReferences(): any { return [new types.Location(model.uri, new types.Range(0, 0, 0, 0))]; } @@ -712,12 +712,12 @@ suite('ExtHostLanguageFeatures', function () { test('Cannot read property \'id\' of undefined, #29469', function () { - disposables.push(extHost.registerCodeActionProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerCodeActionProvider(defaultExtension, defaultSelector, new class implements vscode.CodeActionProvider { provideCodeActions(): any { return [ undefined, null, - { command: 'test', title: 'Testing' } + { command: 'test', title: 'Testing' } ]; } })); @@ -731,14 +731,14 @@ suite('ExtHostLanguageFeatures', function () { test('Quick Fix, evil provider', function () { - disposables.push(extHost.registerCodeActionProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerCodeActionProvider(defaultExtension, defaultSelector, new class implements vscode.CodeActionProvider { provideCodeActions(): any { throw new Error('evil'); } })); - disposables.push(extHost.registerCodeActionProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerCodeActionProvider(defaultExtension, defaultSelector, new class implements vscode.CodeActionProvider { provideCodeActions(): any { - return [{ command: 'test', title: 'Testing' }]; + return [{ command: 'test', title: 'Testing' }]; } })); @@ -753,13 +753,13 @@ suite('ExtHostLanguageFeatures', function () { test('Navigate types, evil provider', function () { - disposables.push(extHost.registerWorkspaceSymbolProvider(defaultExtension, { + disposables.push(extHost.registerWorkspaceSymbolProvider(defaultExtension, new class implements vscode.WorkspaceSymbolProvider { provideWorkspaceSymbols(): any { throw new Error('evil'); } })); - disposables.push(extHost.registerWorkspaceSymbolProvider(defaultExtension, { + disposables.push(extHost.registerWorkspaceSymbolProvider(defaultExtension, new class implements vscode.WorkspaceSymbolProvider { provideWorkspaceSymbols(): any { return [new types.SymbolInformation('testing', types.SymbolKind.Array, new types.Range(0, 0, 1, 1))]; } @@ -781,7 +781,7 @@ suite('ExtHostLanguageFeatures', function () { test('Rename, evil provider 0/2', function () { - disposables.push(extHost.registerRenameProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerRenameProvider(defaultExtension, defaultSelector, new class implements vscode.RenameProvider { provideRenameEdits(): any { throw new class Foo { }; } @@ -799,7 +799,7 @@ suite('ExtHostLanguageFeatures', function () { test('Rename, evil provider 1/2', function () { - disposables.push(extHost.registerRenameProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerRenameProvider(defaultExtension, defaultSelector, new class implements vscode.RenameProvider { provideRenameEdits(): any { throw Error('evil'); } @@ -815,13 +815,13 @@ suite('ExtHostLanguageFeatures', function () { test('Rename, evil provider 2/2', function () { - disposables.push(extHost.registerRenameProvider(defaultExtension, '*', { + disposables.push(extHost.registerRenameProvider(defaultExtension, '*', new class implements vscode.RenameProvider { provideRenameEdits(): any { throw Error('evil'); } })); - disposables.push(extHost.registerRenameProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerRenameProvider(defaultExtension, defaultSelector, new class implements vscode.RenameProvider { provideRenameEdits(): any { let edit = new types.WorkspaceEdit(); edit.replace(model.uri, new types.Range(0, 0, 0, 0), 'testing'); @@ -839,7 +839,7 @@ suite('ExtHostLanguageFeatures', function () { test('Rename, ordering', function () { - disposables.push(extHost.registerRenameProvider(defaultExtension, '*', { + disposables.push(extHost.registerRenameProvider(defaultExtension, '*', new class implements vscode.RenameProvider { provideRenameEdits(): any { let edit = new types.WorkspaceEdit(); edit.replace(model.uri, new types.Range(0, 0, 0, 0), 'testing'); @@ -848,7 +848,7 @@ suite('ExtHostLanguageFeatures', function () { } })); - disposables.push(extHost.registerRenameProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerRenameProvider(defaultExtension, defaultSelector, new class implements vscode.RenameProvider { provideRenameEdits(): any { return; } @@ -869,13 +869,13 @@ suite('ExtHostLanguageFeatures', function () { test('Parameter Hints, order', function () { - disposables.push(extHost.registerSignatureHelpProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerSignatureHelpProvider(defaultExtension, defaultSelector, new class implements vscode.SignatureHelpProvider { provideSignatureHelp(): any { return undefined; } }, [])); - disposables.push(extHost.registerSignatureHelpProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerSignatureHelpProvider(defaultExtension, defaultSelector, new class implements vscode.SignatureHelpProvider { provideSignatureHelp(): vscode.SignatureHelp { return { signatures: [], @@ -894,7 +894,7 @@ suite('ExtHostLanguageFeatures', function () { }); test('Parameter Hints, evil provider', function () { - disposables.push(extHost.registerSignatureHelpProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerSignatureHelpProvider(defaultExtension, defaultSelector, new class implements vscode.SignatureHelpProvider { provideSignatureHelp(): any { throw new Error('evil'); } @@ -912,13 +912,13 @@ suite('ExtHostLanguageFeatures', function () { test('Suggest, order 1/3', function () { - disposables.push(extHost.registerCompletionItemProvider(defaultExtension, '*', { + disposables.push(extHost.registerCompletionItemProvider(defaultExtension, '*', new class implements vscode.CompletionItemProvider { provideCompletionItems(): any { return [new types.CompletionItem('testing1')]; } }, [])); - disposables.push(extHost.registerCompletionItemProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerCompletionItemProvider(defaultExtension, defaultSelector, new class implements vscode.CompletionItemProvider { provideCompletionItems(): any { return [new types.CompletionItem('testing2')]; } @@ -934,13 +934,13 @@ suite('ExtHostLanguageFeatures', function () { test('Suggest, order 2/3', function () { - disposables.push(extHost.registerCompletionItemProvider(defaultExtension, '*', { + disposables.push(extHost.registerCompletionItemProvider(defaultExtension, '*', new class implements vscode.CompletionItemProvider { provideCompletionItems(): any { return [new types.CompletionItem('weak-selector')]; // weaker selector but result } }, [])); - disposables.push(extHost.registerCompletionItemProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerCompletionItemProvider(defaultExtension, defaultSelector, new class implements vscode.CompletionItemProvider { provideCompletionItems(): any { return []; // stronger selector but not a good result; } @@ -956,13 +956,13 @@ suite('ExtHostLanguageFeatures', function () { test('Suggest, order 2/3', function () { - disposables.push(extHost.registerCompletionItemProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerCompletionItemProvider(defaultExtension, defaultSelector, new class implements vscode.CompletionItemProvider { provideCompletionItems(): any { return [new types.CompletionItem('strong-1')]; } }, [])); - disposables.push(extHost.registerCompletionItemProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerCompletionItemProvider(defaultExtension, defaultSelector, new class implements vscode.CompletionItemProvider { provideCompletionItems(): any { return [new types.CompletionItem('strong-2')]; } @@ -979,13 +979,13 @@ suite('ExtHostLanguageFeatures', function () { test('Suggest, evil provider', function () { - disposables.push(extHost.registerCompletionItemProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerCompletionItemProvider(defaultExtension, defaultSelector, new class implements vscode.CompletionItemProvider { provideCompletionItems(): any { throw new Error('evil'); } }, [])); - disposables.push(extHost.registerCompletionItemProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerCompletionItemProvider(defaultExtension, defaultSelector, new class implements vscode.CompletionItemProvider { provideCompletionItems(): any { return [new types.CompletionItem('testing')]; } @@ -1002,7 +1002,7 @@ suite('ExtHostLanguageFeatures', function () { test('Suggest, CompletionList', function () { - disposables.push(extHost.registerCompletionItemProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerCompletionItemProvider(defaultExtension, defaultSelector, new class implements vscode.CompletionItemProvider { provideCompletionItems(): any { return new types.CompletionList([new types.CompletionItem('hello')], true); } @@ -1019,7 +1019,7 @@ suite('ExtHostLanguageFeatures', function () { // --- format test('Format Doc, data conversion', function () { - disposables.push(extHost.registerDocumentFormattingEditProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerDocumentFormattingEditProvider(defaultExtension, defaultSelector, new class implements vscode.DocumentFormattingEditProvider { provideDocumentFormattingEdits(): any { return [new types.TextEdit(new types.Range(0, 0, 0, 0), 'testing'), types.TextEdit.setEndOfLine(types.EndOfLine.LF)]; } @@ -1040,7 +1040,7 @@ suite('ExtHostLanguageFeatures', function () { }); test('Format Doc, evil provider', function () { - disposables.push(extHost.registerDocumentFormattingEditProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerDocumentFormattingEditProvider(defaultExtension, defaultSelector, new class implements vscode.DocumentFormattingEditProvider { provideDocumentFormattingEdits(): any { throw new Error('evil'); } @@ -1053,19 +1053,19 @@ suite('ExtHostLanguageFeatures', function () { test('Format Doc, order', function () { - disposables.push(extHost.registerDocumentFormattingEditProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerDocumentFormattingEditProvider(defaultExtension, defaultSelector, new class implements vscode.DocumentFormattingEditProvider { provideDocumentFormattingEdits(): any { return undefined; } })); - disposables.push(extHost.registerDocumentFormattingEditProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerDocumentFormattingEditProvider(defaultExtension, defaultSelector, new class implements vscode.DocumentFormattingEditProvider { provideDocumentFormattingEdits(): any { return [new types.TextEdit(new types.Range(0, 0, 0, 0), 'testing')]; } })); - disposables.push(extHost.registerDocumentFormattingEditProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerDocumentFormattingEditProvider(defaultExtension, defaultSelector, new class implements vscode.DocumentFormattingEditProvider { provideDocumentFormattingEdits(): any { return undefined; } @@ -1082,7 +1082,7 @@ suite('ExtHostLanguageFeatures', function () { }); test('Format Range, data conversion', function () { - disposables.push(extHost.registerDocumentRangeFormattingEditProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerDocumentRangeFormattingEditProvider(defaultExtension, defaultSelector, new class implements vscode.DocumentRangeFormattingEditProvider { provideDocumentRangeFormattingEdits(): any { return [new types.TextEdit(new types.Range(0, 0, 0, 0), 'testing')]; } @@ -1099,17 +1099,17 @@ suite('ExtHostLanguageFeatures', function () { }); test('Format Range, + format_doc', function () { - disposables.push(extHost.registerDocumentRangeFormattingEditProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerDocumentRangeFormattingEditProvider(defaultExtension, defaultSelector, new class implements vscode.DocumentRangeFormattingEditProvider { provideDocumentRangeFormattingEdits(): any { return [new types.TextEdit(new types.Range(0, 0, 0, 0), 'range')]; } })); - disposables.push(extHost.registerDocumentRangeFormattingEditProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerDocumentRangeFormattingEditProvider(defaultExtension, defaultSelector, new class implements vscode.DocumentRangeFormattingEditProvider { provideDocumentRangeFormattingEdits(): any { return [new types.TextEdit(new types.Range(2, 3, 4, 5), 'range2')]; } })); - disposables.push(extHost.registerDocumentFormattingEditProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerDocumentFormattingEditProvider(defaultExtension, defaultSelector, new class implements vscode.DocumentFormattingEditProvider { provideDocumentFormattingEdits(): any { return [new types.TextEdit(new types.Range(0, 0, 1, 1), 'doc')]; } @@ -1128,7 +1128,7 @@ suite('ExtHostLanguageFeatures', function () { }); test('Format Range, evil provider', function () { - disposables.push(extHost.registerDocumentRangeFormattingEditProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerDocumentRangeFormattingEditProvider(defaultExtension, defaultSelector, new class implements vscode.DocumentRangeFormattingEditProvider { provideDocumentRangeFormattingEdits(): any { throw new Error('evil'); } @@ -1141,7 +1141,7 @@ suite('ExtHostLanguageFeatures', function () { test('Format on Type, data conversion', function () { - disposables.push(extHost.registerOnTypeFormattingEditProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerOnTypeFormattingEditProvider(defaultExtension, defaultSelector, new class implements vscode.OnTypeFormattingEditProvider { provideOnTypeFormattingEdits(): any { return [new types.TextEdit(new types.Range(0, 0, 0, 0), arguments[2])]; } @@ -1160,7 +1160,7 @@ suite('ExtHostLanguageFeatures', function () { test('Links, data conversion', function () { - disposables.push(extHost.registerDocumentLinkProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerDocumentLinkProvider(defaultExtension, defaultSelector, new class implements vscode.DocumentLinkProvider { provideDocumentLinks() { return [new types.DocumentLink(new types.Range(0, 0, 1, 1), URI.parse('foo:bar#3'))]; } @@ -1179,13 +1179,13 @@ suite('ExtHostLanguageFeatures', function () { test('Links, evil provider', function () { - disposables.push(extHost.registerDocumentLinkProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerDocumentLinkProvider(defaultExtension, defaultSelector, new class implements vscode.DocumentLinkProvider { provideDocumentLinks() { return [new types.DocumentLink(new types.Range(0, 0, 1, 1), URI.parse('foo:bar#3'))]; } })); - disposables.push(extHost.registerDocumentLinkProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerDocumentLinkProvider(defaultExtension, defaultSelector, new class implements vscode.DocumentLinkProvider { provideDocumentLinks(): any { throw new Error(); } @@ -1204,10 +1204,10 @@ suite('ExtHostLanguageFeatures', function () { test('Document colors, data conversion', function () { - disposables.push(extHost.registerColorProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerColorProvider(defaultExtension, defaultSelector, new class implements vscode.DocumentColorProvider { provideDocumentColors(): vscode.ColorInformation[] { return [new types.ColorInformation(new types.Range(0, 0, 0, 20), new types.Color(0.1, 0.2, 0.3, 0.4))]; - }, + } provideColorPresentations(color: vscode.Color, context: { range: vscode.Range, document: vscode.TextDocument }): vscode.ColorPresentation[] { return []; } @@ -1227,7 +1227,7 @@ suite('ExtHostLanguageFeatures', function () { // -- selection ranges test('Selection Ranges, data conversion', async function () { - disposables.push(extHost.registerSelectionRangeProvider(defaultExtension, defaultSelector, { + disposables.push(extHost.registerSelectionRangeProvider(defaultExtension, defaultSelector, new class implements vscode.SelectionRangeProvider { provideSelectionRanges() { return [ new types.SelectionRange(new types.Range(0, 10, 0, 18), types.SelectionRangeKind.Empty), -- GitLab