• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (c) 2025 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16import {
17    global,
18    passNode,
19    passNodeArray,
20    unpackNonNullableNode,
21    unpackNode,
22    unpackNodeArray,
23    assertValidPeer,
24    AstNode,
25    KNativePointer,
26    nodeByType,
27    ArktsObject,
28    unpackString,
29    Es2pandaAstNodeType
30} from "../../reexport-for-generated";
31
32import { BlockStatement } from "./BlockStatement";
33import { CatchClause } from "./CatchClause";
34import { LabelPair } from "./LabelPair";
35import { Statement } from "./Statement";
36export class TryStatement extends Statement {
37    constructor(pointer: KNativePointer) {
38        assertValidPeer(pointer, Es2pandaAstNodeType.AST_NODE_TYPE_TRY_STATEMENT)
39        super(pointer)
40    }
41    static createTryStatement(block: BlockStatement | undefined, catchClauses: readonly CatchClause[], finalizer: BlockStatement | undefined, finalizerInsertionsLabelPair: readonly LabelPair[], finalizerInsertionsStatement: readonly Statement[]): TryStatement {
42        return new TryStatement(global.generatedEs2panda._CreateTryStatement(global.context, passNode(block), passNodeArray(catchClauses), catchClauses.length, passNode(finalizer), passNodeArray(finalizerInsertionsLabelPair), finalizerInsertionsLabelPair.length, passNodeArray(finalizerInsertionsStatement), finalizerInsertionsStatement.length))
43    }
44    static updateTryStatement(original: TryStatement | undefined, block: BlockStatement | undefined, catchClauses: readonly CatchClause[], finalizer: BlockStatement | undefined, finalizerInsertionsLabelPair: readonly LabelPair[], finalizerInsertionsStatement: readonly Statement[]): TryStatement {
45        return new TryStatement(global.generatedEs2panda._UpdateTryStatement(global.context, passNode(original), passNode(block), passNodeArray(catchClauses), catchClauses.length, passNode(finalizer), passNodeArray(finalizerInsertionsLabelPair), finalizerInsertionsLabelPair.length, passNodeArray(finalizerInsertionsStatement), finalizerInsertionsStatement.length))
46    }
47    static update1TryStatement(original?: TryStatement, other?: TryStatement): TryStatement {
48        return new TryStatement(global.generatedEs2panda._UpdateTryStatement1(global.context, passNode(original), passNode(other)))
49    }
50    get finallyBlock(): BlockStatement | undefined {
51        return unpackNode(global.generatedEs2panda._TryStatementFinallyBlockConst(global.context, this.peer))
52    }
53    get block(): BlockStatement | undefined {
54        return unpackNode(global.generatedEs2panda._TryStatementBlockConst(global.context, this.peer))
55    }
56    get hasFinalizer(): boolean {
57        return global.generatedEs2panda._TryStatementHasFinalizerConst(global.context, this.peer)
58    }
59    get hasDefaultCatchClause(): boolean {
60        return global.generatedEs2panda._TryStatementHasDefaultCatchClauseConst(global.context, this.peer);
61    }
62    get catchClauses(): readonly CatchClause[] {
63        return unpackNodeArray(global.generatedEs2panda._TryStatementCatchClausesConst(global.context, this.peer))
64    }
65    get finallyCanCompleteNormally(): boolean {
66        return global.generatedEs2panda._TryStatementFinallyCanCompleteNormallyConst(global.context, this.peer)
67    }
68    /** @deprecated */
69    setFinallyCanCompleteNormally(finallyCanCompleteNormally: boolean): this {
70        global.generatedEs2panda._TryStatementSetFinallyCanCompleteNormally(global.context, this.peer, finallyCanCompleteNormally)
71        return this
72    }
73}
74export function isTryStatement(node: object | undefined): node is TryStatement {
75    return node instanceof TryStatement
76}
77if (!nodeByType.has(Es2pandaAstNodeType.AST_NODE_TYPE_TRY_STATEMENT)) {
78    nodeByType.set(Es2pandaAstNodeType.AST_NODE_TYPE_TRY_STATEMENT, TryStatement)
79}