From c52b53fc4ec8d289a6684ae43d4bc0af86e460f6 Mon Sep 17 00:00:00 2001 From: Merlin Beutlberger Date: Fri, 12 Apr 2024 14:42:36 +0200 Subject: [PATCH] fix(amdTranspiler): Fix substiute for sap.ui.require errbacks If the error callback is a function expression without a name, generate a name since the generated function definition must have one. --- .../requireExpressionToTransformation.ts | 2 +- .../ui5Types/amdTranspiler/transpiler.ts | 4 +- .../transpiler/amd/Require_Errback_2.js | 13 ++++++ .../amdTranspiler/snapshots/transpiler.ts.md | 38 +++++++++++++++++- .../snapshots/transpiler.ts.snap | Bin 13794 -> 13964 bytes 5 files changed, 53 insertions(+), 4 deletions(-) create mode 100644 test/fixtures/transpiler/amd/Require_Errback_2.js diff --git a/src/linter/ui5Types/amdTranspiler/requireExpressionToTransformation.ts b/src/linter/ui5Types/amdTranspiler/requireExpressionToTransformation.ts index 38b92a2a7..0031e426a 100644 --- a/src/linter/ui5Types/amdTranspiler/requireExpressionToTransformation.ts +++ b/src/linter/ui5Types/amdTranspiler/requireExpressionToTransformation.ts @@ -104,7 +104,7 @@ export function transformAsyncRequireCall( errbackDeclaration = nodeFactory.createFunctionDeclaration( errback.modifiers, errback.asteriskToken, - errback.name, + errback.name ?? nodeFactory.createUniqueName("extracted_require_errback"), errback.typeParameters, errback.parameters, errback.type, diff --git a/src/linter/ui5Types/amdTranspiler/transpiler.ts b/src/linter/ui5Types/amdTranspiler/transpiler.ts index 2370a3513..9c994953f 100644 --- a/src/linter/ui5Types/amdTranspiler/transpiler.ts +++ b/src/linter/ui5Types/amdTranspiler/transpiler.ts @@ -102,7 +102,7 @@ export default function transpileAmdToEsm(fileName: string, content: string, str throw err; } if (err instanceof UnsupportedModuleError) { - log.verbose(`Failed to transform module: ${err.message}`); + log.verbose(`Failed to transform module ${fileName}: ${err.message}`); if (err.stack && log.isLevelEnabled("verbose")) { log.verbose(`Stack trace:`); log.verbose(err.stack); @@ -110,7 +110,7 @@ export default function transpileAmdToEsm(fileName: string, content: string, str return {source: content, map: ""}; } else if (err instanceof Error && err.message.startsWith("Debug Failure")) { // We probably failed to create a valid AST - log.verbose(`AST transformation failed for module: ${err.message}`); + log.verbose(`AST transformation failed for module ${fileName}: ${err.message}`); if (err.stack && log.isLevelEnabled("verbose")) { log.verbose(`Stack trace:`); log.verbose(err.stack); diff --git a/test/fixtures/transpiler/amd/Require_Errback_2.js b/test/fixtures/transpiler/amd/Require_Errback_2.js new file mode 100644 index 000000000..a16ac1430 --- /dev/null +++ b/test/fixtures/transpiler/amd/Require_Errback_2.js @@ -0,0 +1,13 @@ +sap.ui.require(["my/module"], (Module) => { + return Module; +}, function (err) { + console.log(err); +}); + +var err = function (err) { + console.log(err); +}; + +sap.ui.require(["my/module"], (Module) => { + return Module; +}, err); diff --git a/test/lib/linter/amdTranspiler/snapshots/transpiler.ts.md b/test/lib/linter/amdTranspiler/snapshots/transpiler.ts.md index 8833c8ab3..4f89f0e98 100644 --- a/test/lib/linter/amdTranspiler/snapshots/transpiler.ts.md +++ b/test/lib/linter/amdTranspiler/snapshots/transpiler.ts.md @@ -1,4 +1,4 @@ -# Snapshot report for `test/lib/linter/js/transpiler.ts` +# Snapshot report for `test/lib/linter/amdTranspiler/transpiler.ts` The actual snapshot is saved in `transpiler.ts.snap`. @@ -1069,6 +1069,42 @@ Generated by [AVA](https://avajs.dev). version: 3, } +## Transpile Require_Errback_2.js + +> Snapshot 1 + + `import Module from "my/module";␊ + import Module from "my/module";␊ + ((Module) => {␊ + return Module;␊ + })(Module);␊ + var err = function (err) {␊ + console.log(err);␊ + };␊ + ((Module) => {␊ + return Module;␊ + })(Module);␊ + function extracted_require_errback_1(err) {␊ + console.log(err);␊ + }␊ + function extracted_require_errback_2(err) {␊ + console.log(err);␊ + }␊ + //# sourceMappingURL=Require_Errback_2.js.map` + +> Snapshot 2 + + { + file: 'Require_Errback_2.js', + mappings: 'OAA+B,MAAM,MAArB,WAAW;OAUI,MAAM,MAArB,WAAW;AAVG,CAAA,CAAC,MAAM,EAAE,EAAE;IACxC,OAAO,MAAM,CAAC;AACf,CAAC,CAAA,CAF8B,MAAM,EAIlC;AAEH,IAAI,GAAG,GAAG,UAAU,GAAG;IACtB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAClB,CAAC,CAAC;AAE4B,CAAA,CAAC,MAAM,EAAE,EAAE;IACxC,OAAO,MAAM,CAAC;AACf,CAAC,CAAA,CAF8B,MAAM,EAE7B;qCAVK,GAAG;IACf,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAClB,CAAC;qCAEmB,GAAG;IACtB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAClB,CAAC', + names: [], + sourceRoot: '', + sources: [ + 'Require_Errback_2.js', + ], + version: 3, + } + ## Transpile Require_Import.js > Snapshot 1 diff --git a/test/lib/linter/amdTranspiler/snapshots/transpiler.ts.snap b/test/lib/linter/amdTranspiler/snapshots/transpiler.ts.snap index ec070bbd1a27ed289547fd222a89bb567b5fdfc7..eb044778e33085dea67b846a5fd6b1761dd32b63 100644 GIT binary patch literal 13964 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 literal 13794 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