diff --git a/package-lock.json b/package-lock.json index 105bc1546..00f887081 100644 --- a/package-lock.json +++ b/package-lock.json @@ -35,9 +35,9 @@ "tmp": "0.0.33", "uuid": "^9.0.0", "vscode-html-languageservice": "^5.0.1", - "vscode-jsonrpc": "8.2.0-next.0", - "vscode-languageclient": "8.2.0-next.1", - "vscode-languageserver-protocol": "3.17.4-next.1", + "vscode-jsonrpc": "8.2.1", + "vscode-languageclient": "9.0.1", + "vscode-languageserver-protocol": "3.17.5", "vscode-languageserver-textdocument": "^1.0.5", "vscode-nls": "5.0.1", "yauzl": "2.10.0" @@ -2222,14 +2222,6 @@ "vscode-jsonrpc": "^8.0.2" } }, - "node_modules/@microsoft/servicehub-framework/node_modules/vscode-jsonrpc": { - "version": "8.1.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/vscode-jsonrpc/-/vscode-jsonrpc-8.1.0.tgz", - "integrity": "sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw==", - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@nevware21/ts-async": { "version": "0.3.0", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@nevware21/ts-async/-/ts-async-0.3.0.tgz", @@ -15135,30 +15127,33 @@ "integrity": "sha512-ukOMWnCg1tCvT7WnDfsUKQOFDQGsyR5tNgRpwmqi+5/vzU3ghdDXzvIM4IOPdSb3OeSsBNvmSL8nxIVOqi2WXA==" }, "node_modules/vscode-jsonrpc": { - "version": "8.2.0-next.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0-next.0.tgz", - "integrity": "sha512-13jYzaFQpTz5qQ2P+l5c/iTVsj1wUpflP0CR/v4XaEpM0oToLEXZBTcuuox1WaGIbu3Av3xxmGNU4Hydl1iNKg==", + "version": "8.2.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/vscode-jsonrpc/-/vscode-jsonrpc-8.2.1.tgz", + "integrity": "sha1-oyLMDx2X95T/2cTNKomKC94JfzQ=", + "license": "MIT", "engines": { "node": ">=14.0.0" } }, "node_modules/vscode-languageclient": { - "version": "8.2.0-next.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/vscode-languageclient/-/vscode-languageclient-8.2.0-next.1.tgz", - "integrity": "sha512-oITaqHQ10PM3zXCUu/104wriMeDutXMkQXMaRBWh1jKihcNcUBLC/os7RhqiVGypY0nl+F0pwStAf4Koc8inaw==", + "version": "9.0.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/vscode-languageclient/-/vscode-languageclient-9.0.1.tgz", + "integrity": "sha1-zf4gJncmyNTbg53B6dGBbhKW6FQ=", + "license": "MIT", "dependencies": { "minimatch": "^5.1.0", "semver": "^7.3.7", - "vscode-languageserver-protocol": "3.17.4-next.1" + "vscode-languageserver-protocol": "3.17.5" }, "engines": { - "vscode": "^1.77.0" + "vscode": "^1.82.0" } }, "node_modules/vscode-languageclient/node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "integrity": "sha1-HtxFng8MVISG7Pn8mfIiE2S5oK4=", + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -15166,7 +15161,8 @@ "node_modules/vscode-languageclient/node_modules/minimatch": { "version": "5.1.6", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "integrity": "sha1-HPy4z1Ui6mmVLNKvla4JR38SKpY=", + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -15174,19 +15170,42 @@ "node": ">=10" } }, + "node_modules/vscode-languageclient/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/semver/-/semver-7.6.3.tgz", + "integrity": "sha1-mA97VVC8F1+03AlAMIVif56zMUM=", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/vscode-languageserver-protocol": { - "version": "3.17.4-next.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.4-next.1.tgz", - "integrity": "sha512-qrK4BycgPR/+nkRN9PRVTblkLp+kUPUmAgF6rDhFzZIPXW4/MqWwFUT8uswIMGdlTPPgCEkFO/AYEZK1fDXODg==", + "version": "3.17.5", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", + "integrity": "sha1-hkqLjzkINVcvThO9n4MT0OOsS+o=", + "license": "MIT", "dependencies": { - "vscode-jsonrpc": "8.2.0-next.0", - "vscode-languageserver-types": "3.17.4-next.0" + "vscode-jsonrpc": "8.2.0", + "vscode-languageserver-types": "3.17.5" + } + }, + "node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc": { + "version": "8.2.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", + "integrity": "sha1-9D36NftR52PRfNlNzKDJRY81q/k=", + "license": "MIT", + "engines": { + "node": ">=14.0.0" } }, "node_modules/vscode-languageserver-protocol/node_modules/vscode-languageserver-types": { - "version": "3.17.4-next.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/vscode-languageserver-types/-/vscode-languageserver-types-3.17.4-next.0.tgz", - "integrity": "sha512-2FPKboHnT04xYjfM8JpJVBz4a/tryMw58jmzucaabZMZN5hzoFBrhc97jNG4n6edr9JUb9+QSwwcAcYpDTAoag==" + "version": "3.17.5", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", + "integrity": "sha1-MnNnbwzy6rQLP0TQhay7fwijnYo=", + "license": "MIT" }, "node_modules/vscode-languageserver-textdocument": { "version": "1.0.8", @@ -17448,13 +17467,6 @@ "string-hash": "^1.1.3", "uuid": "^9.0.0", "vscode-jsonrpc": "^8.0.2" - }, - "dependencies": { - "vscode-jsonrpc": { - "version": "8.1.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/vscode-jsonrpc/-/vscode-jsonrpc-8.1.0.tgz", - "integrity": "sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw==" - } } }, "@nevware21/ts-async": { @@ -27070,24 +27082,24 @@ } }, "vscode-jsonrpc": { - "version": "8.2.0-next.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0-next.0.tgz", - "integrity": "sha512-13jYzaFQpTz5qQ2P+l5c/iTVsj1wUpflP0CR/v4XaEpM0oToLEXZBTcuuox1WaGIbu3Av3xxmGNU4Hydl1iNKg==" + "version": "8.2.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/vscode-jsonrpc/-/vscode-jsonrpc-8.2.1.tgz", + "integrity": "sha1-oyLMDx2X95T/2cTNKomKC94JfzQ=" }, "vscode-languageclient": { - "version": "8.2.0-next.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/vscode-languageclient/-/vscode-languageclient-8.2.0-next.1.tgz", - "integrity": "sha512-oITaqHQ10PM3zXCUu/104wriMeDutXMkQXMaRBWh1jKihcNcUBLC/os7RhqiVGypY0nl+F0pwStAf4Koc8inaw==", + "version": "9.0.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/vscode-languageclient/-/vscode-languageclient-9.0.1.tgz", + "integrity": "sha1-zf4gJncmyNTbg53B6dGBbhKW6FQ=", "requires": { "minimatch": "^5.1.0", "semver": "^7.3.7", - "vscode-languageserver-protocol": "3.17.4-next.1" + "vscode-languageserver-protocol": "3.17.5" }, "dependencies": { "brace-expansion": { "version": "2.0.1", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "integrity": "sha1-HtxFng8MVISG7Pn8mfIiE2S5oK4=", "requires": { "balanced-match": "^1.0.0" } @@ -27095,26 +27107,36 @@ "minimatch": { "version": "5.1.6", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "integrity": "sha1-HPy4z1Ui6mmVLNKvla4JR38SKpY=", "requires": { "brace-expansion": "^2.0.1" } + }, + "semver": { + "version": "7.6.3", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/semver/-/semver-7.6.3.tgz", + "integrity": "sha1-mA97VVC8F1+03AlAMIVif56zMUM=" } } }, "vscode-languageserver-protocol": { - "version": "3.17.4-next.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.4-next.1.tgz", - "integrity": "sha512-qrK4BycgPR/+nkRN9PRVTblkLp+kUPUmAgF6rDhFzZIPXW4/MqWwFUT8uswIMGdlTPPgCEkFO/AYEZK1fDXODg==", + "version": "3.17.5", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", + "integrity": "sha1-hkqLjzkINVcvThO9n4MT0OOsS+o=", "requires": { - "vscode-jsonrpc": "8.2.0-next.0", - "vscode-languageserver-types": "3.17.4-next.0" + "vscode-jsonrpc": "8.2.0", + "vscode-languageserver-types": "3.17.5" }, "dependencies": { + "vscode-jsonrpc": { + "version": "8.2.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", + "integrity": "sha1-9D36NftR52PRfNlNzKDJRY81q/k=" + }, "vscode-languageserver-types": { - "version": "3.17.4-next.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/vscode-languageserver-types/-/vscode-languageserver-types-3.17.4-next.0.tgz", - "integrity": "sha512-2FPKboHnT04xYjfM8JpJVBz4a/tryMw58jmzucaabZMZN5hzoFBrhc97jNG4n6edr9JUb9+QSwwcAcYpDTAoag==" + "version": "3.17.5", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", + "integrity": "sha1-MnNnbwzy6rQLP0TQhay7fwijnYo=" } } }, diff --git a/package.json b/package.json index 4c867f4f6..5ee81361d 100644 --- a/package.json +++ b/package.json @@ -113,9 +113,9 @@ "tmp": "0.0.33", "uuid": "^9.0.0", "vscode-html-languageservice": "^5.0.1", - "vscode-jsonrpc": "8.2.0-next.0", - "vscode-languageclient": "8.2.0-next.1", - "vscode-languageserver-protocol": "3.17.4-next.1", + "vscode-jsonrpc": "8.2.1", + "vscode-languageclient": "9.0.1", + "vscode-languageserver-protocol": "3.17.5", "vscode-languageserver-textdocument": "^1.0.5", "vscode-nls": "5.0.1", "yauzl": "2.10.0" diff --git a/src/csharpExtensionExports.ts b/src/csharpExtensionExports.ts index 99bc7e372..113c45e71 100644 --- a/src/csharpExtensionExports.ts +++ b/src/csharpExtensionExports.ts @@ -35,4 +35,6 @@ export interface CSharpExtensionExperimentalExports { token: vscode.CancellationToken ) => Promise; languageServerEvents: LanguageServerEvents; + outputChannel: vscode.OutputChannel; + traceChannel: vscode.OutputChannel; } diff --git a/src/lsptoolshost/onAutoInsertFeature.ts b/src/lsptoolshost/onAutoInsertFeature.ts index 0c3e03f21..9d1b8fe58 100644 --- a/src/lsptoolshost/onAutoInsertFeature.ts +++ b/src/lsptoolshost/onAutoInsertFeature.ts @@ -39,6 +39,9 @@ export class OnAutoInsertFeature implements DynamicFeature(RoslynProtocol.OnAutoInsertRequest.method); } + clear(): void { + this._registrations.clear(); + } fillInitializeParams?: ((params: InitializeParams) => void) | undefined; preInitialize?: | ((capabilities: ServerCapabilities, documentSelector: DocumentSelector | undefined) => void) diff --git a/src/lsptoolshost/roslynLanguageServer.ts b/src/lsptoolshost/roslynLanguageServer.ts index 9e7adf6b2..20f72bd8b 100644 --- a/src/lsptoolshost/roslynLanguageServer.ts +++ b/src/lsptoolshost/roslynLanguageServer.ts @@ -1063,14 +1063,12 @@ export async function activateRoslynLanguageServer( platformInfo: PlatformInformation, optionObservable: Observable, outputChannel: vscode.LogOutputChannel, + traceChannel: vscode.OutputChannel, reporter: TelemetryReporter, languageServerEvents: RoslynLanguageServerEvents ): Promise { - // Create a channel for outputting general logs from the language server. _channel = outputChannel; - // Create a separate channel for outputting trace logs - these are incredibly verbose and make other logs very difficult to see. - // The trace channel verbosity is controlled by the _channel verbosity. - _traceChannel = vscode.window.createOutputChannel('C# LSP Trace Logs'); + _traceChannel = traceChannel; const hostExecutableResolver = new DotnetRuntimeExtensionResolver( platformInfo, diff --git a/src/lsptoolshost/roslynProtocol.ts b/src/lsptoolshost/roslynProtocol.ts index c9f88c799..d50951770 100644 --- a/src/lsptoolshost/roslynProtocol.ts +++ b/src/lsptoolshost/roslynProtocol.ts @@ -5,7 +5,6 @@ import { Command } from 'vscode'; import * as lsp from 'vscode-languageserver-protocol'; -import { CodeAction, TextDocumentRegistrationOptions } from 'vscode-languageserver-protocol'; import { ProjectConfigurationMessage } from '../shared/projectConfiguration'; export interface VSProjectContextList { @@ -95,7 +94,7 @@ export interface OnAutoInsertOptions { /** * Registration options for an {@link OnAutoInsertRequest}. */ -export interface OnAutoInsertRegistrationOptions extends TextDocumentRegistrationOptions, OnAutoInsertOptions {} +export interface OnAutoInsertRegistrationOptions extends lsp.TextDocumentRegistrationOptions, OnAutoInsertOptions {} export interface RegisterSolutionSnapshotResponseItem { /** @@ -185,7 +184,7 @@ export interface BuildOnlyDiagnosticIdsResult { ids: string[]; } -export interface RoslynFixAllCodeAction extends CodeAction { +export interface RoslynFixAllCodeAction extends lsp.CodeAction { scope: string; } diff --git a/src/main.ts b/src/main.ts index 1f7eaa7f8..452097145 100644 --- a/src/main.ts +++ b/src/main.ts @@ -104,7 +104,7 @@ export async function activate( let roslynLanguageServerStartedPromise: Promise | undefined = undefined; let razorLanguageServerStartedPromise: Promise | undefined = undefined; let projectInitializationCompletePromise: Promise | undefined = undefined; - + const traceChannel = vscode.window.createOutputChannel('C# LSP Trace Logs'); if (!useOmnisharpServer) { // Activate Razor. Needs to be activated before Roslyn so commands are registered in the correct order. // Otherwise, if Roslyn starts up first, they could execute commands that don't yet exist on Razor's end. @@ -139,6 +139,7 @@ export async function activate( platformInfo, optionStream, csharpChannel, + traceChannel, reporter, roslynLanguageServerEvents ); @@ -244,6 +245,8 @@ export async function activate( experimental: { sendServerRequest: async (t, p, ct) => await languageServerExport.sendRequest(t, p, ct), languageServerEvents: roslynLanguageServerEvents, + outputChannel: csharpChannel, + traceChannel: traceChannel, }, getComponentFolder: (componentName) => { return getComponentFolder(componentName, languageServerOptions); diff --git a/src/omnisharp/engines/lspEngine.ts b/src/omnisharp/engines/lspEngine.ts index 612487d17..0326d173d 100644 --- a/src/omnisharp/engines/lspEngine.ts +++ b/src/omnisharp/engines/lspEngine.ts @@ -405,7 +405,7 @@ export class LspEngine implements IEngine { registrations: true, }; }, - dispose() { + clear() { /* empty */ }, fillClientCapabilities(_) { diff --git a/src/razor/src/colorPresentation/colorPresentationContext.ts b/src/razor/src/colorPresentation/colorPresentationContext.ts index fd2321ffd..c7e819a8f 100644 --- a/src/razor/src/colorPresentation/colorPresentationContext.ts +++ b/src/razor/src/colorPresentation/colorPresentationContext.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import * as vscode from 'vscode'; -import { Range } from 'vscode-languageserver-types'; +import { Range } from 'vscode-languageserver-protocol'; export class ColorPresentationContext { constructor(public readonly uri: vscode.Uri, public readonly range: Range) {} diff --git a/src/razor/src/folding/serializableFoldingRangeParams.ts b/src/razor/src/folding/serializableFoldingRangeParams.ts index cf5ed1f7b..2341f3b62 100644 --- a/src/razor/src/folding/serializableFoldingRangeParams.ts +++ b/src/razor/src/folding/serializableFoldingRangeParams.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { integer } from 'vscode-languageserver-types'; +import { integer } from 'vscode-languageserver-protocol'; import { SerializableTextDocumentIdentifier } from '../rpc/serializableTextDocumentIdentifier'; export interface SerializableFoldingRangeParams { diff --git a/src/razor/src/razorLanguageServerClient.ts b/src/razor/src/razorLanguageServerClient.ts index 2408500df..5dd3b745e 100644 --- a/src/razor/src/razorLanguageServerClient.ts +++ b/src/razor/src/razorLanguageServerClient.ts @@ -6,8 +6,14 @@ import * as cp from 'child_process'; import { EventEmitter } from 'events'; import * as vscode from 'vscode'; -import { RequestHandler, RequestType } from 'vscode-jsonrpc'; -import { GenericNotificationHandler, InitializeResult, LanguageClientOptions, State } from 'vscode-languageclient'; +import { RequestHandler } from 'vscode-jsonrpc'; +import { + GenericNotificationHandler, + InitializeResult, + LanguageClientOptions, + RequestType, + State, +} from 'vscode-languageclient'; import { ServerOptions } from 'vscode-languageclient/node'; import { RazorLanguage } from './razorLanguage'; import { RazorLanguageServerOptions } from './razorLanguageServerOptions'; diff --git a/test/lsptoolshost/integrationTests/codeactions.integration.test.ts b/test/lsptoolshost/integrationTests/codeactions.integration.test.ts index a9ec6091c..b8d6698c7 100644 --- a/test/lsptoolshost/integrationTests/codeactions.integration.test.ts +++ b/test/lsptoolshost/integrationTests/codeactions.integration.test.ts @@ -13,10 +13,12 @@ import { expectText, openFileInWorkspaceAsync, } from './integrationHelpers'; +import { CSharpExtensionExports } from '../../../src/csharpExtensionExports'; describe(`Code Actions Tests`, () => { + let csharpExports: CSharpExtensionExports | undefined = undefined; beforeAll(async () => { - await activateCSharpExtension(); + csharpExports = await activateCSharpExtension(); }); beforeEach(async () => { @@ -33,9 +35,15 @@ describe(`Code Actions Tests`, () => { }); test('Lightbulb displays actions', async () => { + console.log('LIGHTBULB TEST'); + csharpExports!.experimental.outputChannel.appendLine('Lightbulb displays actions'); + csharpExports!.experimental.traceChannel.appendLine('Lightbulb displays actions'); const actions = await getCodeActions(new vscode.Range(0, 0, 0, 12)); + csharpExports!.experimental.traceChannel.appendLine(`Got actions ${actions.length}`); + csharpExports!.experimental.traceChannel.appendLine(JSON.stringify(actions, null, 4)); expect(actions.length).toBeGreaterThanOrEqual(3); - + console.log(actions.length); + console.log(actions.map((a) => a.title).join(', ')); // Verify we have unresolved code actions. expect(actions[0].title).toBe('Remove unnecessary usings'); expect(actions[0].kind).toStrictEqual(vscode.CodeActionKind.QuickFix); @@ -55,7 +63,8 @@ describe(`Code Actions Tests`, () => { test('Remove unnecessary usings applied', async () => { const actions = await getCodeActions(new vscode.Range(0, 0, 0, 12), 10); - + console.log(actions.length); + console.log(actions.map((a) => a.title).join(', ')); expect(actions[0].title).toBe('Remove unnecessary usings'); expect(actions[0].edit).toBeDefined(); @@ -311,13 +320,18 @@ async function getCodeActions( range: vscode.Range, resolveCount: number | undefined = undefined ): Promise { + const uri = vscode.window.activeTextEditor!.document.uri; + console.log(`Getting actions for ${uri.toString()}`); const codeActions = await vscode.commands.executeCommand( 'vscode.executeCodeActionProvider', - vscode.window.activeTextEditor!.document.uri, + uri, range, /** kind **/ undefined, resolveCount ); + + console.log(JSON.stringify(codeActions, null, 4)); + return codeActions; } diff --git a/test/lsptoolshost/integrationTests/integrationHelpers.ts b/test/lsptoolshost/integrationTests/integrationHelpers.ts index c224d4fd9..461b06c7d 100644 --- a/test/lsptoolshost/integrationTests/integrationHelpers.ts +++ b/test/lsptoolshost/integrationTests/integrationHelpers.ts @@ -13,7 +13,7 @@ import testAssetWorkspace from './testAssets/testAssetWorkspace'; import { EOL } from 'os'; import { describe, expect, test } from '@jest/globals'; -export async function activateCSharpExtension(): Promise { +export async function activateCSharpExtension(): Promise { const csharpExtension = vscode.extensions.getExtension('ms-dotnettools.csharp'); if (!csharpExtension) { throw new Error('Failed to find installation of ms-dotnettools.csharp'); @@ -53,6 +53,8 @@ export async function activateCSharpExtension(): Promise { if (shouldRestart) { await restartLanguageServer(); } + + return csharpExtension.exports; } export function usingDevKit(): boolean { diff --git a/test/vscodeLauncher.ts b/test/vscodeLauncher.ts index 11b343e26..76a63d031 100644 --- a/test/vscodeLauncher.ts +++ b/test/vscodeLauncher.ts @@ -15,7 +15,7 @@ export async function prepareVSCodeAndExecuteTests( userDataDir: string, env: NodeJS.ProcessEnv ): Promise { - const vscodeExecutablePath = await downloadAndUnzipVSCode('1.94.2'); + const vscodeExecutablePath = await downloadAndUnzipVSCode('stable'); const [cli, ...args] = resolveCliArgsFromVSCodeExecutablePath(vscodeExecutablePath); console.log('Display: ' + env.DISPLAY); diff --git a/webpack.config.js b/webpack.config.js index 2ed9ce853..26b152675 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -25,7 +25,9 @@ const config = { '@opentelemetry/tracing': 'commonjs @opentelemetry/tracing', // optional }, resolve: { // support reading TypeScript and JavaScript files, 📖 -> https://github.com/TypeStrong/ts-loader - extensions: ['.ts', '.js'] + extensions: ['.ts', '.js'], + conditionNames: ['import', 'require'], + mainFields: ['module', 'main'], }, node: { __dirname: false //preserve the default node.js behavior for __dirname