diff --git a/ets2panda/linter/homecheck/src/checker/migration/NumericSemanticCheck.ts b/ets2panda/linter/homecheck/src/checker/migration/NumericSemanticCheck.ts index bff6fd3a640d69939d4166180405b7fb83861d12..49bac73b21443b091eae80c29d3b05f9379b177e 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 f094b9e1327426275a874aba963e1eae4002b8ca..be2a5afa52f924824cec1ea2b63135a35912ddf6 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) {