Skip to content

Commit 35820eb

Browse files
authored
refactor: Fix null check and implicit any (#389)
1 parent 26a86e8 commit 35820eb

37 files changed

+195
-179
lines changed

src/ExperimentationService.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ export function getExpService() {
2828
}
2929

3030
export function init(context: vscode.ExtensionContext): void {
31-
const packageJson: {} = require("../package.json");
31+
const packageJson: {[key: string]: any} = require("../package.json");
3232
// tslint:disable: no-string-literal
3333
const extensionName = `${packageJson["publisher"]}.${packageJson["name"]}`;
3434
const extensionVersion = packageJson["version"];

src/build.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// Licensed under the MIT license.
33

44
import { basename } from "path";
5-
import { commands, DiagnosticSeverity, languages, Uri, window } from "vscode";
5+
import { commands, DiagnosticSeverity, languages, QuickPickItem, Uri, window } from "vscode";
66
import { instrumentOperation, sendInfo, sendOperationError, setErrorCode } from "vscode-extension-telemetry-wrapper";
77
import { Commands, executeJavaExtensionCommand } from "./commands";
88
import { Jdtls } from "./java/jdtls";
@@ -71,14 +71,14 @@ function checkErrorsReportedByJavaExtension(): boolean {
7171
}
7272

7373
async function showFixSuggestions(operationId: string) {
74-
let buildFiles = [];
74+
let buildFiles: string[] = [];
7575
try {
7676
buildFiles = await Jdtls.resolveBuildFiles();
7777
} catch (error) {
7878
// do nothing
7979
}
8080

81-
const pickitems = [];
81+
const pickitems: QuickPickItem[] = [];
8282
pickitems.push({
8383
label: "Clean workspace cache",
8484
detail: "Clean the stale workspace and reload the window",

src/commands.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,11 +92,11 @@ export namespace Commands {
9292
export const WORKBENCH_ACTION_FILES_OPENFILEFOLDER = "workbench.action.files.openFileFolder";
9393
}
9494

95-
export function executeJavaLanguageServerCommand(...rest) {
95+
export function executeJavaLanguageServerCommand(...rest: any[]) {
9696
return executeJavaExtensionCommand(Commands.EXECUTE_WORKSPACE_COMMAND, ...rest);
9797
}
9898

99-
export async function executeJavaExtensionCommand(commandName: string, ...rest) {
99+
export async function executeJavaExtensionCommand(commandName: string, ...rest: any[]) {
100100
// TODO: need to handle error and trace telemetry
101101
return commands.executeCommand(commandName, ...rest);
102102
}

src/controllers/libraryController.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ export class LibraryController implements Disposable {
2121
this.disposable = Disposable.from(
2222
instrumentOperationAsVsCodeCommand(Commands.JAVA_PROJECT_ADD_LIBRARIES, () => this.addLibraries()),
2323
instrumentOperationAsVsCodeCommand(Commands.JAVA_PROJECT_REMOVE_LIBRARY, (node: DataNode) =>
24-
this.removeLibrary(Uri.parse(node.uri).fsPath)),
24+
node.uri && this.removeLibrary(Uri.parse(node.uri).fsPath)),
2525
instrumentOperationAsVsCodeCommand(Commands.JAVA_PROJECT_REFRESH_LIBRARIES, () =>
2626
this.refreshLibraries()),
2727
);

src/explorerCommands/new.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,10 @@ async function getPackageFsPath(node: DataNode): Promise<string> {
5151
});
5252
if (packageRoots.length < 1) {
5353
// This might happen for an invisible project with "_" as its root
54-
const packageNode: DataNode = childrenNodes.find((child) => {
54+
const packageNode: DataNode | undefined = childrenNodes.find((child) => {
5555
return child.nodeData.kind === NodeKind.Package;
5656
});
57-
if (packageNode) {
57+
if (packageNode?.uri) {
5858
return getPackageRootPath(Uri.parse(packageNode.uri).fsPath, packageNode.name);
5959
}
6060
return "";
@@ -76,7 +76,7 @@ async function getPackageFsPath(node: DataNode): Promise<string> {
7676
}
7777
}
7878

79-
return Uri.parse(node.uri).fsPath;
79+
return node.uri ? Uri.parse(node.uri).fsPath : "";
8080
}
8181

8282
function getNewFilePath(basePath: string, className: string): string {
@@ -87,6 +87,10 @@ function getNewFilePath(basePath: string, className: string): string {
8787
}
8888

8989
export async function newPackage(node: DataNode): Promise<void> {
90+
if (!node.uri) {
91+
return;
92+
}
93+
9094
let defaultValue: string;
9195
let packageRootPath: string;
9296
const nodeKind = node.nodeData.kind;

src/explorerCommands/utility.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ export function isMutable(node: DataNode): boolean {
1111
const resourceOrTypeExp = /java:(file|type|folder)(?=.*?\b\+uri\b)/;
1212

1313
const contextValue = node.computeContextValue();
14+
if (!contextValue) {
15+
return false;
16+
}
1417
return packageExp.test(contextValue) || resourceOrTypeExp.test(contextValue);
1518
}
1619

src/exportJarSteps/ExportJarTaskProvider.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ export class ExportJarTaskProvider implements TaskProvider {
9494
const stepMetadata: IStepMetadata = {
9595
entry: undefined,
9696
workspaceFolder: folder,
97-
projectList: await Jdtls.getProjects(folder.uri.toString()),
97+
projectList: await Jdtls.getProjects(folder.uri.toString()) || [],
9898
steps: [],
9999
elements: [],
100100
classpaths: [],
@@ -115,7 +115,7 @@ export class ExportJarTaskProvider implements TaskProvider {
115115
}
116116
this.tasks = [];
117117
for (const folder of folders) {
118-
const projectList: INodeData[] = await Jdtls.getProjects(folder.uri.toString());
118+
const projectList: INodeData[] = await Jdtls.getProjects(folder.uri.toString()) || [];
119119
const elementList: string[] = [];
120120
if (_.isEmpty(projectList)) {
121121
continue;
@@ -128,7 +128,7 @@ export class ExportJarTaskProvider implements TaskProvider {
128128
"${" + ExportJarConstants.DEPENDENCIES + ":" + project.name + "}");
129129
}
130130
}
131-
const mainClasses: IMainClassInfo[] = await Jdtls.getMainClasses(folder.uri.toString());
131+
const mainClasses: IMainClassInfo[] = await Jdtls.getMainClasses(folder.uri.toString()) || [];
132132
const defaultDefinition: IExportJarTaskDefinition = {
133133
type: ExportJarTaskProvider.exportJarType,
134134
label: `${ExportJarTaskProvider.exportJarType}: exportjar:${folder.name}`,
@@ -141,7 +141,7 @@ export class ExportJarTaskProvider implements TaskProvider {
141141
const stepMetadata: IStepMetadata = {
142142
entry: undefined,
143143
workspaceFolder: folder,
144-
projectList: await Jdtls.getProjects(folder.uri.toString()),
144+
projectList: await Jdtls.getProjects(folder.uri.toString()) || [],
145145
steps: [],
146146
elements: [],
147147
classpaths: [],
@@ -188,7 +188,7 @@ class ExportJarTaskTerminal implements Pseudoterminal {
188188
const artifactMap: Map<string, string[]> = new Map<string, string[]>();
189189
const testOutputFolderMap: Map<string, string[]> = new Map<string, string[]>();
190190
const testArtifactMap: Map<string, string[]> = new Map<string, string[]>();
191-
const projectList: INodeData[] = await Jdtls.getProjects(this.stepMetadata.workspaceFolder.uri.toString());
191+
const projectList: INodeData[] | undefined = await Jdtls.getProjects(this.stepMetadata.workspaceFolder.uri.toString()) || [];
192192
for (const project of projectList) {
193193
await this.setClasspathMap(project, "runtime", outputFolderMap, artifactMap);
194194
await this.setClasspathMap(project, "test", testOutputFolderMap, testArtifactMap);
@@ -333,7 +333,7 @@ class ExportJarTaskTerminal implements Pseudoterminal {
333333
}
334334
const sources: IClasspath[] = [];
335335
for (const glob of await globby(globPatterns)) {
336-
const tireNode: TrieNode<IUriData> | undefined = trie.find(
336+
const tireNode: TrieNode<IUriData | undefined> | undefined = trie.find(
337337
Uri.file(platform() === "win32" ? toWinPath(glob) : glob).fsPath, /* returnEarly = */true);
338338
if (!tireNode?.value?.uri) {
339339
continue;

src/exportJarSteps/GenerateJarExecutor.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,12 +77,12 @@ export class GenerateJarExecutor implements IExportJarStepExecutor {
7777
if (_.isEmpty(classpaths)) {
7878
return reject(new Error(ExportJarMessages.CLASSPATHS_EMPTY));
7979
}
80-
const exportResult: IExportResult = await Jdtls.exportJar(basename(mainClass), classpaths, destPath);
81-
if (exportResult.result === true) {
80+
const exportResult: IExportResult | undefined = await Jdtls.exportJar(basename(mainClass), classpaths, destPath);
81+
if (exportResult?.result === true) {
8282
stepMetadata.outputPath = destPath;
8383
return resolve(true);
8484
} else {
85-
return reject(new Error("Export jar failed." + exportResult.message));
85+
return reject(new Error("Export jar failed." + exportResult?.message));
8686
}
8787
});
8888
});

src/exportJarSteps/ResolveJavaProjectExecutor.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,18 +34,18 @@ export class ResolveJavaProjectExecutor implements IExportJarStepExecutor {
3434
stepMetadata.workspaceFolder = folder;
3535
}
3636
}
37-
stepMetadata.projectList = await Jdtls.getProjects(workspaceUri.toString());
37+
stepMetadata.projectList = await Jdtls.getProjects(workspaceUri.toString()) || [];
3838
return;
3939
}
4040
if (folders.length === 1) {
4141
stepMetadata.workspaceFolder = folders[0];
42-
stepMetadata.projectList = await Jdtls.getProjects(folders[0].uri.toString());
42+
stepMetadata.projectList = await Jdtls.getProjects(folders[0].uri.toString()) || [];
4343
return;
4444
}
4545
const pickItems: IJavaProjectQuickPickItem[] = [];
4646
const projectMap: Map<string, INodeData[]> = new Map<string, INodeData[]>();
4747
for (const folder of folders) {
48-
const projects: INodeData[] = await Jdtls.getProjects(folder.uri.toString());
48+
const projects: INodeData[] = await Jdtls.getProjects(folder.uri.toString()) || [];
4949
if (!_.isEmpty(projects)) {
5050
pickItems.push({
5151
label: folder.name,

src/exportJarSteps/ResolveMainClassExecutor.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export class ResolveMainClassExecutor implements IExportJarStepExecutor {
2424
}
2525

2626
private async resolveMainClass(stepMetadata: IStepMetadata): Promise<boolean> {
27-
const mainClasses: IMainClassInfo[] = await window.withProgress({
27+
const mainClasses: IMainClassInfo[] | undefined = await window.withProgress({
2828
location: ProgressLocation.Window,
2929
title: "Exporting Jar : Resolving main classes...",
3030
cancellable: true,

0 commit comments

Comments
 (0)