diff --git a/ets2panda/linter/src/lib/TypeScriptLinter.ts b/ets2panda/linter/src/lib/TypeScriptLinter.ts index 6481f26d69bf9ae5ef142b242927ca85537415aa..993628fa424c636f5a23651388382aaba734effb 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; }