Lines Matching +full:parserprogram +full:-
2 * Copyright (c) 2021-2025 Huawei Device Co., Ltd.
7 * http://www.apache.org/licenses/LICENSE-2.0
36 auto *const allocator = ctx->allocator; in LowerOptionalExpr()
37 auto *const parser = ctx->parser->AsETSParser(); in LowerOptionalExpr()
38 auto *const varbinder = ctx->parserProgram->VarBinder(); in LowerOptionalExpr()
43 auto *tmpIdentClone = tmpIdent->Clone(allocator, nullptr); in LowerOptionalExpr()
46 auto *sequenceExpr = parser->CreateFormattedExpression( in LowerOptionalExpr()
50 sequenceExpr->SetParent(chain->Parent()); in LowerOptionalExpr()
51 InitScopesPhaseETS::RunExternalNode(sequenceExpr, ctx->parserProgram->VarBinder()); in LowerOptionalExpr()
53 auto const &stmts = sequenceExpr->AsBlockExpression()->Statements(); in LowerOptionalExpr()
54 stmts[0]->AsVariableDeclaration()->Declarators()[0]->SetInit(getSource(expr)); in LowerOptionalExpr()
55 …stmts[1]->AsExpressionStatement()->GetExpression()->AsConditionalExpression()->SetAlternate(chain-… in LowerOptionalExpr()
57 …setSource(expr, parser->CreateFormattedExpression("@@I1", tmpIdentClone->Clone(allocator, nullptr)… in LowerOptionalExpr()
64 ES2PANDA_ASSERT(expr->IsOptional()); in LowerExpression()
65 expr->ClearOptional(); in LowerExpression()
66 return LowerOptionalExpr<ir::MemberExpression>([](auto *e) { return e->Object(); }, in LowerExpression()
67 … [](auto *e, auto *obj) { e->SetObject(obj); }, ctx, expr, chain); in LowerExpression()
73 ES2PANDA_ASSERT(expr->IsOptional()); in LowerExpression()
74 expr->ClearOptional(); in LowerExpression()
75 return LowerOptionalExpr<ir::CallExpression>([](auto *e) { return e->Callee(); }, in LowerExpression()
76 … [](auto *e, auto *callee) { e->SetCallee(callee); }, ctx, expr, chain); in LowerExpression()
81 if (expr->IsMemberExpression()) { in FindOptionalInChain()
82 auto typed = expr->AsMemberExpression(); in FindOptionalInChain()
83 return typed->IsOptional() ? typed : FindOptionalInChain(typed->Object()); in FindOptionalInChain()
85 if (expr->IsCallExpression()) { in FindOptionalInChain()
86 auto typed = expr->AsCallExpression(); in FindOptionalInChain()
87 return typed->IsOptional() ? typed : FindOptionalInChain(typed->Callee()); in FindOptionalInChain()
89 if (expr->IsTSNonNullExpression()) { in FindOptionalInChain()
90 return FindOptionalInChain(expr->AsTSNonNullExpression()->Expr()); in FindOptionalInChain()
97 auto optional = FindOptionalInChain(chain->GetExpression()); in LowerChain()
98 if (optional->IsMemberExpression()) { in LowerChain()
99 return LowerExpression(ctx, optional->AsMemberExpression(), chain); in LowerChain()
101 if (optional->IsCallExpression()) { in LowerChain()
102 return LowerExpression(ctx, optional->AsCallExpression(), chain); in LowerChain()
109 program->Ast()->TransformChildrenRecursively( in PerformForModule()
110 // CC-OFFNXT(G.FMT.14-CPP) project code style in PerformForModule()
111 [ctx](ir::AstNode *const node) -> ir::AstNode * { in PerformForModule()
112 if (node->IsChainExpression()) { in PerformForModule()
113 return RefineSourceRanges(LowerChain(ctx, node->AsChainExpression())); in PerformForModule()
124 return !program->Ast()->IsAnyChild([](const ir::AstNode *node) { in PostconditionForModule()
125 …return node->IsChainExpression() || (node->IsMemberExpression() && node->AsMemberExpression()->IsO… in PostconditionForModule()
126 (node->IsCallExpression() && node->AsCallExpression()->IsOptional()); in PostconditionForModule()