• Home
  • Raw
  • Download

Lines Matching +full:parser +full:-

2  * Copyright (c) 2021-2025 Huawei Device Co., Ltd.
7 * http://www.apache.org/licenses/LICENSE-2.0
28 #include "parser/ETSparser.h"
32 ir::Expression *ObjectIndexLowering::ProcessIndexSetAccess(parser::ETSParser *parser, checker::ETSC… in ProcessIndexSetAccess() argument
35 …// Note! We assume that parser and checker phase nave been already passed correctly, thus the cla… in ProcessIndexSetAccess()
38 auto indexSymbol = Gensym(checker->Allocator()); in ProcessIndexSetAccess()
39 assignmentExpression->Right()->SetBoxingUnboxingFlags(ir::BoxingUnboxingFlags::NONE); in ProcessIndexSetAccess()
40 auto *const memberExpression = assignmentExpression->Left()->AsMemberExpression(); in ProcessIndexSetAccess()
44 …if (assignmentExpression->Parent()->IsExpression() || assignmentExpression->Parent()->IsVariableDe… in ProcessIndexSetAccess()
45 ArenaVector<ir::Statement *> blockStatements(checker->Allocator()->Adapter()); in ProcessIndexSetAccess()
46 auto objectSymbol = Gensym(checker->Allocator()); in ProcessIndexSetAccess()
48parser->CreateFormattedStatement("let @@I1 = @@E2", objectSymbol, memberExpression->Object())); in ProcessIndexSetAccess()
50parser->CreateFormattedStatement("let @@I1 = @@E2", indexSymbol, memberExpression->Property())); in ProcessIndexSetAccess()
54 auto *const setStmt = parser->CreateFormattedStatement( in ProcessIndexSetAccess()
55 CALL_EXPRESSION, objectSymbol->Clone(checker->Allocator(), nullptr), in ProcessIndexSetAccess()
56 indexSymbol->Clone(checker->Allocator(), nullptr), assignmentExpression->Right()); in ProcessIndexSetAccess()
61 blockStatements.push_back(parser->CreateFormattedStatement(GET_EXPRESSION, in ProcessIndexSetAccess()
62 … objectSymbol->Clone(checker->Allocator(), nullptr), in ProcessIndexSetAccess()
63 … indexSymbol->Clone(checker->Allocator(), nullptr))); in ProcessIndexSetAccess()
65 …util::NodeAllocator::ForceSetParent<ir::BlockExpression>(checker->Allocator(), std::move(blockStat… in ProcessIndexSetAccess()
70 … loweringResult = parser->CreateFormattedExpression(CALL_EXPRESSION, memberExpression->Object(), in ProcessIndexSetAccess()
71 … memberExpression->Property(), assignmentExpression->Right()); in ProcessIndexSetAccess()
75 loweringResult->SetParent(assignmentExpression->Parent()); in ProcessIndexSetAccess()
76 loweringResult->SetRange(assignmentExpression->Range()); in ProcessIndexSetAccess()
77 loweringResult->SetBoxingUnboxingFlags(assignmentExpression->GetBoxingUnboxingFlags()); in ProcessIndexSetAccess()
78 setter->AddModifier(ir::ModifierFlags::ARRAY_SETTER); in ProcessIndexSetAccess()
79 auto scope = varbinder::LexicalScope<varbinder::Scope>::Enter(checker->VarBinder(), in ProcessIndexSetAccess()
80 … NearestScope(assignmentExpression->Parent())); in ProcessIndexSetAccess()
81 CheckLoweredNode(checker->VarBinder()->AsETSBinder(), checker, loweringResult); in ProcessIndexSetAccess()
82 loweringResult->SetParent(assignmentExpression->Parent()); in ProcessIndexSetAccess()
83 loweringResult->AddModifier(ir::ModifierFlags::SETTER); in ProcessIndexSetAccess()
87 ir::Expression *ObjectIndexLowering::ProcessIndexGetAccess(parser::ETSParser *parser, checker::ETSC… in ProcessIndexGetAccess() argument
90 …// Note! We assume that parser and checker phase nave been already passed correctly, thus the cla… in ProcessIndexGetAccess()
97parser->CreateFormattedExpression(CALL_EXPRESSION, memberExpression->Object(), memberExpression->P… in ProcessIndexGetAccess()
98 loweringResult->AddModifier(ir::ModifierFlags::GETTER); in ProcessIndexGetAccess()
99 loweringResult->SetParent(memberExpression->Parent()); in ProcessIndexGetAccess()
100 loweringResult->SetRange(memberExpression->Range()); in ProcessIndexGetAccess()
102 CheckLoweredNode(checker->VarBinder()->AsETSBinder(), checker, loweringResult); in ProcessIndexGetAccess()
103 loweringResult->SetBoxingUnboxingFlags(memberExpression->GetBoxingUnboxingFlags()); in ProcessIndexGetAccess()
107 bool ObjectIndexLowering::PerformForModule(public_lib::Context *ctx, parser::Program *program) in PerformForModule()
109 auto *const parser = ctx->parser->AsETSParser(); in PerformForModule() local
110 ES2PANDA_ASSERT(parser != nullptr); in PerformForModule()
111 auto *const checker = ctx->checker->AsETSChecker(); in PerformForModule()
114 program->Ast()->TransformChildrenRecursively( in PerformForModule()
115 // CC-OFFNXT(G.FMT.14-CPP) project code style in PerformForModule()
116 [this, parser, checker](ir::AstNode *const ast) -> ir::AstNode * { in PerformForModule()
117 …if (ast->IsAssignmentExpression() && ast->AsAssignmentExpression()->Left()->IsMemberExpression() && in PerformForModule()
118 ast->AsAssignmentExpression()->Left()->AsMemberExpression()->Kind() == in PerformForModule()
121 ast->AsAssignmentExpression()->Left()->AsMemberExpression()->ObjType(); in PerformForModule()
122 objectType != nullptr && !objectType->IsETSDynamicType()) { in PerformForModule()
123 return ProcessIndexSetAccess(parser, checker, ast->AsAssignmentExpression()); in PerformForModule()
130 program->Ast()->TransformChildrenRecursively( in PerformForModule()
131 // CC-OFFNXT(G.FMT.14-CPP) project code style in PerformForModule()
132 [this, parser, checker](ir::AstNode *const ast) -> ir::AstNode * { in PerformForModule()
133 if (ast->IsMemberExpression() && in PerformForModule()
134 ast->AsMemberExpression()->Kind() == ir::MemberExpressionKind::ELEMENT_ACCESS) { in PerformForModule()
135 if (auto const *const objectType = ast->AsMemberExpression()->ObjType(); in PerformForModule()
136 objectType != nullptr && !objectType->IsETSDynamicType()) { in PerformForModule()
137 return ProcessIndexGetAccess(parser, checker, ast->AsMemberExpression()); in PerformForModule()
148 const parser::Program *program) in PostconditionForModule()
150 return !program->Ast()->IsAnyChild([](const ir::AstNode *ast) { in PostconditionForModule()
151 if (ast->IsMemberExpression() && in PostconditionForModule()
152 ast->AsMemberExpression()->Kind() == ir::MemberExpressionKind::ELEMENT_ACCESS) { in PostconditionForModule()
153 … if (auto const *const objectType = ast->AsMemberExpression()->ObjType(); objectType != nullptr) { in PostconditionForModule()
154 return !objectType->IsETSDynamicType(); in PostconditionForModule()