From 63d67e3e4b6841e66de9d3f248a62d7ae88d28e5 Mon Sep 17 00:00:00 2001 From: cihatfurkaneken Date: Thu, 4 Sep 2025 16:09:08 +0300 Subject: [PATCH] fix sdk-api-num2int sdk parameter check Issue: https://gitee.com/openharmony/arkcompiler_ets_frontend/issues/ICW8HA Signed-off-by: cihatfurkaneken --- .../src/checker/migration/NumericSemanticCheck.ts | 15 ++++++++++++++- .../linter/homecheck/src/utils/common/SDKUtils.ts | 5 +++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/ets2panda/linter/homecheck/src/checker/migration/NumericSemanticCheck.ts b/ets2panda/linter/homecheck/src/checker/migration/NumericSemanticCheck.ts index bff6fd3a64..49bac73b21 100644 --- a/ets2panda/linter/homecheck/src/checker/migration/NumericSemanticCheck.ts +++ b/ets2panda/linter/homecheck/src/checker/migration/NumericSemanticCheck.ts @@ -35,6 +35,7 @@ import { BooleanType, CallGraph, ClassSignature, + classSignatureCompare, ClassType, ClosureFieldRef, CONSTRUCTOR_NAME, @@ -919,7 +920,7 @@ export class NumericSemanticCheck implements BaseChecker { const ets2ParamType = ets2Params[i].getType(); const ets1ParamType = ets1Params[i].getType(); if ( - ets2ParamType === ets1ParamType || + this.compareTypes(ets1ParamType, ets2ParamType) || (ets1ParamType instanceof NumberType && (this.isIntType(ets2ParamType) || this.isLongType(ets2ParamType))) ) { continue; @@ -937,6 +938,18 @@ export class NumericSemanticCheck implements BaseChecker { return null; } + private compareTypes(param1: Type, param2: Type): boolean { + if (param1 instanceof ClassType && param2 instanceof ClassType) { + const classSign1 = param1.getClassSignature(); + const classSign2 = param2.getClassSignature(); + if(SdkUtils.isClassFromSdk(classSign1) && SdkUtils.isClassFromSdk(classSign2)) { + return classSign1.getClassName() === classSign2.getClassName() + } + return classSignatureCompare(classSign1, classSign2) + } + return param1 === param2 + } + private matchEts1NumberEts2IntLongMethodSig(ets2Sigs: MethodSignature[], ets1Sig: MethodSignature): MethodSignature | null { let intSDKMatched: MethodSignature | null = null; const ets1Params = ets1Sig.getMethodSubSignature().getParameters(); diff --git a/ets2panda/linter/homecheck/src/utils/common/SDKUtils.ts b/ets2panda/linter/homecheck/src/utils/common/SDKUtils.ts index f094b9e132..be2a5afa52 100644 --- a/ets2panda/linter/homecheck/src/utils/common/SDKUtils.ts +++ b/ets2panda/linter/homecheck/src/utils/common/SDKUtils.ts @@ -63,6 +63,11 @@ export class SdkUtils { return projectName === this.OhosSdkName || projectName === this.HmsSdkName; } + static isClassFromSdk(classSignature: ClassSignature): boolean { + const projectName = classSignature.getDeclaringFileSignature().getProjectName(); + return projectName === this.OhosSdkName || projectName === this.HmsSdkName; + } + static getSdkMatchedSignature(ets1SDK: ArkMethod, args: Value[]): MethodSignature | null { const declareSigs = ets1SDK.getDeclareSignatures(); if (declareSigs === null) { -- Gitee