From 749d9bfef39b643c36856f25a67f8d6be16b7182 Mon Sep 17 00:00:00 2001 From: lirismankarina Date: Mon, 16 Jun 2025 17:59:40 +0300 Subject: [PATCH] [es2panda] Change `as` expression to CTE Issue: [Bug]: Primitives 2.0 https://gitee.com/openharmony/arkcompiler_ets_frontend/issues/ICFLWW Description: Switching warning to CTE Reason: Need to update frontend from the view of spec Tests: Fixed according to the latest spec Signed-off-by: lirismankarina Signed-off-by: Akmaev Aleksey --- ets2panda/linter/src/cli/CommandLineParser.ts | 1 + ets2panda/scripts/arkui-setup.sh | 2 +- ets2panda/scripts/arkui.properties | 2 +- ets2panda/test/runtime/ets/ArrayLiteral.ets | 2 +- ets2panda/test/runtime/ets/CastPrimitive.ets | 2 +- ets2panda/test/runtime/ets/PrimitiveCasts.ets | 6 +++--- ets2panda/test/runtime/ets/first_match/primitive.ets | 2 +- .../runtime/ets/interfaceMethodWithDefaultParameter.ets | 4 ++-- ets2panda/test/runtime/ets/string-builder.ets | 2 +- ets2panda/test/runtime/ets/unboxing2.ets | 8 ++++---- ets2panda/test/runtime/ets/unboxing2_x64.ets | 8 ++++---- ets2panda/util/diagnostic/semantic.yaml | 6 +++++- ets2panda/util/diagnostic/warning.yaml | 4 ---- 13 files changed, 25 insertions(+), 24 deletions(-) diff --git a/ets2panda/linter/src/cli/CommandLineParser.ts b/ets2panda/linter/src/cli/CommandLineParser.ts index 04f6792b4d..f960444403 100644 --- a/ets2panda/linter/src/cli/CommandLineParser.ts +++ b/ets2panda/linter/src/cli/CommandLineParser.ts @@ -229,6 +229,7 @@ function getDefaultConfigurePath(): string { const defaultConfigPath = path.join(process.cwd(), 'rule-config.json'); try { fs.accessSync(defaultConfigPath, fs.constants.F_OK); + // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (error: any) { if (error.code === 'ENOENT') { Logger.error( diff --git a/ets2panda/scripts/arkui-setup.sh b/ets2panda/scripts/arkui-setup.sh index 1a2cd0ca9d..20fc7e9f4c 100755 --- a/ets2panda/scripts/arkui-setup.sh +++ b/ets2panda/scripts/arkui-setup.sh @@ -175,7 +175,7 @@ popd >/dev/null 2>&1 || exit 1 run_script "build:all --prefix ui2abc" # Compile arkui implementations -run_script "build:arkui-common:inc:ui2abc --prefix arkoala-arkts/arkui-common" +run_script "compile --prefix arkoala-arkts/arkui-common" run_script "build:m3:recheck --prefix arkoala-arkts/arkui" # rm -rf arkoala-arkts/arkui/build* diff --git a/ets2panda/scripts/arkui.properties b/ets2panda/scripts/arkui.properties index 78d3833717..de2aed8617 100644 --- a/ets2panda/scripts/arkui.properties +++ b/ets2panda/scripts/arkui.properties @@ -1,3 +1,3 @@ ARKUI_DEV_REPO=https://gitee.com/rri_opensource/koala_projects.git -ARKUI_DEV_BRANCH=panda_rev_9-fix-ani-signatures +ARKUI_DEV_BRANCH=panda_rev_9-primitives ARKUI_DEST=koala-sig diff --git a/ets2panda/test/runtime/ets/ArrayLiteral.ets b/ets2panda/test/runtime/ets/ArrayLiteral.ets index 2b76db3c77..0cf4a6817b 100644 --- a/ets2panda/test/runtime/ets/ArrayLiteral.ets +++ b/ets2panda/test/runtime/ets/ArrayLiteral.ets @@ -25,7 +25,7 @@ function main(): void { arktest.assertEQ(g[1], 20000) arktest.assertEQ(g[2], 2000000) arktest.assertEQ(g[3], 200000000000) - arktest.assertEQ(g[4], (2.2 as float)) + arktest.assertEQ(g[4], (2.2f)) arktest.assertEQ(g[5], 2.2222222222) const h: byte = 2; diff --git a/ets2panda/test/runtime/ets/CastPrimitive.ets b/ets2panda/test/runtime/ets/CastPrimitive.ets index c568b206e9..5783f9f269 100644 --- a/ets2panda/test/runtime/ets/CastPrimitive.ets +++ b/ets2panda/test/runtime/ets/CastPrimitive.ets @@ -59,7 +59,7 @@ function main(): void { arktest.assertEQ(Char.toFloat(f), 61441.0) arktest.assertEQ(Char.toLong(f), 61441) // 61441 == 0x000000000000F001 arktest.assertEQ(Char.toInt(f), 61441) // 61441 == 0x0000F001 - arktest.assertEQ(Char.toShort(f), 0xf001 as short) // -4095 == 0xF001 + arktest.assertEQ(Char.toShort(f), (0xf001).toShort()) // -4095 == 0xF001 arktest.assertEQ(Char.toShort(f), -4095) let g : byte = -128; diff --git a/ets2panda/test/runtime/ets/PrimitiveCasts.ets b/ets2panda/test/runtime/ets/PrimitiveCasts.ets index 6d7e7f1cf0..e150b210f5 100644 --- a/ets2panda/test/runtime/ets/PrimitiveCasts.ets +++ b/ets2panda/test/runtime/ets/PrimitiveCasts.ets @@ -65,13 +65,13 @@ function main() { arktest.assertEQ(f.toByte(), 2 as byte) arktest.assertEQ(f.toShort(), 2 as short) arktest.assertEQ(f.toInt(), 2 as int) - arktest.assertEQ(f.toLong(), 2.0 as long) - arktest.assertEQ(f.toDouble(),2.71f as double) + arktest.assertEQ(f.toLong(), (2.0).toLong()) + arktest.assertEQ(f.toDouble(), 2.71f as double) // double arktest.assertEQ(d.toByte(), 3 as byte) arktest.assertEQ(d.toShort(), 3 as short) arktest.assertEQ(d.toInt(), 3 as int) - arktest.assertEQ(d.toLong(), 3.0 as long) + arktest.assertEQ(d.toLong(), (3.0).toLong()) arktest.assertEQ(d.toFloat(), 3.14f) } diff --git a/ets2panda/test/runtime/ets/first_match/primitive.ets b/ets2panda/test/runtime/ets/first_match/primitive.ets index fdb2a3acc9..000c35eee3 100644 --- a/ets2panda/test/runtime/ets/first_match/primitive.ets +++ b/ets2panda/test/runtime/ets/first_match/primitive.ets @@ -35,7 +35,7 @@ function main() { arktest.assertEQ(a.foo(1 as int), "invoke2") arktest.assertEQ(a.foo(1 as number), "invoke4") arktest.assertEQ(a.foo(1.0), "invoke4") - arktest.assertEQ(a.foo(1.0 as float), "invoke3") + arktest.assertEQ(a.foo((1.0).toFloat()), "invoke3") arktest.assertEQ(a.foo('a'), "invoke6") arktest.assertEQ(a.foo("abcd"), "invoke6") diff --git a/ets2panda/test/runtime/ets/interfaceMethodWithDefaultParameter.ets b/ets2panda/test/runtime/ets/interfaceMethodWithDefaultParameter.ets index 95890963e9..7c74f5d8bf 100644 --- a/ets2panda/test/runtime/ets/interfaceMethodWithDefaultParameter.ets +++ b/ets2panda/test/runtime/ets/interfaceMethodWithDefaultParameter.ets @@ -32,7 +32,7 @@ class JohannSebastianBach implements Composer { "Passacaglia and Fugue in C minor" ] - let max: int = min(compositions.length, count) as int + let max: int = min(compositions.length, count).toInt() return [...compositions.slice(0, max)] } @@ -51,7 +51,7 @@ class JohannSebastianBach implements Composer { "Johann Christian Bach III" ] - let max: int = min(children.length, count) as int + let max: int = min(children.length, count).toInt() return excludeLast ? [...children.slice(0, max - 1)] : [...children.slice(0, max)] } } diff --git a/ets2panda/test/runtime/ets/string-builder.ets b/ets2panda/test/runtime/ets/string-builder.ets index 282abd34d5..5e4164d1b0 100644 --- a/ets2panda/test/runtime/ets/string-builder.ets +++ b/ets2panda/test/runtime/ets/string-builder.ets @@ -44,7 +44,7 @@ function main(): void { let const_str: String = 'str' + c'a'; arktest.assertEQ(const_str, "stra") - arktest.assertEQ(concatenate_float('x', 1.0 as float, "y"), "x1y") + arktest.assertEQ(concatenate_float('x', 1.0f, "y"), "x1y") concatenate_compile_time(); } diff --git a/ets2panda/test/runtime/ets/unboxing2.ets b/ets2panda/test/runtime/ets/unboxing2.ets index 805f98a2a1..29168b8398 100644 --- a/ets2panda/test/runtime/ets/unboxing2.ets +++ b/ets2panda/test/runtime/ets/unboxing2.ets @@ -17,7 +17,7 @@ let global_boolean_: boolean = new Boolean(true); let global_byte_: byte = new Byte(20 as byte); let global_char_: char = new Char(c'a'); let global_double_: double = new Double(2.2222222222); -let global_float_: float = new Float(2.22 as float); +let global_float_: float = new Float(2.22f); let global_int_: int = new Int(200000); let global_long_: long = new Long(2147483647); let global_short_: short = new Short(20 as short); @@ -27,7 +27,7 @@ class A { public byte_: byte = new Byte(20 as byte); public char_: char = new Char(c'a'); public double_: double = new Double(2.2222222222); - public float_: float = new Float(2.22 as float); + public float_: float = new Float(2.22f); public int_: int = new Int(200000); public long_: long = new Long(2147483647); public short_: short = new Short(20 as short); @@ -38,7 +38,7 @@ function main() { arktest.assertEQ(global_byte_, 20) arktest.assertEQ(global_char_, c'a') arktest.assertEQ(global_double_, 2.2222222222) - arktest.assertEQ(global_float_, 2.22 as float) + arktest.assertEQ(global_float_, 2.22f) arktest.assertEQ(global_int_, 200000) arktest.assertEQ(global_long_, 2147483647) arktest.assertEQ(global_short_, 20) @@ -48,7 +48,7 @@ function main() { arktest.assertEQ(a.byte_, 20) arktest.assertEQ(a.char_, c'a') arktest.assertEQ(a.double_, 2.2222222222) - arktest.assertEQ(a.float_, 2.22 as float) + arktest.assertEQ(a.float_, 2.22f) arktest.assertEQ(a.int_, 200000) arktest.assertEQ(a.long_, 2147483647) arktest.assertEQ(a.short_, 20) diff --git a/ets2panda/test/runtime/ets/unboxing2_x64.ets b/ets2panda/test/runtime/ets/unboxing2_x64.ets index ffffc5746d..1f74c83778 100644 --- a/ets2panda/test/runtime/ets/unboxing2_x64.ets +++ b/ets2panda/test/runtime/ets/unboxing2_x64.ets @@ -17,7 +17,7 @@ let global_boolean_: boolean = new Boolean(true); let global_byte_: byte = new Byte(20 as byte); let global_char_: char = new Char(c'a'); let global_double_: double = new Double(1.797+308); -let global_float_: float = new Float(2.22 as float); +let global_float_: float = new Float(2.22f); let global_int_: int = new Int(200000); let global_long_: long = new Long(200000000000); let global_short_: short = new Short(20 as short); @@ -27,7 +27,7 @@ class A { public byte_: byte = new Byte(20 as byte); public char_: char = new Char(c'a'); public double_: double = new Double(1.797+308); - public float_: float = new Float(2.22 as float); + public float_: float = new Float(2.22f); public int_: int = new Int(200000); public long_: long = new Long(200000000000); public short_: short = new Short(20 as short); @@ -38,7 +38,7 @@ function main() { arktest.assertEQ(global_byte_, 20) arktest.assertEQ(global_char_, c'a') arktest.assertEQ(global_double_, 1.797+308) - arktest.assertEQ(global_float_, 2.22 as float) + arktest.assertEQ(global_float_, 2.22f) arktest.assertEQ(global_int_, 200000) arktest.assertEQ(global_long_, 200000000000) arktest.assertEQ(global_short_, 20) @@ -48,7 +48,7 @@ function main() { arktest.assertEQ(a.byte_, 20) arktest.assertEQ(a.char_, c'a') arktest.assertEQ(a.double_, 1.797+308) - arktest.assertEQ(a.float_, 2.22 as float) + arktest.assertEQ(a.float_, 2.22f) arktest.assertEQ(a.int_, 200000) arktest.assertEQ(a.long_, 200000000000) arktest.assertEQ(a.short_, 20) diff --git a/ets2panda/util/diagnostic/semantic.yaml b/ets2panda/util/diagnostic/semantic.yaml index 4203f57c85..7feee94920 100644 --- a/ets2panda/util/diagnostic/semantic.yaml +++ b/ets2panda/util/diagnostic/semantic.yaml @@ -651,6 +651,10 @@ semantic: id: 357 message: "Can not rename annotation '{}' in export or import statements." +- name: IMPROPER_NUMERIC_CAST + id: 397 + message: "'As' expression for cast is deprecated for numeric types. Use explicit conversion function {}.to{}(...) instead." + - name: INDEX_NEGATIVE_OR_FRACTIONAL id: 248 message: "Index value cannot be less than zero or fractional." @@ -1594,4 +1598,4 @@ graveyard: - 233 - 234 - 271 -# See ets_frontend/ets2panda/util/diagnostic/README.md before contributing. +# See ets_frontend/ets2panda/util/diagnostic/README.md before contributing. \ No newline at end of file diff --git a/ets2panda/util/diagnostic/warning.yaml b/ets2panda/util/diagnostic/warning.yaml index 49f08b5c8e..773caeb37e 100644 --- a/ets2panda/util/diagnostic/warning.yaml +++ b/ets2panda/util/diagnostic/warning.yaml @@ -61,10 +61,6 @@ warning: id: 8 message: "Implicit Unboxing to {}{}." -- name: IMPROPER_NUMERIC_CAST - id: 29 - message: "'As' expression for cast is deprecated for numeric types. Use explicit conversion function {}.to{}(...) instead." - - name: INSTANCEOF_ERASED id: 15 message: "Type parameter is erased from type '{}' when used in instanceof expression." -- Gitee