Skip to content

Commit db41286

Browse files
authored
Improve code actions by using "java/getChangeSignatureInfo". (#3845)
- Use the custom request to get signature information to populate the necessary UI elements Signed-off-by: Snjezana Peco <[email protected]>
1 parent 4bf5287 commit db41286

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

src/protocol.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -366,13 +366,27 @@ export namespace GetRefactorEditRequest {
366366
export const type = new RequestType<GetRefactorEditParams, RefactorWorkspaceEdit, void>('java/getRefactorEdit');
367367
}
368368

369+
export namespace GetChangeSignatureInfoRequest {
370+
export const type = new RequestType<CodeActionParams, ChangeSignatureInfo, void>('java/getChangeSignatureInfo');
371+
}
372+
369373
export interface SelectionInfo {
370374
name: string;
371375
length: number;
372376
offset: number;
373377
params?: string[];
374378
}
375379

380+
export interface ChangeSignatureInfo {
381+
methodIdentifier: string;
382+
modifier: string;
383+
returnType: string;
384+
methodName: string;
385+
parameters: any;
386+
exceptions: any;
387+
errorMessage: string;
388+
}
389+
376390
export interface InferSelectionParams {
377391
command: string;
378392
context: CodeActionParams;

src/refactorAction.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { commands, ExtensionContext, Position, QuickPickItem, TextDocument, Uri,
66
import { FormattingOptions, WorkspaceEdit, RenameFile, DeleteFile, TextDocumentEdit, CodeActionParams, SymbolInformation } from 'vscode-languageclient';
77
import { LanguageClient } from 'vscode-languageclient/node';
88
import { Commands as javaCommands } from './commands';
9-
import { GetRefactorEditRequest, MoveRequest, RefactorWorkspaceEdit, RenamePosition, GetMoveDestinationsRequest, SearchSymbols, SelectionInfo, InferSelectionRequest } from './protocol';
9+
import { GetRefactorEditRequest, MoveRequest, RefactorWorkspaceEdit, RenamePosition, GetMoveDestinationsRequest, SearchSymbols, SelectionInfo, InferSelectionRequest, GetChangeSignatureInfoRequest, ChangeSignatureInfo } from './protocol';
1010
import { ChangeSignaturePanel } from './refactoring/changeSignaturePanel';
1111
import { getExtractInterfaceArguments, revealExtractedInterface } from './refactoring/extractInterface';
1212

@@ -112,7 +112,12 @@ function registerApplyRefactorCommand(languageClient: LanguageClient, context: E
112112
}
113113
commandArguments.push(...args);
114114
} else if (command === 'changeSignature') {
115-
ChangeSignaturePanel.render(context.extensionUri, languageClient, command, params, formattingOptions, commandInfo);
115+
const changeSignatureInfo: ChangeSignatureInfo = await languageClient.sendRequest(GetChangeSignatureInfoRequest.type, params);
116+
if (changeSignatureInfo.errorMessage !== undefined) {
117+
window.showWarningMessage(changeSignatureInfo.errorMessage);
118+
return;
119+
}
120+
ChangeSignaturePanel.render(context.extensionUri, languageClient, command, params, formattingOptions, changeSignatureInfo);
116121
return;
117122
}
118123

0 commit comments

Comments
 (0)