diff --git a/ets2panda/linter/src/lib/TypeScriptLinter.ts b/ets2panda/linter/src/lib/TypeScriptLinter.ts index ca04dbcfcd70cd084c01b8f28c23f983dd279534..d0f83da3214fdc2e6584ee52046346c0c894070c 100644 --- a/ets2panda/linter/src/lib/TypeScriptLinter.ts +++ b/ets2panda/linter/src/lib/TypeScriptLinter.ts @@ -8020,6 +8020,9 @@ export class TypeScriptLinter extends BaseTypeScriptLinter { if (!setApiListItem) { return; } + if (TypeScriptLinter.isInterfaceImplementation(errorNode)) { + return; + } const apiNamesArr = [...setApiListItem]; const hasSameApiName = apiNamesArr.some((apilistItem) => { return apilistItem.api_info.api_name === errorNode.getText(); @@ -8049,6 +8052,20 @@ export class TypeScriptLinter extends BaseTypeScriptLinter { } } + static isInterfaceImplementation(node: ts.Node): boolean { + const classDeclaration = ts.findAncestor(node, ts.isClassDeclaration); + if (!classDeclaration) { + return false; + } + + if (classDeclaration.heritageClauses) { + return classDeclaration.heritageClauses.some((clause) => { + return clause.token === ts.SyntaxKind.ImplementsKeyword; + }); + } + return false; + } + private isIdentifierFromSDK(node: ts.Node): boolean { const symbol = this.tsTypeChecker.getSymbolAtLocation(node); if (!symbol) { diff --git a/ets2panda/linter/test/sdkwhite/limit_void_type_sdk2.ets b/ets2panda/linter/test/sdkwhite/limit_void_type_sdk2.ets index 4592f1a4799a13d1597042fb3e9c3ffc11598285..5eca858a48d2a573d043d956bd8db13ab393195e 100644 --- a/ets2panda/linter/test/sdkwhite/limit_void_type_sdk2.ets +++ b/ets2panda/linter/test/sdkwhite/limit_void_type_sdk2.ets @@ -58,4 +58,14 @@ function prefetchTest2(){ } export const res = new MyDataSource().cancel(222); //report error -export const res2 = ds.cancel(222); //report error \ No newline at end of file +export const res2 = ds.cancel(222); //report error + +interface BackPressInterceptor { + onBackPress: ()=> boolean | void; +} + +class A implements BackPressInterceptor{ + onBackPress() : boolean | void { + return false; + } +} \ No newline at end of file diff --git a/ets2panda/linter/test/sdkwhite/limit_void_type_sdk2.ets.arkts2.json b/ets2panda/linter/test/sdkwhite/limit_void_type_sdk2.ets.arkts2.json index 646d8423c0f782dd969a4170717343aacbd163fb..e4787f158f57e04b590b3adfb5289108146dd689 100644 --- a/ets2panda/linter/test/sdkwhite/limit_void_type_sdk2.ets.arkts2.json +++ b/ets2panda/linter/test/sdkwhite/limit_void_type_sdk2.ets.arkts2.json @@ -204,6 +204,46 @@ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)", "severity": "ERROR" }, + { + "line": 68, + "column": 3, + "endLine": 70, + "endColumn": 4, + "problem": "MethodOverridingField", + "suggest": "", + "rule": "Method can't override filed in interface implemented (arkts-no-method-overriding-field)", + "severity": "ERROR" + }, + { + "line": 64, + "column": 31, + "endLine": 64, + "endColumn": 35, + "problem": "LimitedVoidType", + "suggest": "", + "rule": "Type \"void\" has no instances.(arkts-limited-void-type)", + "severity": "ERROR" + }, + { + "line": 68, + "column": 19, + "endLine": 68, + "endColumn": 33, + "problem": "LimitedVoidType", + "suggest": "", + "rule": "Type \"void\" has no instances.(arkts-limited-void-type)", + "severity": "ERROR" + }, + { + "line": 68, + "column": 29, + "endLine": 68, + "endColumn": 33, + "problem": "LimitedVoidType", + "suggest": "", + "rule": "Type \"void\" has no instances.(arkts-limited-void-type)", + "severity": "ERROR" + }, { "line": 44, "column": 41,