From e22008c47b38d1ac0f6635a3077897265039e72c Mon Sep 17 00:00:00 2001 From: ZhongNing Date: Tue, 24 Jun 2025 14:12:45 +0800 Subject: [PATCH] Fix for ArrayTypeImmutable Issue:https://gitee.com/openharmony/arkcompiler_ets_frontend/issues/ICHENX Test scenarios: fix bug Signed-off-by: ZhongNing --- ets2panda/linter/src/lib/TypeScriptLinter.ts | 13 ++++---- .../test/main/arkts-array-type-immutable.ets | 6 ++-- ...arkts-array-type-immutable.ets.arkts2.json | 30 +++++++++++++++++++ 3 files changed, 39 insertions(+), 10 deletions(-) diff --git a/ets2panda/linter/src/lib/TypeScriptLinter.ts b/ets2panda/linter/src/lib/TypeScriptLinter.ts index 1ba26f68a6..ec2f4c2862 100644 --- a/ets2panda/linter/src/lib/TypeScriptLinter.ts +++ b/ets2panda/linter/src/lib/TypeScriptLinter.ts @@ -6649,13 +6649,12 @@ export class TypeScriptLinter extends BaseTypeScriptLinter { if (!this.options.arkts2) { return; } - if ( - !( - this.tsUtils.isOrDerivedFrom(lhsType, this.tsUtils.isArray) && - this.tsUtils.isOrDerivedFrom(rhsType, this.tsUtils.isArray) && - lhsType !== rhsType - ) - ) { + const isArray = + this.tsUtils.isOrDerivedFrom(lhsType, this.tsUtils.isArray) && + this.tsUtils.isOrDerivedFrom(rhsType, this.tsUtils.isArray); + const isTuple = + this.tsUtils.isOrDerivedFrom(lhsType, TsUtils.isTuple) && this.tsUtils.isOrDerivedFrom(rhsType, TsUtils.isTuple); + if (!((isArray || isTuple) && lhsType !== rhsType)) { return; } diff --git a/ets2panda/linter/test/main/arkts-array-type-immutable.ets b/ets2panda/linter/test/main/arkts-array-type-immutable.ets index c0d79ba065..8f805d8229 100644 --- a/ets2panda/linter/test/main/arkts-array-type-immutable.ets +++ b/ets2panda/linter/test/main/arkts-array-type-immutable.ets @@ -37,7 +37,7 @@ function test(a: number[]): void { } let arrayTypeImmutableA2: [number] = [1]; -let arrayTypeImmutableB2: [number | string] = arrayTypeImmutableA2; +let arrayTypeImmutableB2: [number | string] = arrayTypeImmutableA2; // error class ArrayTypeImmutableA{ arrayTypeImmutableA: number[] = [1]; @@ -45,8 +45,8 @@ class ArrayTypeImmutableA{ arrayTypeImmutableB1: (number | string)[] = this.arrayTypeImmutableA; // error arrayTypeImmutableA2: [number] = [1]; - arrayTypeImmutableB2: [number | string] = arrayTypeImmutableA2; - arrayTypeImmutableB21: [number | string] = this.arrayTypeImmutableA2; + arrayTypeImmutableB2: [number | string] = arrayTypeImmutableA2; // error + arrayTypeImmutableB21: [number | string] = this.arrayTypeImmutableA2; // error } interface IA { diff --git a/ets2panda/linter/test/main/arkts-array-type-immutable.ets.arkts2.json b/ets2panda/linter/test/main/arkts-array-type-immutable.ets.arkts2.json index fa6b50ae6c..e2441885c3 100644 --- a/ets2panda/linter/test/main/arkts-array-type-immutable.ets.arkts2.json +++ b/ets2panda/linter/test/main/arkts-array-type-immutable.ets.arkts2.json @@ -134,6 +134,16 @@ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)", "severity": "ERROR" }, + { + "line": 40, + "column": 5, + "endLine": 40, + "endColumn": 67, + "problem": "ArrayTypeImmutable", + "suggest": "", + "rule": "Array type is immutable in ArkTS1.2 (arkts-array-type-immutable)", + "severity": "ERROR" + }, { "line": 43, "column": 36, @@ -174,6 +184,26 @@ "rule": "Numeric semantics is different for integer values (arkts-numeric-semantic)", "severity": "ERROR" }, + { + "line": 48, + "column": 3, + "endLine": 48, + "endColumn": 66, + "problem": "ArrayTypeImmutable", + "suggest": "", + "rule": "Array type is immutable in ArkTS1.2 (arkts-array-type-immutable)", + "severity": "ERROR" + }, + { + "line": 49, + "column": 3, + "endLine": 49, + "endColumn": 72, + "problem": "ArrayTypeImmutable", + "suggest": "", + "rule": "Array type is immutable in ArkTS1.2 (arkts-array-type-immutable)", + "severity": "ERROR" + }, { "line": 67, "column": 6, -- Gitee