From 2542d527ca6ea837bd4104d3e39df5cbecd6f6bd Mon Sep 17 00:00:00 2001 From: Matthias Osswald Date: Mon, 25 Nov 2024 11:38:12 +0100 Subject: [PATCH] fix: Support getView().byId / fix fallback signature --- .../generator/ControllerByIdDtsGenerator.ts | 52 +++--- src/linter/xmlTemplate/linter.ts | 4 +- .../webapp/controller/Main.controller.js | 18 +- test/lib/linter/snapshots/linter.ts.md | 155 +++++++++++++--- test/lib/linter/snapshots/linter.ts.snap | Bin 20446 -> 21050 bytes .../generator/ControllerByIdDtsGenerator.ts | 8 +- .../ControllerByIdDtsGenerator.ts.md | 30 +++- .../ControllerByIdDtsGenerator.ts.snap | Bin 388 -> 451 bytes test/lib/snapshots/index.ts.md | 170 ++++++++++++++++-- test/lib/snapshots/index.ts.snap | Bin 13111 -> 13586 bytes 10 files changed, 353 insertions(+), 84 deletions(-) diff --git a/src/linter/xmlTemplate/generator/ControllerByIdDtsGenerator.ts b/src/linter/xmlTemplate/generator/ControllerByIdDtsGenerator.ts index 143a4022e..551cecbcf 100644 --- a/src/linter/xmlTemplate/generator/ControllerByIdDtsGenerator.ts +++ b/src/linter/xmlTemplate/generator/ControllerByIdDtsGenerator.ts @@ -4,14 +4,14 @@ export class ControllerByIdDtsGenerator { // Maps module names to local names private imports = new Map(); - constructor(private controllerByIdInfo: ControllerByIdInfo) { - } - - generate() { - const mappings = this.controllerByIdInfo.getMappings(); + generate(controllerByIdInfo: ControllerByIdInfo) { + const mappings = controllerByIdInfo.getMappings(); if (mappings.size === 0) { return null; } + this.imports = new Map(); + this.addImport("sap/ui/core/mvc/View"); // View is needed for interface ControllerView + this.addImport("sap/ui/core/Element"); // Element is needed for byId fallback signature let out = ""; mappings.forEach((idToModules, controllerName) => { out += this.generateModuleDeclaration(controllerName, idToModules); @@ -19,7 +19,7 @@ export class ControllerByIdDtsGenerator { return this.generateCollectedImports() + out; } - generateCollectedImports() { + private generateCollectedImports() { let out = ""; this.imports.forEach((localName, moduleName) => { out += `import ${localName} from "${moduleName}";\n`; @@ -28,38 +28,48 @@ export class ControllerByIdDtsGenerator { return out; } - generateByIdMapping(idToModules: IdModulesMap) { + private generateByIdMapping(idToModules: IdModulesMap) { let out = "\tinterface ByIdMapping {\n"; idToModules.forEach((modules, id) => { const localNames: string[] = []; - modules.forEach((moduleName) => { - const localName = this.getLocalModuleName(moduleName); - localNames.push(localName); - if (!this.imports.has(moduleName)) { - this.imports.set(moduleName, localName); - } - }); + modules.forEach((moduleName) => localNames.push(this.addImport(moduleName))); out += `\t\t"${id}": ${localNames.join(" | ")};\n`; }); out += "\t}\n"; return out; } - generateModuleDeclaration(controllerName: string, idToModules: IdModulesMap) { + private generateModuleDeclaration(controllerName: string, idToModules: IdModulesMap) { const moduleName = controllerName.replace(/\./g, "/") + ".controller"; - // The interface name actually does not really matter as the declaration refers to the default export - const controllerClassName = controllerName.split(".").pop(); + let out = `declare module "${moduleName}" {\n`; out += this.generateByIdMapping(idToModules); - out += `\texport default interface ${controllerClassName} {\n`; - out += `\t\tbyId(sId: T): ByIdMapping[T];\n`; - out += `\t\tbyId(sId: string): UI5Element;\n`; + out += `\ttype ByIdFunction = {\n`; + out += `\t\t(sId: T): ByIdMapping[T];\n`; + out += `\t\t(sId: string): sap_ui_core_Element;\n`; // Fallback signature for unknown IDs + out += `\t};\n`; + out += `\tinterface ControllerView extends sap_ui_core_mvc_View {\n`; + out += `\t\tbyId: ByIdFunction;\n`; + out += `\t};\n`; + // The interface name does not matter as the declaration refers to the default export. + // To avoid name clashes we are just using "Controller" here. + out += `\texport default interface Controller {\n`; + out += `\t\tbyId: ByIdFunction;\n`; + out += `\t\tgetView(): ControllerView;\n`; out += `\t};\n`; out += `};\n\n`; return out; } - getLocalModuleName(moduleName: string) { + private addImport(moduleName: string) { + const localName = this.getLocalModuleName(moduleName); + if (!this.imports.has(moduleName)) { + this.imports.set(moduleName, localName); + } + return localName; + } + + private getLocalModuleName(moduleName: string) { return moduleName.replace(/[/.]/g, "_"); } } diff --git a/src/linter/xmlTemplate/linter.ts b/src/linter/xmlTemplate/linter.ts index 350b2254e..251bb6395 100644 --- a/src/linter/xmlTemplate/linter.ts +++ b/src/linter/xmlTemplate/linter.ts @@ -37,8 +37,8 @@ export default async function lintXml({filePathsWorkspace, workspace, context}: })); // Generate dts file with specific byId signatures for controllers based on view IDs - const controllerByIdDtsGenerator = new ControllerByIdDtsGenerator(controllerByIdInfo); - const controllerByIdDts = controllerByIdDtsGenerator.generate(); + const controllerByIdDtsGenerator = new ControllerByIdDtsGenerator(); + const controllerByIdDts = controllerByIdDtsGenerator.generate(controllerByIdInfo); if (controllerByIdDts) { const dtsResource = createResource({ path: "/types/@ui5/linter/virtual/ControllerById.d.ts", diff --git a/test/fixtures/linter/projects/com.ui5.troublesome.app/webapp/controller/Main.controller.js b/test/fixtures/linter/projects/com.ui5.troublesome.app/webapp/controller/Main.controller.js index 5dbb0849e..846c542be 100644 --- a/test/fixtures/linter/projects/com.ui5.troublesome.app/webapp/controller/Main.controller.js +++ b/test/fixtures/linter/projects/com.ui5.troublesome.app/webapp/controller/Main.controller.js @@ -7,23 +7,29 @@ sap.ui.define(["./BaseController", "sap/m/MessageBox"], function (BaseController }, registerButtonEventHandlers() { + // this.byId and this.getView().byId should report the same issues this.byId("helloButton").attachTap(function() { console.log("Tapped"); }); + this.getView().byId("helloButton").attachTap(function() { + console.log("Tapped"); + }); // testButton exists in two views and could be a sap.m.Button or a sap.ui.commons.Button. - // For this reason, the detection of deprecated button API does not work - // but for base control API it should still work. + // The detection of deprecated button API depends requires TypeScript compliant probing (e.g. using "attachTap" in testButton). + // In any case, the detection of UI5 Base Control API should still work as both inherit from it. const testButton = this.byId("testButton"); - testButton.getBlocked(); // This should be reported - - // This is currently not reported as TypeScript does not know the exact type of testButton - if (testButton.attachTap) { + if ("attachTap" in testButton) { + // When probing for the existence of the method, the type can be determined and the issue should be reported testButton.attachTap(function() { console.log("Tapped"); }); } + + // UI5 Element API should still be checked for unknown IDs + this.byId("unknown").prop("foo", "bar"); + this.getView().byId("unknown").prop("foo", "bar"); } }); }); diff --git a/test/lib/linter/snapshots/linter.ts.md b/test/lib/linter/snapshots/linter.ts.md index a8bed9ec5..0c04ca774 100644 --- a/test/lib/linter/snapshots/linter.ts.md +++ b/test/lib/linter/snapshots/linter.ts.md @@ -414,23 +414,22 @@ Generated by [AVA](https://avajs.dev). warningCount: 0, }, { - coverageInfo: [ - { - category: 1, - column: 5, - line: 23, - message: `Unable to analyze this method call because the type of identifier "attachTap" in "testButton.attachTap(function () {␊ - console.log("Tapped");␊ - })"" could not be determined`, - }, - ], - errorCount: 2, + coverageInfo: [], + errorCount: 6, fatalErrorCount: 0, filePath: 'webapp/controller/Main.controller.js', messages: [ { column: 29, - line: 10, + line: 11, + message: 'Call to deprecated function \'attachTap\' of class \'Button\'', + messageDetails: 'Deprecated test message', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 39, + line: 14, message: 'Call to deprecated function \'attachTap\' of class \'Button\'', messageDetails: 'Deprecated test message', ruleId: 'no-deprecated-api', @@ -438,12 +437,36 @@ Generated by [AVA](https://avajs.dev). }, { column: 15, - line: 19, + line: 22, message: 'Call to deprecated function \'getBlocked\' (testButton.getBlocked)', messageDetails: 'Deprecated test message', ruleId: 'no-deprecated-api', severity: 2, }, + { + column: 16, + line: 25, + message: 'Call to deprecated function \'attachTap\' of class \'Button\'', + messageDetails: 'Deprecated test message', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 25, + line: 31, + message: 'Call to deprecated function \'prop\' of class \'UI5Element\'', + messageDetails: 'Deprecated test message', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 35, + line: 32, + message: 'Call to deprecated function \'prop\' of class \'UI5Element\'', + messageDetails: 'Deprecated test message', + ruleId: 'no-deprecated-api', + severity: 2, + }, ], warningCount: 0, }, @@ -1124,24 +1147,52 @@ Generated by [AVA](https://avajs.dev). }, { coverageInfo: [], - errorCount: 2, + errorCount: 6, fatalErrorCount: 0, filePath: 'webapp/controller/Main.controller.js', messages: [ { column: 29, - line: 10, + line: 11, + message: 'Call to deprecated function \'attachTap\' of class \'Button\'', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 39, + line: 14, message: 'Call to deprecated function \'attachTap\' of class \'Button\'', ruleId: 'no-deprecated-api', severity: 2, }, { column: 15, - line: 19, + line: 22, message: 'Call to deprecated function \'getBlocked\' (testButton.getBlocked)', ruleId: 'no-deprecated-api', severity: 2, }, + { + column: 16, + line: 25, + message: 'Call to deprecated function \'attachTap\' of class \'Button\'', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 25, + line: 31, + message: 'Call to deprecated function \'prop\' of class \'UI5Element\'', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 35, + line: 32, + message: 'Call to deprecated function \'prop\' of class \'UI5Element\'', + ruleId: 'no-deprecated-api', + severity: 2, + }, ], warningCount: 0, }, @@ -1537,6 +1588,29 @@ Generated by [AVA](https://avajs.dev). ], warningCount: 0, }, + { + coverageInfo: [], + errorCount: 2, + fatalErrorCount: 0, + filePath: 'webapp/controller/Main.controller.js', + messages: [ + { + column: 25, + line: 31, + message: 'Call to deprecated function \'prop\' of class \'UI5Element\'', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 35, + line: 32, + message: 'Call to deprecated function \'prop\' of class \'UI5Element\'', + ruleId: 'no-deprecated-api', + severity: 2, + }, + ], + warningCount: 0, + }, ] ## lint: All files of library.with.custom.paths @@ -2548,23 +2622,22 @@ Generated by [AVA](https://avajs.dev). warningCount: 0, }, { - coverageInfo: [ - { - category: 1, - column: 5, - line: 23, - message: `Unable to analyze this method call because the type of identifier "attachTap" in "testButton.attachTap(function () {␊ - console.log("Tapped");␊ - })"" could not be determined`, - }, - ], - errorCount: 2, + coverageInfo: [], + errorCount: 6, fatalErrorCount: 0, filePath: 'webapp/controller/Main.controller.js', messages: [ { column: 29, - line: 10, + line: 11, + message: 'Call to deprecated function \'attachTap\' of class \'Button\'', + messageDetails: 'Deprecated test message', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 39, + line: 14, message: 'Call to deprecated function \'attachTap\' of class \'Button\'', messageDetails: 'Deprecated test message', ruleId: 'no-deprecated-api', @@ -2572,12 +2645,36 @@ Generated by [AVA](https://avajs.dev). }, { column: 15, - line: 19, + line: 22, message: 'Call to deprecated function \'getBlocked\' (testButton.getBlocked)', messageDetails: 'Deprecated test message', ruleId: 'no-deprecated-api', severity: 2, }, + { + column: 16, + line: 25, + message: 'Call to deprecated function \'attachTap\' of class \'Button\'', + messageDetails: 'Deprecated test message', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 25, + line: 31, + message: 'Call to deprecated function \'prop\' of class \'UI5Element\'', + messageDetails: 'Deprecated test message', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 35, + line: 32, + message: 'Call to deprecated function \'prop\' of class \'UI5Element\'', + messageDetails: 'Deprecated test message', + ruleId: 'no-deprecated-api', + severity: 2, + }, ], warningCount: 0, }, diff --git a/test/lib/linter/snapshots/linter.ts.snap b/test/lib/linter/snapshots/linter.ts.snap index ffffec994a97bbb3e7fd3f3de9eaf09769970079..17bb86a562eba943b820849aca213fd31f7cd4bd 100644 GIT binary patch literal 21050 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 diff --git a/test/lib/linter/xmlTemplate/generator/ControllerByIdDtsGenerator.ts b/test/lib/linter/xmlTemplate/generator/ControllerByIdDtsGenerator.ts index 38a299e43..667cc704c 100644 --- a/test/lib/linter/xmlTemplate/generator/ControllerByIdDtsGenerator.ts +++ b/test/lib/linter/xmlTemplate/generator/ControllerByIdDtsGenerator.ts @@ -18,14 +18,14 @@ test("ControllerByIdDtsGenerator: generate", (t) => { ["button", "sap/ui/commons/Button"], ])); - const generator = new ControllerByIdDtsGenerator(controllerByIdInfo); - const result = generator.generate(); + const generator = new ControllerByIdDtsGenerator(); + const result = generator.generate(controllerByIdInfo); t.snapshot(result); }); test("ControllerByIdDtsGenerator: generate with empty info should return null", (t) => { const controllerByIdInfo = new ControllerByIdInfo(); - const generator = new ControllerByIdDtsGenerator(controllerByIdInfo); - const result = generator.generate(); + const generator = new ControllerByIdDtsGenerator(); + const result = generator.generate(controllerByIdInfo); t.is(result, null); }); diff --git a/test/lib/linter/xmlTemplate/generator/snapshots/ControllerByIdDtsGenerator.ts.md b/test/lib/linter/xmlTemplate/generator/snapshots/ControllerByIdDtsGenerator.ts.md index 18461b321..490bc9d61 100644 --- a/test/lib/linter/xmlTemplate/generator/snapshots/ControllerByIdDtsGenerator.ts.md +++ b/test/lib/linter/xmlTemplate/generator/snapshots/ControllerByIdDtsGenerator.ts.md @@ -8,7 +8,9 @@ Generated by [AVA](https://avajs.dev). > Snapshot 1 - `import sap_m_Button from "sap/m/Button";␊ + `import sap_ui_core_mvc_View from "sap/ui/core/mvc/View";␊ + import sap_ui_core_Element from "sap/ui/core/Element";␊ + import sap_m_Button from "sap/m/Button";␊ import sap_ui_commons_Button from "sap/ui/commons/Button";␊ import sap_m_Input from "sap/m/Input";␊ ␊ @@ -17,9 +19,16 @@ Generated by [AVA](https://avajs.dev). "button": sap_m_Button | sap_ui_commons_Button;␊ "input": sap_m_Input;␊ }␊ - export default interface App {␊ - byId(sId: T): ByIdMapping[T];␊ - byId(sId: string): UI5Element;␊ + type ByIdFunction = {␊ + (sId: T): ByIdMapping[T];␊ + (sId: string): sap_ui_core_Element;␊ + };␊ + interface ControllerView extends sap_ui_core_mvc_View {␊ + byId: ByIdFunction;␊ + };␊ + export default interface Controller {␊ + byId: ByIdFunction;␊ + getView(): ControllerView;␊ };␊ };␊ ␊ @@ -28,9 +37,16 @@ Generated by [AVA](https://avajs.dev). "button": sap_m_Button;␊ "input": sap_m_Input;␊ }␊ - export default interface Main {␊ - byId(sId: T): ByIdMapping[T];␊ - byId(sId: string): UI5Element;␊ + type ByIdFunction = {␊ + (sId: T): ByIdMapping[T];␊ + (sId: string): sap_ui_core_Element;␊ + };␊ + interface ControllerView extends sap_ui_core_mvc_View {␊ + byId: ByIdFunction;␊ + };␊ + export default interface Controller {␊ + byId: ByIdFunction;␊ + getView(): ControllerView;␊ };␊ };␊ ␊ diff --git a/test/lib/linter/xmlTemplate/generator/snapshots/ControllerByIdDtsGenerator.ts.snap b/test/lib/linter/xmlTemplate/generator/snapshots/ControllerByIdDtsGenerator.ts.snap index 354cf96ad124efe2a5758f5ce921f13449446cab..a55c8748fce67be5e1b12c0479b702993bc73b02 100644 GIT binary patch literal 451 zcmV;!0X+UeRzVut-Sb~T4V(y6we$#`uB8W)XZYFUt`@!y{ zHfRsM`zQ35$|h=4jUedJJ!R+R&3m(Np0i1z*qvRx0CFr~wsWi`8dVfvj;c|5g7zFF z7>de7ByT=}TS>LORcIH_X-bh^^`AC+TRnHyHhbIa^F9|^86=kKq~r-x1`;u4$t8z- zk{KmPV5tsE9y%x#Qx-ZXi2V-YX#oNxcJSViRhmeSN<<}F|BJ9Gb@UfPN&A&iE7Vvg zRU{*+OI(qtD?#l0DX@YXAVQ^O0VH5bgrcHahwS5V!$Ylim)C$i_#T%CCZi09d-@Bi zHJ7;qykOFJh*k%D>>eX_3|_m5+HPatoBJMCx)C@lB}1+x*{?PB#sp>vGPUFmDwVZO z91QFzjmUTywX4_T8zd^UP z<_k1v7d=Wnhd1z2lBC!ayATCuHS^v)-p{(2N|Vq1>J3n!gvIH#(ddkn;6_!-Z_wX? z2FK92n9kZO2(Ov-&j$T!%{fE%(Em8>9rx;UaMU~LzxRc*#v%30W-1$%h(^=G8AU_S zY^0(V3KP=#Sc)t+N*V3HD@qYaCLI{UkG6z%{UP_>0Zd9ZyW^I&z zm5qkho^PKaeIbF+2(Dl`(0Yn7vsUO?O$6bz%@FSveBECosTHD06L-@lBv_IF7EKEd z1uG@et?AI(#%x-p{BlBJfuOmkbEr(wO>}kUQy$aFAnu}%lc!`OZh4PR=-D8q_vyv0 i1O>VYkdWn1CmJ)M|GLpHx2UcEZH!Na;A6xU0{{RgO|>@w diff --git a/test/lib/snapshots/index.ts.md b/test/lib/snapshots/index.ts.md index 2f18ac899..3812cd7af 100644 --- a/test/lib/snapshots/index.ts.md +++ b/test/lib/snapshots/index.ts.md @@ -57,24 +57,52 @@ Generated by [AVA](https://avajs.dev). }, { coverageInfo: [], - errorCount: 2, + errorCount: 6, fatalErrorCount: 0, filePath: 'webapp/controller/Main.controller.js', messages: [ { column: 29, - line: 10, + line: 11, + message: 'Call to deprecated function \'attachTap\' of class \'Button\'', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 39, + line: 14, message: 'Call to deprecated function \'attachTap\' of class \'Button\'', ruleId: 'no-deprecated-api', severity: 2, }, { column: 15, - line: 19, + line: 22, message: 'Call to deprecated function \'getBlocked\' (testButton.getBlocked)', ruleId: 'no-deprecated-api', severity: 2, }, + { + column: 16, + line: 25, + message: 'Call to deprecated function \'attachTap\' of class \'Button\'', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 25, + line: 31, + message: 'Call to deprecated function \'prop\' of class \'UI5Element\'', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 35, + line: 32, + message: 'Call to deprecated function \'prop\' of class \'UI5Element\'', + ruleId: 'no-deprecated-api', + severity: 2, + }, ], warningCount: 0, }, @@ -426,24 +454,52 @@ Generated by [AVA](https://avajs.dev). }, { coverageInfo: [], - errorCount: 2, + errorCount: 6, fatalErrorCount: 0, filePath: 'webapp/controller/Main.controller.js', messages: [ { column: 29, - line: 10, + line: 11, + message: 'Call to deprecated function \'attachTap\' of class \'Button\'', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 39, + line: 14, message: 'Call to deprecated function \'attachTap\' of class \'Button\'', ruleId: 'no-deprecated-api', severity: 2, }, { column: 15, - line: 19, + line: 22, message: 'Call to deprecated function \'getBlocked\' (testButton.getBlocked)', ruleId: 'no-deprecated-api', severity: 2, }, + { + column: 16, + line: 25, + message: 'Call to deprecated function \'attachTap\' of class \'Button\'', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 25, + line: 31, + message: 'Call to deprecated function \'prop\' of class \'UI5Element\'', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 35, + line: 32, + message: 'Call to deprecated function \'prop\' of class \'UI5Element\'', + ruleId: 'no-deprecated-api', + severity: 2, + }, ], warningCount: 0, }, @@ -1399,24 +1455,52 @@ Generated by [AVA](https://avajs.dev). }, { coverageInfo: [], - errorCount: 2, + errorCount: 6, fatalErrorCount: 0, filePath: 'webapp/controller/Main.controller.js', messages: [ { column: 29, - line: 10, + line: 11, + message: 'Call to deprecated function \'attachTap\' of class \'Button\'', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 39, + line: 14, message: 'Call to deprecated function \'attachTap\' of class \'Button\'', ruleId: 'no-deprecated-api', severity: 2, }, { column: 15, - line: 19, + line: 22, message: 'Call to deprecated function \'getBlocked\' (testButton.getBlocked)', ruleId: 'no-deprecated-api', severity: 2, }, + { + column: 16, + line: 25, + message: 'Call to deprecated function \'attachTap\' of class \'Button\'', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 25, + line: 31, + message: 'Call to deprecated function \'prop\' of class \'UI5Element\'', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 35, + line: 32, + message: 'Call to deprecated function \'prop\' of class \'UI5Element\'', + ruleId: 'no-deprecated-api', + severity: 2, + }, ], warningCount: 0, }, @@ -1768,24 +1852,52 @@ Generated by [AVA](https://avajs.dev). }, { coverageInfo: [], - errorCount: 2, + errorCount: 6, fatalErrorCount: 0, filePath: 'webapp/controller/Main.controller.js', messages: [ { column: 29, - line: 10, + line: 11, + message: 'Call to deprecated function \'attachTap\' of class \'Button\'', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 39, + line: 14, message: 'Call to deprecated function \'attachTap\' of class \'Button\'', ruleId: 'no-deprecated-api', severity: 2, }, { column: 15, - line: 19, + line: 22, message: 'Call to deprecated function \'getBlocked\' (testButton.getBlocked)', ruleId: 'no-deprecated-api', severity: 2, }, + { + column: 16, + line: 25, + message: 'Call to deprecated function \'attachTap\' of class \'Button\'', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 25, + line: 31, + message: 'Call to deprecated function \'prop\' of class \'UI5Element\'', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 35, + line: 32, + message: 'Call to deprecated function \'prop\' of class \'UI5Element\'', + ruleId: 'no-deprecated-api', + severity: 2, + }, ], warningCount: 0, }, @@ -2137,24 +2249,52 @@ Generated by [AVA](https://avajs.dev). }, { coverageInfo: [], - errorCount: 2, + errorCount: 6, fatalErrorCount: 0, filePath: 'webapp/controller/Main.controller.js', messages: [ { column: 29, - line: 10, + line: 11, + message: 'Call to deprecated function \'attachTap\' of class \'Button\'', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 39, + line: 14, message: 'Call to deprecated function \'attachTap\' of class \'Button\'', ruleId: 'no-deprecated-api', severity: 2, }, { column: 15, - line: 19, + line: 22, message: 'Call to deprecated function \'getBlocked\' (testButton.getBlocked)', ruleId: 'no-deprecated-api', severity: 2, }, + { + column: 16, + line: 25, + message: 'Call to deprecated function \'attachTap\' of class \'Button\'', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 25, + line: 31, + message: 'Call to deprecated function \'prop\' of class \'UI5Element\'', + ruleId: 'no-deprecated-api', + severity: 2, + }, + { + column: 35, + line: 32, + message: 'Call to deprecated function \'prop\' of class \'UI5Element\'', + ruleId: 'no-deprecated-api', + severity: 2, + }, ], warningCount: 0, }, diff --git a/test/lib/snapshots/index.ts.snap b/test/lib/snapshots/index.ts.snap index 8fa330b48c0934d9f6ac9eefc3f6f7c4ba956026..69dbdff3668376029ddc15e6c2c87adf06f28b9a 100644 GIT binary patch literal 13586 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 F{{lBP-Yx(D