From becb4fe7cc341d725a491bad8934c362fe2c803c Mon Sep 17 00:00:00 2001 From: Jozsef Koczo Date: Wed, 23 Apr 2025 11:00:51 +0200 Subject: [PATCH] Remove multiple catch Issue: https://gitee.com/openharmony/arkcompiler_ets_frontend/issues/IC6D1F Change-Id: I2d4158cb3a1c2724781bb1ed9cfdc27a37146226 Signed-off-by: Jozsef Koczo --- ets2panda/checker/ETSAnalyzer.cpp | 2 +- .../parser/ets/dynmicImportUnimplemented.ets | 2 +- .../test/ast/parser/ts/unexpected_token_1.ts | 2 +- .../test/ast/parser/ts/unexpected_token_2.ts | 2 +- .../ets/catch-soft-keyword-expected.txt | 49 +------- .../test/compiler/ets/catch-soft-keyword.ets | 2 +- .../compiler/ets/catchParamScope-expected.txt | 67 ++--------- .../test/compiler/ets/catchParamScope.ets | 4 +- .../ets/tryDefaultCatches-expected.txt | 108 ++---------------- .../test/compiler/ets/tryDefaultCatches.ets | 2 - ets2panda/test/runtime/ets/CastReference3.ets | 4 +- ets2panda/test/runtime/ets/CastReference4.ets | 4 +- ets2panda/test/runtime/ets/Enum4.ets | 10 +- ets2panda/test/runtime/ets/OptionalChains.ets | 2 +- ets2panda/test/runtime/ets/SmartCast_08.ets | 8 +- .../test/runtime/ets/UnboxingCheckcast.ets | 8 +- .../test/runtime/ets/array-new-catched.ets | 6 +- .../test/runtime/ets/division-by-zero.ets | 78 +++++++++---- .../test/runtime/ets/finallyClauseThrow.ets | 8 +- .../test/runtime/ets/generic_Error_class.ets | 4 - .../test/runtime/ets/generic_exception.ets | 4 - .../runtime/ets/member-expression-nullptr.ets | 8 +- .../runtime/ets/multi-array-new-catched-1.ets | 12 +- .../runtime/ets/multi-array-new-catched-2.ets | 6 +- ets2panda/test/runtime/ets/notNull.ets | 4 +- .../runtime/ets/nullishTypeCodesamples.ets | 4 +- .../ets/optional-chaining-function-call.ets | 2 +- .../runtime/ets/signature_match_lambda.ets | 5 +- ets2panda/test/runtime/ets/top_level_02.ets | 7 +- .../test/runtime/ets/try-catch-error.ets | 41 ++++--- ets2panda/test/runtime/ets/try-catch.ets | 48 ++++---- ets2panda/test/runtime/ets/union_type_RTE.ets | 6 +- ..._verifier_check_scope_declaration_test.cpp | 2 +- 33 files changed, 188 insertions(+), 333 deletions(-) diff --git a/ets2panda/checker/ETSAnalyzer.cpp b/ets2panda/checker/ETSAnalyzer.cpp index 716609bc6d..7d876cf09b 100644 --- a/ets2panda/checker/ETSAnalyzer.cpp +++ b/ets2panda/checker/ETSAnalyzer.cpp @@ -53,7 +53,7 @@ checker::Type *ETSAnalyzer::Check(ir::CatchClause *st) const checker::Type *catchParamAnnotationType = paramIdent->TypeAnnotation()->GetType(checker); exceptionType = checker->CheckExceptionOrErrorType(catchParamAnnotationType, st->Param()->Start()); } else { - exceptionType = checker->GlobalETSObjectType(); + exceptionType = checker->GlobalBuiltinErrorType(); } paramIdent->Variable()->SetTsType(exceptionType); } diff --git a/ets2panda/test/ast/parser/ets/dynmicImportUnimplemented.ets b/ets2panda/test/ast/parser/ets/dynmicImportUnimplemented.ets index 113b6cd670..a4ee09a249 100644 --- a/ets2panda/test/ast/parser/ets/dynmicImportUnimplemented.ets +++ b/ets2panda/test/ast/parser/ets/dynmicImportUnimplemented.ets @@ -17,7 +17,7 @@ function main() { try { await import("hello") .then((m: JSValue): null => null) - .catch((a: object | null | undefined): never => { + .catch((a): never => { throw a as Error }) } catch (e) { diff --git a/ets2panda/test/ast/parser/ts/unexpected_token_1.ts b/ets2panda/test/ast/parser/ts/unexpected_token_1.ts index 95d73ea9c1..2f1e7898c4 100644 --- a/ets2panda/test/ast/parser/ts/unexpected_token_1.ts +++ b/ets2panda/test/ast/parser/ts/unexpected_token_1.ts @@ -14,6 +14,6 @@ */ -try {} catch (e: Error /* @@ label */{} finally {} +try {} catch (e /* @@ label */{} finally {} /* @@@ label Error SyntaxError: Unexpected token '{', expected ')'. */ diff --git a/ets2panda/test/ast/parser/ts/unexpected_token_2.ts b/ets2panda/test/ast/parser/ts/unexpected_token_2.ts index 31b139aadf..a58981b7a5 100644 --- a/ets2panda/test/ast/parser/ts/unexpected_token_2.ts +++ b/ets2panda/test/ast/parser/ts/unexpected_token_2.ts @@ -14,6 +14,6 @@ */ -try {} catch (e: Error) {} finally /* @@ label */} +try {} catch (e) {} finally /* @@ label */} /* @@@ label Error SyntaxError: Expected '{', got '}'. */ diff --git a/ets2panda/test/compiler/ets/catch-soft-keyword-expected.txt b/ets2panda/test/compiler/ets/catch-soft-keyword-expected.txt index 689d8a583f..a547e43015 100644 --- a/ets2panda/test/compiler/ets/catch-soft-keyword-expected.txt +++ b/ets2panda/test/compiler/ets/catch-soft-keyword-expected.txt @@ -718,7 +718,7 @@ "loc": { "start": { "line": 26, - "column": 26, + "column": 19, "program": "catch-soft-keyword.ets" }, "end": { @@ -731,52 +731,6 @@ "param": { "type": "Identifier", "name": "catch", - "typeAnnotation": { - "type": "ETSTypeReference", - "part": { - "type": "ETSTypeReferencePart", - "name": { - "type": "Identifier", - "name": "Error", - "loc": { - "start": { - "line": 26, - "column": 19, - "program": "catch-soft-keyword.ets" - }, - "end": { - "line": 26, - "column": 24, - "program": "catch-soft-keyword.ets" - } - } - }, - "loc": { - "start": { - "line": 26, - "column": 19, - "program": "catch-soft-keyword.ets" - }, - "end": { - "line": 26, - "column": 24, - "program": "catch-soft-keyword.ets" - } - } - }, - "loc": { - "start": { - "line": 26, - "column": 19, - "program": "catch-soft-keyword.ets" - }, - "end": { - "line": 26, - "column": 24, - "program": "catch-soft-keyword.ets" - } - } - }, "loc": { "start": { "line": 26, @@ -913,4 +867,3 @@ } } } -Warning: The catch statement with type annotation is deprecated, use catch(e). [catch-soft-keyword.ets:26:19] diff --git a/ets2panda/test/compiler/ets/catch-soft-keyword.ets b/ets2panda/test/compiler/ets/catch-soft-keyword.ets index 343d46f563..989e9696a0 100644 --- a/ets2panda/test/compiler/ets/catch-soft-keyword.ets +++ b/ets2panda/test/compiler/ets/catch-soft-keyword.ets @@ -23,6 +23,6 @@ class cls { function foo(): void { let catch: int = 5; try { - } catch (catch: Error) { + } catch (catch) { } } diff --git a/ets2panda/test/compiler/ets/catchParamScope-expected.txt b/ets2panda/test/compiler/ets/catchParamScope-expected.txt index 5ef16e9c33..1f78142c57 100644 --- a/ets2panda/test/compiler/ets/catchParamScope-expected.txt +++ b/ets2panda/test/compiler/ets/catchParamScope-expected.txt @@ -81,7 +81,7 @@ "type": "ETSTypeReferencePart", "name": { "type": "Identifier", - "name": "Object", + "name": "Error", "loc": { "start": { "line": 16, @@ -90,7 +90,7 @@ }, "end": { "line": 16, - "column": 30, + "column": 29, "program": "catchParamScope.ets" } } @@ -103,7 +103,7 @@ }, "end": { "line": 16, - "column": 30, + "column": 29, "program": "catchParamScope.ets" } } @@ -116,7 +116,7 @@ }, "end": { "line": 16, - "column": 30, + "column": 29, "program": "catchParamScope.ets" } } @@ -129,7 +129,7 @@ }, "end": { "line": 16, - "column": 30, + "column": 29, "program": "catchParamScope.ets" } } @@ -142,7 +142,7 @@ }, "end": { "line": 16, - "column": 30, + "column": 29, "program": "catchParamScope.ets" } } @@ -153,12 +153,12 @@ "loc": { "start": { "line": 16, - "column": 33, + "column": 32, "program": "catchParamScope.ets" }, "end": { "line": 16, - "column": 37, + "column": 36, "program": "catchParamScope.ets" } } @@ -169,7 +169,7 @@ "loc": { "start": { "line": 16, - "column": 38, + "column": 37, "program": "catchParamScope.ets" }, "end": { @@ -456,7 +456,7 @@ "loc": { "start": { "line": 22, - "column": 32, + "column": 25, "program": "catchParamScope.ets" }, "end": { @@ -469,52 +469,6 @@ "param": { "type": "Identifier", "name": "error", - "typeAnnotation": { - "type": "ETSTypeReference", - "part": { - "type": "ETSTypeReferencePart", - "name": { - "type": "Identifier", - "name": "Error", - "loc": { - "start": { - "line": 22, - "column": 25, - "program": "catchParamScope.ets" - }, - "end": { - "line": 22, - "column": 30, - "program": "catchParamScope.ets" - } - } - }, - "loc": { - "start": { - "line": 22, - "column": 25, - "program": "catchParamScope.ets" - }, - "end": { - "line": 22, - "column": 30, - "program": "catchParamScope.ets" - } - } - }, - "loc": { - "start": { - "line": 22, - "column": 25, - "program": "catchParamScope.ets" - }, - "end": { - "line": 22, - "column": 30, - "program": "catchParamScope.ets" - } - } - }, "loc": { "start": { "line": 22, @@ -719,4 +673,3 @@ } } } -Warning: The catch statement with type annotation is deprecated, use catch(e). [catchParamScope.ets:22:25] diff --git a/ets2panda/test/compiler/ets/catchParamScope.ets b/ets2panda/test/compiler/ets/catchParamScope.ets index 0d7fee1ee8..2dbd3ee7ab 100644 --- a/ets2panda/test/compiler/ets/catchParamScope.ets +++ b/ets2panda/test/compiler/ets/catchParamScope.ets @@ -13,13 +13,13 @@ * limitations under the License. */ -function reject(error: Object): void { +function reject(error: Error): void { } function main(): void { let fn: () => void = (): void => { try { - } catch (error: Error) { + } catch (error) { reject(error); } } diff --git a/ets2panda/test/compiler/ets/tryDefaultCatches-expected.txt b/ets2panda/test/compiler/ets/tryDefaultCatches-expected.txt index 6ac688c6b1..37b6a6d011 100644 --- a/ets2panda/test/compiler/ets/tryDefaultCatches-expected.txt +++ b/ets2panda/test/compiler/ets/tryDefaultCatches-expected.txt @@ -193,7 +193,7 @@ "loc": { "start": { "line": 19, - "column": 22, + "column": 15, "program": "tryDefaultCatches.ets" }, "end": { @@ -206,52 +206,6 @@ "param": { "type": "Identifier", "name": "e", - "typeAnnotation": { - "type": "ETSTypeReference", - "part": { - "type": "ETSTypeReferencePart", - "name": { - "type": "Identifier", - "name": "Error", - "loc": { - "start": { - "line": 19, - "column": 15, - "program": "tryDefaultCatches.ets" - }, - "end": { - "line": 19, - "column": 20, - "program": "tryDefaultCatches.ets" - } - } - }, - "loc": { - "start": { - "line": 19, - "column": 15, - "program": "tryDefaultCatches.ets" - }, - "end": { - "line": 19, - "column": 20, - "program": "tryDefaultCatches.ets" - } - } - }, - "loc": { - "start": { - "line": 19, - "column": 15, - "program": "tryDefaultCatches.ets" - }, - "end": { - "line": 19, - "column": 20, - "program": "tryDefaultCatches.ets" - } - } - }, "loc": { "start": { "line": 19, @@ -277,53 +231,6 @@ "program": "tryDefaultCatches.ets" } } - }, - { - "type": "CatchClause", - "body": { - "type": "BlockStatement", - "statements": [], - "loc": { - "start": { - "line": 21, - "column": 15, - "program": "tryDefaultCatches.ets" - }, - "end": { - "line": 23, - "column": 4, - "program": "tryDefaultCatches.ets" - } - } - }, - "param": { - "type": "Identifier", - "name": "e", - "loc": { - "start": { - "line": 21, - "column": 12, - "program": "tryDefaultCatches.ets" - }, - "end": { - "line": 21, - "column": 13, - "program": "tryDefaultCatches.ets" - } - } - }, - "loc": { - "start": { - "line": 21, - "column": 5, - "program": "tryDefaultCatches.ets" - }, - "end": { - "line": 23, - "column": 4, - "program": "tryDefaultCatches.ets" - } - } } ], "finalizer": null, @@ -334,7 +241,7 @@ "program": "tryDefaultCatches.ets" }, "end": { - "line": 23, + "line": 21, "column": 4, "program": "tryDefaultCatches.ets" } @@ -348,7 +255,7 @@ "program": "tryDefaultCatches.ets" }, "end": { - "line": 24, + "line": 22, "column": 2, "program": "tryDefaultCatches.ets" } @@ -361,7 +268,7 @@ "program": "tryDefaultCatches.ets" }, "end": { - "line": 24, + "line": 22, "column": 2, "program": "tryDefaultCatches.ets" } @@ -374,7 +281,7 @@ "program": "tryDefaultCatches.ets" }, "end": { - "line": 24, + "line": 22, "column": 2, "program": "tryDefaultCatches.ets" } @@ -388,7 +295,7 @@ "program": "tryDefaultCatches.ets" }, "end": { - "line": 24, + "line": 22, "column": 2, "program": "tryDefaultCatches.ets" } @@ -429,10 +336,9 @@ "program": "tryDefaultCatches.ets" }, "end": { - "line": 25, + "line": 23, "column": 1, "program": "tryDefaultCatches.ets" } } } -Warning: The catch statement with type annotation is deprecated, use catch(e). [tryDefaultCatches.ets:19:15] diff --git a/ets2panda/test/compiler/ets/tryDefaultCatches.ets b/ets2panda/test/compiler/ets/tryDefaultCatches.ets index accfa16406..7aec62e693 100644 --- a/ets2panda/test/compiler/ets/tryDefaultCatches.ets +++ b/ets2panda/test/compiler/ets/tryDefaultCatches.ets @@ -16,8 +16,6 @@ function main(): void { try { throw new NullPointerError(); - } catch (e: Error) { - //Do something. } catch (e) { //Do something. } diff --git a/ets2panda/test/runtime/ets/CastReference3.ets b/ets2panda/test/runtime/ets/CastReference3.ets index e4c0300b0c..3f629b5bbd 100644 --- a/ets2panda/test/runtime/ets/CastReference3.ets +++ b/ets2panda/test/runtime/ets/CastReference3.ets @@ -45,10 +45,8 @@ function main() { try { let As: FixedArray = new A[1]; let Bs = As as FixedArray; - } catch (e: ClassCastError) { - caught = true; } catch (e) { - arktest.assertTrue(false) + caught = true; } arktest.assertTrue(caught) } diff --git a/ets2panda/test/runtime/ets/CastReference4.ets b/ets2panda/test/runtime/ets/CastReference4.ets index 1d6541d0c4..7ae84977f9 100644 --- a/ets2panda/test/runtime/ets/CastReference4.ets +++ b/ets2panda/test/runtime/ets/CastReference4.ets @@ -32,10 +32,8 @@ function main() { // Element type in array in accumulator is of incompatible type 'A'. // Instruction 'checkcast' will always throw an exception here. It may be a sign of possible error here. let Bs: FixedArray = Is as FixedArray; - } catch (e: ClassCastError) { - caught = true; } catch (e) { - arktest.assertTrue(false) + caught = true } arktest.assertTrue(caught) diff --git a/ets2panda/test/runtime/ets/Enum4.ets b/ets2panda/test/runtime/ets/Enum4.ets index bfac7dcebc..935d0aeb25 100644 --- a/ets2panda/test/runtime/ets/Enum4.ets +++ b/ets2panda/test/runtime/ets/Enum4.ets @@ -86,9 +86,11 @@ function main(): void { try { let yellow: Color = Color.getValueOf("Yellow"); arktest.assertTrue( false) - } catch (e: Error) { - arktest.assertTrue( (e as Object).toString().startsWith("Error: No enum constant Color.Yellow")) - } catch (e) {} + } catch (e) { + if (e instanceof Error) { + arktest.assertTrue( (e as Object).toString().startsWith("Error: No enum constant Color.Yellow")) + } + } ord = 0; let green: Color = ord as Color; @@ -98,7 +100,7 @@ function main(): void { try { let x = 5 as Color; arktest.assertTrue( false) - } catch (e: Error) { + } catch (e) { arktest.assertTrue( (e as Object).toString().startsWith("Error: No enum Color with value 5")) } diff --git a/ets2panda/test/runtime/ets/OptionalChains.ets b/ets2panda/test/runtime/ets/OptionalChains.ets index f424388915..213bbe0f12 100644 --- a/ets2panda/test/runtime/ets/OptionalChains.ets +++ b/ets2panda/test/runtime/ets/OptionalChains.ets @@ -19,7 +19,7 @@ function assert_o(v: Object | null | undefined) { arktest.assertTrue(v !== null function assert_npe(f: () => void) { try { f(); - } catch (e: NullPointerError) { + } catch (e) { return; } arktest.assertTrue(false, "npe was not thrown") diff --git a/ets2panda/test/runtime/ets/SmartCast_08.ets b/ets2panda/test/runtime/ets/SmartCast_08.ets index 0e14d65349..b545a44090 100644 --- a/ets2panda/test/runtime/ets/SmartCast_08.ets +++ b/ets2panda/test/runtime/ets/SmartCast_08.ets @@ -25,10 +25,12 @@ function foo(flag: boolean): int { if (flag) { throw new Error(); } - } catch(ex: NullPointerError) { - z = 2; } catch(ex) { - w = undefined; + if (ex instanceof NullPointerError) { + z = 2; + } else { + w = undefined; + } } return x + y! + z + w!; diff --git a/ets2panda/test/runtime/ets/UnboxingCheckcast.ets b/ets2panda/test/runtime/ets/UnboxingCheckcast.ets index d7ddb16a64..4d32e69b60 100644 --- a/ets2panda/test/runtime/ets/UnboxingCheckcast.ets +++ b/ets2panda/test/runtime/ets/UnboxingCheckcast.ets @@ -33,8 +33,10 @@ function main() { try{ c as double; - } catch (e: ClassCastError){ - } catch(other) { - arktest.assertEQ(1, 0) + } catch (e) { + if (e instanceof ClassCastError) { + } else { + arktest.assertEQ(1, 0) + } } } diff --git a/ets2panda/test/runtime/ets/array-new-catched.ets b/ets2panda/test/runtime/ets/array-new-catched.ets index 320374a011..b997912487 100644 --- a/ets2panda/test/runtime/ets/array-new-catched.ets +++ b/ets2panda/test/runtime/ets/array-new-catched.ets @@ -20,8 +20,10 @@ function baz(): number { let catched = false; try { let a:FixedArray = new int[baz()] - } catch (e: TypeError) { - catched = true + } catch (e) { + if (e instanceof TypeError) { + catched = true + } } arktest.assertTrue(catched) } diff --git a/ets2panda/test/runtime/ets/division-by-zero.ets b/ets2panda/test/runtime/ets/division-by-zero.ets index e38756ea60..884c4b8ce0 100644 --- a/ets2panda/test/runtime/ets/division-by-zero.ets +++ b/ets2panda/test/runtime/ets/division-by-zero.ets @@ -23,29 +23,43 @@ function main() : void { try { let result : int = INT_ONE / INT_ZERO; - } catch (error: ArithmeticError) { - caught_counter++; + } catch (error) { + if (error instanceof ArithmeticError) { + caught_counter++; + } } arktest.assertEQ(caught_counter, 1) try { let result : long = LONG_ONE / LONG_ZERO; - } catch (error: ArithmeticError) { - caught_counter++; + } catch (error) { + if (error instanceof ArithmeticError) { + caught_counter++; + } else { + console.log(error); + } } arktest.assertEQ(caught_counter, 2) try { let result : int = INT_ONE % INT_ZERO; - } catch (error: ArithmeticError) { - caught_counter++; + } catch (error) { + if (error instanceof ArithmeticError) { + caught_counter++; + } else { + console.log(error); + } } arktest.assertEQ(caught_counter, 3) try { let result : long = LONG_ONE % LONG_ZERO; - } catch (error: ArithmeticError) { - caught_counter++; + } catch (error) { + if (error instanceof ArithmeticError) { + caught_counter++; + } else { + console.log(error); + } } arktest.assertEQ(caught_counter, 4) @@ -54,37 +68,61 @@ function main() : void { try { let result : double = DOUBLE_ONE / DOUBLE_ZERO; - } catch (error: ArithmeticError) { - arktest.assertTrue(false) + } catch (error) { + if (error instanceof ArithmeticError) { + arktest.assertTrue(false) + } else { + console.log(error); + } } try { let result = INT_ONE / DOUBLE_ZERO; - } catch (error: ArithmeticError) { - arktest.assertTrue(false) + } catch (error) { + if (error instanceof ArithmeticError) { + arktest.assertTrue(false) + } else { + console.log(error); + } } try { let result = DOUBLE_ONE / INT_ZERO; - } catch (error: ArithmeticError) { - arktest.assertTrue(false) + } catch (error) { + if (error instanceof ArithmeticError) { + arktest.assertTrue(false) + } else { + console.log(error); + } } try { let result : double = DOUBLE_ONE % DOUBLE_ZERO; - } catch (error: ArithmeticError) { - arktest.assertTrue(false) + } catch (error) { + if (error instanceof ArithmeticError) { + arktest.assertTrue(false) + } else { + console.log(error); + } } try { let result = INT_ONE % DOUBLE_ZERO; - } catch (error: ArithmeticError) { - arktest.assertTrue(false) + } catch (error) { + if (error instanceof ArithmeticError) { + arktest.assertTrue(false) + } else { + console.log(error); + } } try { let result = DOUBLE_ONE % INT_ZERO; - } catch (error: ArithmeticError) { - arktest.assertTrue(false) + } catch (error) { + if (error instanceof ArithmeticError) { + arktest.assertTrue(false) + } else { + console.log(error); + } } } diff --git a/ets2panda/test/runtime/ets/finallyClauseThrow.ets b/ets2panda/test/runtime/ets/finallyClauseThrow.ets index 55baa5cdc2..1f988a0dd7 100644 --- a/ets2panda/test/runtime/ets/finallyClauseThrow.ets +++ b/ets2panda/test/runtime/ets/finallyClauseThrow.ets @@ -17,14 +17,16 @@ function main() : int { try { try { throw new Error(); - } catch (e:Error) { + } catch (e) { arktest.assertTrue(false) } finally { throw new Error(); } - } catch (e:Error) { } catch (e) { - arktest.assertTrue(false) + if (e instanceof Error ) { + }else{ + arktest.assertTrue(false) + } } return 0; } \ No newline at end of file diff --git a/ets2panda/test/runtime/ets/generic_Error_class.ets b/ets2panda/test/runtime/ets/generic_Error_class.ets index 50aa86c29d..40f23d4b04 100644 --- a/ets2panda/test/runtime/ets/generic_Error_class.ets +++ b/ets2panda/test/runtime/ets/generic_Error_class.ets @@ -18,10 +18,6 @@ class E extends Error {} function main(): int { try { throw new E(); - } catch (e: E) { - return 0; - } catch (e: E) { - return 0; } catch (e) { return 0; } diff --git a/ets2panda/test/runtime/ets/generic_exception.ets b/ets2panda/test/runtime/ets/generic_exception.ets index 7db4c0e4fb..fa7f5e78c7 100644 --- a/ets2panda/test/runtime/ets/generic_exception.ets +++ b/ets2panda/test/runtime/ets/generic_exception.ets @@ -18,10 +18,6 @@ class E extends Error {} function main(): int { try { throw new E(); - } catch (e: E) { - return 0; - } catch (e: E) { - return 0; } catch (e) { return 0; } diff --git a/ets2panda/test/runtime/ets/member-expression-nullptr.ets b/ets2panda/test/runtime/ets/member-expression-nullptr.ets index f0eeafcc76..18217414b9 100644 --- a/ets2panda/test/runtime/ets/member-expression-nullptr.ets +++ b/ets2panda/test/runtime/ets/member-expression-nullptr.ets @@ -44,8 +44,10 @@ function main(): void { try { let residence = (john as Person).residence; - } catch (e: ClassCastError) { + } catch (e) { + if (e instanceof ClassCastError) { test = true; + } } arktest.assertEQ(test, true) @@ -54,7 +56,7 @@ function main(): void { try { let numbers: int = john!.residence.numberOfRooms; - } catch (e: NullPointerError) { + } catch (e) { test = true; } arktest.assertEQ(test, true) @@ -63,7 +65,7 @@ function main(): void { arktest.assertEQ(test, false) try { let numbers: int = foo() + bar() + john!.residence.numberOfRooms; - } catch (e: NullPointerError) { + } catch (e) { test = true; } arktest.assertEQ(test, true) diff --git a/ets2panda/test/runtime/ets/multi-array-new-catched-1.ets b/ets2panda/test/runtime/ets/multi-array-new-catched-1.ets index 353980fef8..9bdd96e730 100644 --- a/ets2panda/test/runtime/ets/multi-array-new-catched-1.ets +++ b/ets2panda/test/runtime/ets/multi-array-new-catched-1.ets @@ -17,12 +17,12 @@ function main(): void { let A: Array = new Array(); let a: FixedArray>>; - let catched = false; - try { - a = new Number[A.length + 2.][4][A.length + 3.00001]; - } catch (e: TypeError) { - catched = true; - } + let catched = false; + try { + a = new Number[A.length + 2.][4][A.length + 3.00001]; + } catch (e) { + catched = true; + } arktest.assertTrue(catched) } diff --git a/ets2panda/test/runtime/ets/multi-array-new-catched-2.ets b/ets2panda/test/runtime/ets/multi-array-new-catched-2.ets index f518d1b800..ebf7f0d802 100644 --- a/ets2panda/test/runtime/ets/multi-array-new-catched-2.ets +++ b/ets2panda/test/runtime/ets/multi-array-new-catched-2.ets @@ -23,8 +23,10 @@ function main(): void { let catched = false; try { a = new Number[baz()][4][A.length + 3.0000]; - } catch (e: TypeError) { - catched = true; + } catch (e) { + if (e instanceof TypeError) { + catched = true; + } } arktest.assertTrue(catched) diff --git a/ets2panda/test/runtime/ets/notNull.ets b/ets2panda/test/runtime/ets/notNull.ets index cf3943bff0..f28e77b2c6 100644 --- a/ets2panda/test/runtime/ets/notNull.ets +++ b/ets2panda/test/runtime/ets/notNull.ets @@ -101,7 +101,7 @@ function testNPE() : void { try { (o as Object | null)!; arktest.assertTrue(false, "this must not be executed") - } catch (ex: NullPointerError) { + } catch (ex) { npe_caught = true; } @@ -110,7 +110,7 @@ function testNPE() : void { try { baz()!; arktest.assertTrue(false, "this must not be executed") - } catch (ex: NullPointerError) { + } catch (ex) { npe_caught = true; } diff --git a/ets2panda/test/runtime/ets/nullishTypeCodesamples.ets b/ets2panda/test/runtime/ets/nullishTypeCodesamples.ets index c1fe13d93e..0b2d399d64 100644 --- a/ets2panda/test/runtime/ets/nullishTypeCodesamples.ets +++ b/ets2panda/test/runtime/ets/nullishTypeCodesamples.ets @@ -116,12 +116,12 @@ function main() { try { new DTree().up(); arktest.assertTrue(false) - } catch (e: NullPointerError) { } + } catch (e) { } testb(); try { testf(123); arktest.assertTrue(false) - } catch (e: NullPointerError) { } + } catch (e) { } arktest.assertTrue((testcond() instanceof Int) && (testcond() == 1)) foo(123); diff --git a/ets2panda/test/runtime/ets/optional-chaining-function-call.ets b/ets2panda/test/runtime/ets/optional-chaining-function-call.ets index b4b6bac336..c716ddd261 100644 --- a/ets2panda/test/runtime/ets/optional-chaining-function-call.ets +++ b/ets2panda/test/runtime/ets/optional-chaining-function-call.ets @@ -34,7 +34,7 @@ function foo(a: funcType | null) { let test = false; try { fruit = a!(); - } catch (e: NullPointerError) { + } catch (e) { test = true; } diff --git a/ets2panda/test/runtime/ets/signature_match_lambda.ets b/ets2panda/test/runtime/ets/signature_match_lambda.ets index 5d7055c93c..23b0d38145 100644 --- a/ets2panda/test/runtime/ets/signature_match_lambda.ets +++ b/ets2panda/test/runtime/ets/signature_match_lambda.ets @@ -35,8 +35,5 @@ class A { function main(){ let a = new A() arktest.assertEQ(a.catch(()=>{}),"first catch is matched") - arktest.assertEQ(a.catch((e:Error|undefined|null)=>{}),"second catch is matched") - arktest.assertEQ(a.catch((e:Error)=>{}),"second catch is matched") - arktest.assertEQ(a.catch((e:Error,e2:Error)=>{}),"third catch is matched") - arktest.assertEQ(a.catch((e:Error,e2:Error,e3:Error)=>{}),"fourth catch is matched") + arktest.assertEQ(a.catch((e)=>{}),"second catch is matched") } diff --git a/ets2panda/test/runtime/ets/top_level_02.ets b/ets2panda/test/runtime/ets/top_level_02.ets index a76b771d15..60342dd876 100644 --- a/ets2panda/test/runtime/ets/top_level_02.ets +++ b/ets2panda/test/runtime/ets/top_level_02.ets @@ -38,10 +38,11 @@ try { q += 5; throw new TestError(); } -catch (e: TestError) { -} catch (e) { - arktest.assertTrue(false) + if (e instanceof TestError) { + } else { + arktest.assertTrue(false) + } } arktest.assertEQ(q, 8) diff --git a/ets2panda/test/runtime/ets/try-catch-error.ets b/ets2panda/test/runtime/ets/try-catch-error.ets index 5428c1e6c6..83c7cb8b28 100644 --- a/ets2panda/test/runtime/ets/try-catch-error.ets +++ b/ets2panda/test/runtime/ets/try-catch-error.ets @@ -20,40 +20,47 @@ let catchCode = 0; function main(): void { try { throw new DivideByZeroError(); - } catch (p: DivideByZeroError) { - catchCode = 1; - } catch (p: Error) { - arktest.assertTrue(false) + } catch (p) { + if (p instanceof DivideByZeroError) { + catchCode = 1; + } else if (p instanceof Error) { + arktest.assertTrue(false) + } } - arktest.assertEQ(catchCode, 1) try { throw new DivideByZeroError(); - } catch (p: Error) { - catchCode = 2; - } catch (p: DivideByZeroError) { - arktest.assertTrue(false) + } catch (p) { + if (p instanceof Error) { + catchCode = 2; + } else if (p instanceof DivideByZeroError) { + arktest.assertTrue(false) + } } arktest.assertEQ(catchCode, 2) try { throw new TestError(); - } catch (p: TestError) { - catchCode = 3; - } catch (p: Error) { - arktest.assertTrue(false) + } catch (p) { + if (p instanceof TestError) { + catchCode = 3; + } else if (p instanceof Error) { + arktest.assertTrue(false) + } } arktest.assertEQ(catchCode, 3) try { throw new TestError(); - } catch (p: Error) { - catchCode = 4; - } catch (p: TestError) { - arktest.assertTrue(false) + } catch (p) { + if (p instanceof Error) { + catchCode = 4; + } else if (p instanceof TestError) { + arktest.assertTrue(false) + } } arktest.assertEQ(catchCode, 4) diff --git a/ets2panda/test/runtime/ets/try-catch.ets b/ets2panda/test/runtime/ets/try-catch.ets index cfe155b47f..f0777cd969 100644 --- a/ets2panda/test/runtime/ets/try-catch.ets +++ b/ets2panda/test/runtime/ets/try-catch.ets @@ -20,49 +20,47 @@ let catchCode = 0; function main(): void { try { throw new NullPointerError(); - } catch (e: NullPointerError) { - catchCode = 1; - } catch (e: Error) { - arktest.assertTrue(false) } catch (e) { - arktest.assertTrue(false) + if (e instanceof NullPointerError) { + catchCode = 1; + } else { + arktest.assertTrue(false) + } } - arktest.assertEQ(catchCode, 1) try { throw new NullPointerError(); - } catch (e: Error) { - catchCode = 2; - } catch (e: NullPointerError) { - arktest.assertTrue(false) } catch (e) { - arktest.assertTrue(false) + if (e instanceof Error) { + catchCode = 2; + } else if (e instanceof NullPointerError) { + arktest.assertTrue(false) + } else { + arktest.assertTrue(false) + } } - arktest.assertEQ(catchCode, 2) try { throw new TestError(); - } catch(e: TestError) { - catchCode = 3; - } catch (e: Error) { - arktest.assertTrue(false) - } catch (e) { - arktest.assertTrue(false) + } catch(e) { + if (e instanceof TestError) { + catchCode = 3; + } else { + arktest.assertTrue(false) + } } - arktest.assertEQ(catchCode, 3) try { throw new TestError(); - } catch (e: Error) { - catchCode = 4; - } catch (e: TestError) { - arktest.assertTrue(false) } catch (e) { - arktest.assertTrue(false) + if (e instanceof Error) { + catchCode = 4; + } else { + arktest.assertTrue(false) + } } - arktest.assertEQ(catchCode, 4) } diff --git a/ets2panda/test/runtime/ets/union_type_RTE.ets b/ets2panda/test/runtime/ets/union_type_RTE.ets index 0c73ea88d3..5412b37bfc 100644 --- a/ets2panda/test/runtime/ets/union_type_RTE.ets +++ b/ets2panda/test/runtime/ets/union_type_RTE.ets @@ -29,8 +29,10 @@ function main() { try { foo(new A(11) as Object) - } catch (error: ClassCastError) { - caught_counter++ + } catch (error) { + if (error instanceof ClassCastError) { + caught_counter++ + } } arktest.assertEQ(caught_counter, 1) diff --git a/ets2panda/test/unit/public/ast_verifier_check_scope_declaration_test.cpp b/ets2panda/test/unit/public/ast_verifier_check_scope_declaration_test.cpp index c5d4a0d67c..3805861dfe 100644 --- a/ets2panda/test/unit/public/ast_verifier_check_scope_declaration_test.cpp +++ b/ets2panda/test/unit/public/ast_verifier_check_scope_declaration_test.cpp @@ -90,7 +90,7 @@ TEST_F(ASTVerifierTest, TryCatch) try { throw new NullPointerError(); - } catch (e: NullPointerError) { + } catch (e) { catchCode = 1; } } -- Gitee