From d1e8a2a2b6ec1d50f553fdd7cde33acc72e6f960 Mon Sep 17 00:00:00 2001 From: c30058867 Date: Sat, 23 Aug 2025 15:29:06 +0800 Subject: [PATCH] Fix the issue of missing file name checks Issue:https://gitee.com/openharmony/arkcompiler_ets_frontend/issues/ICUDJF Signed-off-by: caiy --- ets2panda/linter/src/lib/TypeScriptLinter.ts | 21 +++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/ets2panda/linter/src/lib/TypeScriptLinter.ts b/ets2panda/linter/src/lib/TypeScriptLinter.ts index 6481f26d69..993628fa42 100644 --- a/ets2panda/linter/src/lib/TypeScriptLinter.ts +++ b/ets2panda/linter/src/lib/TypeScriptLinter.ts @@ -9960,25 +9960,33 @@ export class TypeScriptLinter extends BaseTypeScriptLinter { if (!setApiListItem) { return; } + if (TypeScriptLinter.isInterfaceImplementation(errorNode)) { return; } + + if (ts.isTypeReferenceNode(errorNode)) { + errorNode = errorNode.typeName; + } + + const symbol = this.tsUtils.trueSymbolAtLocation(errorNode); + const oriDecl = TsUtils.getDeclaration(symbol); + const fileName = path.normalize(oriDecl?.getSourceFile().fileName || ''); const apiNamesArr = [...setApiListItem]; const hasSameApiName = apiNamesArr.some((apilistItem) => { - return apilistItem.api_info.api_name === errorNode.getText(); + return apilistItem.api_info.api_name === errorNode.getText() && + fileName.endsWith(path.normalize(apilistItem.file_path)); }); if (!hasSameApiName) { return; } - if (ts.isTypeReferenceNode(errorNode)) { - errorNode = errorNode.typeName; - } + const matchedApi = apiNamesArr.some((sdkInfo) => { const isSameName = sdkInfo.api_info.api_name === apiName; const isGlobal = sdkInfo.is_global; return isSameName && isGlobal; }); - const checkSymbol = this.isIdentifierFromSDK(errorNode); + const checkSymbol = this.isIdentifierFromSDK(symbol); const type = this.tsTypeChecker.getTypeAtLocation(errorNode); const typeName = this.tsTypeChecker.typeToString(type); @@ -10006,8 +10014,7 @@ export class TypeScriptLinter extends BaseTypeScriptLinter { return false; } - private isIdentifierFromSDK(node: ts.Node): boolean { - const symbol = this.tsTypeChecker.getSymbolAtLocation(node); + private isIdentifierFromSDK(symbol: ts.Symbol | undefined): boolean { if (!symbol) { return true; } -- Gitee