From 9cfe3c52bee170aa80b2db1d16f063407391269b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=9F=E6=9F=A0?= Date: Mon, 7 Jul 2025 17:09:34 +0800 Subject: [PATCH] fix issue for sdk-limited-void-type MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Issue: https://gitee.com/openharmony/arkcompiler_ets_frontend/issues/ICKE62 Test scenarios: sdk-limited-void-type Signed-off-by: 钟柠 --- ets2panda/linter/src/lib/TypeScriptLinter.ts | 17 ++++++++ .../test/sdkwhite/limit_void_type_sdk2.ets | 12 +++++- .../limit_void_type_sdk2.ets.arkts2.json | 40 +++++++++++++++++++ 3 files changed, 68 insertions(+), 1 deletion(-) diff --git a/ets2panda/linter/src/lib/TypeScriptLinter.ts b/ets2panda/linter/src/lib/TypeScriptLinter.ts index ca04dbcfcd..d0f83da321 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 4592f1a479..5eca858a48 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 646d8423c0..e4787f158f 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, -- Gitee