Skip to content

Commit 898f258

Browse files
committed
refactor(autofix): Fix handling for existing dependencies w/o argument
1 parent d0c91a3 commit 898f258

2 files changed

Lines changed: 21 additions & 23 deletions

File tree

src/autofix/solutions/amdImports.ts

Lines changed: 7 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ interface DependencyMapValue {
1717
trailingComma?: ts.Token<ts.SyntaxKind.CommaToken>;
1818
}
1919

20-
const NO_PARAM_FOR_DEPENDENCY = Symbol("noParamForDependency");
21-
const UNSUPPORTED_PARAM_FOR_DEPENDENCY = Symbol("unsupportedParamForDependency");
20+
export const NO_PARAM_FOR_DEPENDENCY = Symbol("noParamForDependency");
21+
export const UNSUPPORTED_PARAM_FOR_DEPENDENCY = Symbol("unsupportedParamForDependency");
2222
type ModuleName = string;
2323
export type Dependencies = Map<ModuleName,
2424
string | typeof NO_PARAM_FOR_DEPENDENCY | typeof UNSUPPORTED_PARAM_FOR_DEPENDENCY>;
@@ -211,27 +211,12 @@ export function addDependencies(
211211

212212
// Check whether requested imports are already available in the list of dependencies
213213
for (const [dependencyModuleName, importRequest] of importRequests) {
214-
// const dependencyModuleName = requestedModuleName;
215-
// const existingDependency = dependenciesToRemove.has(requestedModuleName) ?
216-
// undefined :
217-
// dependencyMap.get(requestedModuleName);
218-
219-
// if (existingDependency) {
220-
// // Reuse the existing dependency
221-
// // Check whether a parameter name already exists for this dependency
222-
// // Lookup needs to be based on the same index of the parameter in the factory function
223-
// const existingParameter = parameters[existingDependency.index];
224-
// if (existingParameter) {
225-
// // Existing parameter can be reused
226-
// importRequest.identifier = getParameterDeclarationText(existingParameter);
227-
// continue;
228-
// }
229-
// }
230-
// Add a new module dependency. Handing of missing parameters is done later
231-
// const identifier = resolveUniqueName(dependencyModuleName, declaredIdentifiers);
232-
// declaredIdentifiers.add(identifier);
233-
// importRequest.identifier = identifier;
214+
const existingDependency = dependenciesToRemove.has(dependencyModuleName) ?
215+
undefined :
216+
dependencyMap.get(dependencyModuleName);
217+
// Add a new dependency
234218
newDependencies.push({
219+
existingDependency,
235220
moduleName: dependencyModuleName,
236221
identifier: importRequest.identifier,
237222
});

src/autofix/solutions/generateChanges.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import parseModuleDeclaration from "../../linter/ui5Types/amdTranspiler/parseMod
1111
import parseRequire from "../../linter/ui5Types/amdTranspiler/parseRequire.js";
1212
import {getLogger} from "@ui5/logger";
1313
import Fix from "../../linter/ui5Types/fix/Fix.js";
14-
import {addDependencies, Dependencies, getDependencies, removeDependencies} from "./amdImports.js";
14+
import {addDependencies, Dependencies, getDependencies, NO_PARAM_FOR_DEPENDENCY, removeDependencies} from "./amdImports.js";
1515
import {resolveUniqueName} from "../../linter/ui5Types/utils/utils.js";
1616

1717
const log = getLogger("linter:autofix:NoGlobals");
@@ -325,6 +325,19 @@ function mergeDependencyRequests(dependencyRequests: Set<DependencyRequest>,
325325
fix.setIdentifierForDependency(depIdentifier, moduleName);
326326
dependencyRequests.delete(dependencyRequest); // Request fulfilled
327327
break;
328+
} else if (depIdentifier === NO_PARAM_FOR_DEPENDENCY) {
329+
// A dependency is declared, but the parameter is missing
330+
// Create a unique name if the preferred identifier is already in use
331+
// Use the first preferred identifier
332+
const identifier = resolveUniqueName(moduleName, identifiers);
333+
334+
identifiers.add(identifier);
335+
decl.moduleDeclarationInfo.importRequests.set(moduleName, {
336+
identifier,
337+
});
338+
dependencyRequest.fix.setIdentifierForDependency(identifier, moduleName);
339+
dependencyRequests.delete(dependencyRequest); // Request fulfilled
340+
break;
328341
}
329342
}
330343
}

0 commit comments

Comments
 (0)