Skip to content

Commit e6244d3

Browse files
benibenjpierceboggan
authored andcommitted
java import support (#521)
1 parent 0382f35 commit e6244d3

File tree

1 file changed

+29
-2
lines changed

1 file changed

+29
-2
lines changed

src/extension/inlineEdits/vscode-node/features/diagnosticsBasedCompletions/importDiagnosticsCompletionProvider.ts

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ class WorkspaceInformation {
180180

181181
export class ImportDiagnosticCompletionProvider implements IDiagnosticCompletionProvider<ImportDiagnosticCompletionItem> {
182182

183-
public static SupportedLanguages = new Set<string>(['typescript', 'javascript', 'typescriptreact', 'javascriptreact', 'python']);
183+
public static SupportedLanguages = new Set<string>(['typescript', 'javascript', 'typescriptreact', 'javascriptreact', 'python', 'java']);
184184

185185
public readonly providerName = 'import';
186186

@@ -198,12 +198,14 @@ export class ImportDiagnosticCompletionProvider implements IDiagnosticCompletion
198198

199199
const javascriptImportHandler = new JavascriptImportHandler();
200200
const pythonImportHandler = new PythonImportHandler();
201+
const javaImportHandler = new JavaImportHandler();
201202
this._importHandlers = new Map<string, ILanguageImportHandler>([
202203
['javascript', javascriptImportHandler],
203204
['typescript', javascriptImportHandler],
204205
['typescriptreact', javascriptImportHandler],
205206
['javascriptreact', javascriptImportHandler],
206207
['python', pythonImportHandler],
208+
['java', javaImportHandler],
207209
]);
208210
}
209211

@@ -316,7 +318,7 @@ export class ImportDiagnosticCompletionProvider implements IDiagnosticCompletion
316318
// The diagnostic might have changed in the meantime to a different range
317319
// So we need to get the import name from the referenced diagnostic
318320
let codeActionImportName = importName;
319-
if (codeAction.diagnostics) {
321+
if (codeAction.diagnostics && codeAction.diagnostics.length > 0) {
320322
codeActionImportName = codeAction.diagnostics[0].range.substring(documentContent.value);
321323
}
322324

@@ -489,3 +491,28 @@ class PythonImportHandler implements ILanguageImportHandler {
489491
return ImportSource.unknown;
490492
}
491493
}
494+
495+
class JavaImportHandler implements ILanguageImportHandler {
496+
497+
isImportDiagnostic(diagnostic: Diagnostic): boolean {
498+
return String(diagnostic.data.code) === '16777218' || diagnostic.message.endsWith('cannot be resolved to a type');
499+
}
500+
501+
isImportCodeAction(codeAction: CodeActionData): boolean {
502+
return codeAction.title.startsWith('Import');
503+
}
504+
505+
isImportInIgnoreList(importCodeAction: ImportCodeAction): boolean {
506+
return false;
507+
}
508+
509+
getImportDetails(codeAction: CodeActionData, importName: string, workspaceInfo: WorkspaceInformation): ImportDetails | null {
510+
return {
511+
importName,
512+
importPath: codeAction.title.split(`\'`)[2].trim(),
513+
labelShort: 'import ' + importName,
514+
labelDeduped: codeAction.title,
515+
importSource: ImportSource.unknown
516+
};
517+
}
518+
}

0 commit comments

Comments
 (0)