Lines Matching +full:parserprogram +full:-
2 * Copyright (c) 2021-2024 Huawei Device Co., Ltd.
7 * http://www.apache.org/licenses/LICENSE-2.0
46 // NOLINTNEXTLINE(readability-magic-numbers)
80 if (loweringResult->IsAssignmentExpression()) { in AdjustBoxingUnboxingFlags()
81 exprToProcess = loweringResult->AsAssignmentExpression(); in AdjustBoxingUnboxingFlags()
82 …} else if (loweringResult->IsBlockExpression() && !loweringResult->AsBlockExpression()->Statements… in AdjustBoxingUnboxingFlags()
83 auto *statement = loweringResult->AsBlockExpression()->Statements().back(); in AdjustBoxingUnboxingFlags()
84 if (statement->IsExpressionStatement()) { in AdjustBoxingUnboxingFlags()
85 exprToProcess = statement->AsExpressionStatement()->GetExpression(); in AdjustBoxingUnboxingFlags()
93 const ir::BoxingUnboxingFlags oldBoxingFlag {oldExpr->GetBoxingUnboxingFlags() & in AdjustBoxingUnboxingFlags()
95 const ir::BoxingUnboxingFlags oldUnboxingFlag {oldExpr->GetBoxingUnboxingFlags() & in AdjustBoxingUnboxingFlags()
98 if (exprToProcess->TsType()->IsETSPrimitiveType()) { in AdjustBoxingUnboxingFlags()
99 loweringResult->SetBoxingUnboxingFlags(oldBoxingFlag); in AdjustBoxingUnboxingFlags()
100 } else if (exprToProcess->TsType()->IsETSObjectType()) { in AdjustBoxingUnboxingFlags()
101 loweringResult->SetBoxingUnboxingFlags(oldUnboxingFlag); in AdjustBoxingUnboxingFlags()
107 auto *lcType = expr->TsType(); in CreateProxyTypeNode()
108 …if (auto *lcTypeAsPrimitive = checker->MaybeUnboxInRelation(lcType); lcTypeAsPrimitive != nullptr)… in CreateProxyTypeNode()
111 return checker->AllocNode<ir::OpaqueTypeNode>(lcType); in CreateProxyTypeNode()
118 if (expr->IsTSNonNullExpression()) { in GenFormatForExpression()
119 expr = expr->AsTSNonNullExpression()->Expr(); in GenFormatForExpression()
122 if (expr->IsMemberExpression()) { in GenFormatForExpression()
123 auto const kind = expr->AsMemberExpression()->Kind(); in GenFormatForExpression()
144 return node == nullptr ? nullptr : node->Clone(allocator, nullptr); in GetClone()
149 auto *allocator = ctx->allocator; in ConstructOpAssignmentResult()
150 auto *parser = ctx->parser->AsETSParser(); in ConstructOpAssignmentResult()
151 auto *checker = ctx->checker->AsETSChecker(); in ConstructOpAssignmentResult()
153 const auto opEqual = assignment->OperatorType(); in ConstructOpAssignmentResult()
156 auto *const left = assignment->Left(); in ConstructOpAssignmentResult()
157 auto *const right = assignment->Right(); in ConstructOpAssignmentResult()
167 if (left->IsIdentifier()) { in ConstructOpAssignmentResult()
168 ident1 = left->AsIdentifier(); in ConstructOpAssignmentResult()
169 } else if (left->IsMemberExpression()) { in ConstructOpAssignmentResult()
170 auto *const memberExpression = left->AsMemberExpression(); in ConstructOpAssignmentResult()
172 if (object = memberExpression->Object(); object->IsIdentifier()) { in ConstructOpAssignmentResult()
173 ident1 = object->AsIdentifier(); in ConstructOpAssignmentResult()
179 if (property = memberExpression->Property(); property->IsIdentifier()) { in ConstructOpAssignmentResult()
180 ident2 = property->AsIdentifier(); in ConstructOpAssignmentResult()
195 …return parser->CreateFormattedExpression(newAssignmentStatements, ident1, object, ident2, property, in ConstructOpAssignmentResult()
202 auto *checker = ctx->checker->AsETSChecker(); in HandleOpAssignment()
204 if (assignment->TsType() == nullptr) { // hasn't been through checker in HandleOpAssignment()
210 loweringResult->SetParent(assignment->Parent()); in HandleOpAssignment()
211 // NOTE(dslynko, #19200): required for correct debug-info in HandleOpAssignment()
212 auto rng = assignment->Range(); in HandleOpAssignment()
213 loweringResult->SetRange(rng); in HandleOpAssignment()
214 loweringResult->TransformChildrenRecursively( in HandleOpAssignment()
216 node->SetRange(rng); in HandleOpAssignment()
223 …auto expressionCtx = varbinder::LexicalScope<varbinder::Scope>::Enter(checker->VarBinder(), scope); in HandleOpAssignment()
224 InitScopesPhaseETS::RunExternalNode(loweringResult, ctx->parserProgram->VarBinder()); in HandleOpAssignment()
225 … checker->VarBinder()->AsETSBinder()->ResolveReferencesForScopeWithContext(loweringResult, scope); in HandleOpAssignment()
230 loweringResult->Check(checker); in HandleOpAssignment()
250 auto *allocator = ctx->allocator; in ParseArgument()
252 if (argument->IsTSNonNullExpression()) { in ParseArgument()
253 argument = argument->AsTSNonNullExpression()->Expr(); in ParseArgument()
256 if (argument->IsIdentifier()) { in ParseArgument()
257 info.id1 = GetClone(allocator, argument->AsIdentifier()); in ParseArgument()
258 } else if (argument->IsMemberExpression()) { in ParseArgument()
259 auto *memberExpression = argument->AsMemberExpression(); in ParseArgument()
261 …if (info.object = memberExpression->Object(); info.object != nullptr && info.object->IsIdentifier(… in ParseArgument()
262 info.id1 = GetClone(allocator, info.object->AsIdentifier()); in ParseArgument()
266 info.objType = info.object->TsType(); in ParseArgument()
269 …if (info.property = memberExpression->Property(); info.property != nullptr && info.property->IsIde… in ParseArgument()
270 info.id2 = GetClone(allocator, info.property->AsIdentifier()); in ParseArgument()
274 info.propType = info.property->TsType(); in ParseArgument()
281 auto *allocator = ctx->allocator; in ConstructUpdateResult()
282 auto *parser = ctx->parser->AsETSParser(); in ConstructUpdateResult()
283 auto *argument = upd->Argument(); in ConstructUpdateResult()
284 auto *checker = ctx->checker->AsETSChecker(); in ConstructUpdateResult()
287 argInfo.objType = checker->GlobalVoidType(); in ConstructUpdateResult()
288 argInfo.propType = checker->GlobalVoidType(); in ConstructUpdateResult()
292 // re-checking. in ConstructUpdateResult()
294 std::string opSign = lexer::TokenToString(CombinedOpToOp(upd->OperatorType())); in ConstructUpdateResult()
296 std::string suffix = argument->TsType()->IsETSBigIntType() ? "n" : ""; in ConstructUpdateResult()
298 // NOLINTBEGIN(readability-magic-numbers) in ConstructUpdateResult()
299 if (upd->IsPrefix()) { in ConstructUpdateResult()
303 return parser->CreateFormattedExpression( in ConstructUpdateResult()
306 GetClone(allocator, argInfo.id1), GetClone(allocator, argInfo.id2), argument->TsType()); in ConstructUpdateResult()
314 return parser->CreateFormattedExpression( in ConstructUpdateResult()
317 argument->TsType(), GetClone(allocator, argInfo.id1), GetClone(allocator, argInfo.id2), in ConstructUpdateResult()
318 GetClone(allocator, argInfo.id3), argument->TsType(), GetClone(allocator, argInfo.id3)); in ConstructUpdateResult()
319 // NOLINTEND(readability-magic-numbers) in ConstructUpdateResult()
324 auto *checker = ctx->checker->AsETSChecker(); in HandleUpdate()
330 …auto expressionCtx = varbinder::LexicalScope<varbinder::Scope>::Enter(checker->VarBinder(), scope); in HandleUpdate()
334 loweringResult->SetParent(upd->Parent()); in HandleUpdate()
335 // NOTE(dslynko, #19200): required for correct debug-info in HandleUpdate()
336 auto rng = upd->Range(); in HandleUpdate()
337 loweringResult->SetRange(rng); in HandleUpdate()
338 loweringResult->TransformChildrenRecursively( in HandleUpdate()
340 node->SetRange(rng); in HandleUpdate()
344 InitScopesPhaseETS::RunExternalNode(loweringResult, ctx->checker->VarBinder()); in HandleUpdate()
346 checker->VarBinder()->AsETSBinder()->ResolveReferencesForScopeWithContext(loweringResult, in HandleUpdate()
348 loweringResult->Check(checker); in HandleUpdate()
357 if (ctx->config->options->CompilerOptions().compilationMode == CompilationMode::GEN_STD_LIB) { in Perform()
358 for (auto &[_, ext_programs] : program->ExternalSources()) { in Perform()
366 program->Ast()->TransformChildrenRecursively( in Perform()
368 if (ast->IsAssignmentExpression() && in Perform()
369 … ast->AsAssignmentExpression()->OperatorType() != lexer::TokenType::PUNCTUATOR_SUBSTITUTION) { in Perform()
370 return HandleOpAssignment(ctx, ast->AsAssignmentExpression()); in Perform()
372 if (ast->IsUpdateExpression()) { in Perform()
373 return HandleUpdate(ctx, ast->AsUpdateExpression()); in Perform()
394 if (ctx->config->options->CompilerOptions().compilationMode == CompilationMode::GEN_STD_LIB) { in Postcondition()
395 for (auto &[_, extPrograms] : program->ExternalSources()) { in Postcondition()
403 return !program->Ast()->IsAnyChild([](const ir::AstNode *ast) { in Postcondition()
404 … return (ast->IsAssignmentExpression() && ast->AsAssignmentExpression()->TsType() != nullptr && in Postcondition()
405 … ast->AsAssignmentExpression()->OperatorType() != lexer::TokenType::PUNCTUATOR_SUBSTITUTION) || in Postcondition()
406 ast->IsUpdateExpression(); in Postcondition()