From 6aace80ef70530ce935b18c19dc8308465215c39 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 --- ets2panda/test/ast/compiler/ets/type_error_test.ets | 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 | 4 ++++ ets2panda/util/diagnostic/warning.yaml | 4 ---- 11 files changed, 22 insertions(+), 22 deletions(-) diff --git a/ets2panda/test/ast/compiler/ets/type_error_test.ets b/ets2panda/test/ast/compiler/ets/type_error_test.ets index cbb33753e83..e45b3d21ae2 100644 --- a/ets2panda/test/ast/compiler/ets/type_error_test.ets +++ b/ets2panda/test/ast/compiler/ets/type_error_test.ets @@ -21,4 +21,4 @@ export class SHA1Hash{ } const swap32:(num:int)=>int = ((c:int):int =>c) -/* @@? 19:16 Warning Warning: 'As' expression for cast is deprecated for numeric types. Use explicit conversion function Double.toInt(...) instead. */ +/* @@? 19:16 Error TypeError: 'As' expression for cast is deprecated for numeric types. Use explicit conversion function Double.toInt(...) instead. */ diff --git a/ets2panda/test/runtime/ets/ArrayLiteral.ets b/ets2panda/test/runtime/ets/ArrayLiteral.ets index 2b76db3c773..0cf4a6817b4 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 c568b206e9c..5783f9f269a 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 6d7e7f1cf01..e150b210f5e 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 fdb2a3acc9f..000c35eee35 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 95890963e99..7c74f5d8bfb 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 282abd34d5c..5e4164d1b02 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 805f98a2a18..29168b83983 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 ffffc5746d5..1f74c83778d 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 b3fb4b9e6cf..bd0b7de717c 100644 --- a/ets2panda/util/diagnostic/semantic.yaml +++ b/ets2panda/util/diagnostic/semantic.yaml @@ -573,6 +573,10 @@ semantic: id: 357 message: "Can not rename annotation '{}' in export or import statements." +- name: IMPROPER_NUMERIC_CAST + id: 405 + 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." diff --git a/ets2panda/util/diagnostic/warning.yaml b/ets2panda/util/diagnostic/warning.yaml index 5d2579c0255..557b0545956 100644 --- a/ets2panda/util/diagnostic/warning.yaml +++ b/ets2panda/util/diagnostic/warning.yaml @@ -65,10 +65,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