Lines Matching +full:allocator +full:-
7 * http://www.apache.org/licenses/LICENSE-2.0
28 auto const refine = [](ir::AstNode *n) { n->SetRange(n->Parent()->Range()); }; in SetSourceRangesRecursively()
31 node->IterateRecursively(refine); in SetSourceRangesRecursively()
39 auto *const allocator = ctx->allocator; in CreateSpreadArrayDeclareStatements() local
40 auto *const parser = ctx->parser->AsETSParser(); in CreateSpreadArrayDeclareStatements()
41 for (auto element : array->Elements()) { in CreateSpreadArrayDeclareStatements()
42 if (element->Type() != ir::AstNodeType::SPREAD_ELEMENT) { in CreateSpreadArrayDeclareStatements()
45 ir::Identifier *const arrIdent = Gensym(allocator); in CreateSpreadArrayDeclareStatements()
46 auto *const initExpr = element->AsSpreadElement()->Argument()->Clone(allocator, nullptr); in CreateSpreadArrayDeclareStatements()
48 …statements.emplace_back(parser->CreateFormattedStatement("let @@I1 = (@@E2);", arrIdent, initExpr)… in CreateSpreadArrayDeclareStatements()
56 auto *const allocator = ctx->allocator; in CreateNewArrayLengthStatement() local
57 auto *const parser = ctx->parser->AsETSParser(); in CreateNewArrayLengthStatement()
61 int normalElementCount = array->Elements().size() - spreadArrayIds.size(); in CreateNewArrayLengthStatement()
66 nodesWaitingInsert.emplace_back(spaId->Clone(allocator, nullptr)); in CreateNewArrayLengthStatement()
69 … statements.emplace_back(parser->CreateFormattedStatement(lengthString.str(), nodesWaitingInsert)); in CreateNewArrayLengthStatement()
74 …if (!node->IsAnnotatedExpression() || (node->AsAnnotatedExpression()->TypeAnnotation() == nullptr)… in ClearIdentifierAnnotation()
78 node->AsAnnotatedExpression()->SetTsTypeAnnotation(nullptr); in ClearIdentifierAnnotation()
86 auto *const checker = ctx->checker->AsETSChecker(); in CreateNewArrayDeclareStatement()
87 auto *const allocator = ctx->allocator; in CreateNewArrayDeclareStatement() local
88 auto *const parser = ctx->parser->AsETSParser(); in CreateNewArrayDeclareStatement()
89 ir::Identifier *newArrayId = Gensym(allocator); in CreateNewArrayDeclareStatement()
90 auto arrayType = array->TsType()->AsETSArrayType(); in CreateNewArrayDeclareStatement()
91 auto initElemType = arrayType->ElementType(); in CreateNewArrayDeclareStatement()
93 if (checker->IsReferenceType(initElemType)) { in CreateNewArrayDeclareStatement()
94 newArrayType = checker->Allocator()->New<checker::ETSArrayType>( in CreateNewArrayDeclareStatement()
95 checker->CreateETSUnionType({initElemType, checker->GlobalETSNullType()})); in CreateNewArrayDeclareStatement()
102 …// But now cast Expression doesn't support built-in array (cast fatherType[] to sonType[]), … in CreateNewArrayDeclareStatement()
107 ir::Statement *newArrayDeclareSt = parser->CreateFormattedStatement( in CreateNewArrayDeclareStatement()
108 newArrayDeclareStr.str(), newArrayId, newArrayType, newArrayType->ElementType(), in CreateNewArrayDeclareStatement()
109 ClearIdentifierAnnotation(newArrayLengthId->Clone(allocator, nullptr))); in CreateNewArrayDeclareStatement()
117 auto *const parser = ctx->parser->AsETSParser(); in CreateSpreadArrIteratorStatement()
118 auto elemType = array->TsType()->AsETSArrayType()->ElementType(); in CreateSpreadArrIteratorStatement()
124 parser->CreateFormattedStatement(spArrIterDeclareStr.str(), spreadArrIterator, elemType); in CreateSpreadArrIteratorStatement()
133 auto *const allocator = ctx->allocator; in CreateElementsAssignStatementBySpreadArr() local
134 auto *const parser = ctx->parser->AsETSParser(); in CreateElementsAssignStatementBySpreadArr()
145 ir::Statement *elementsAssignStatement = parser->CreateFormattedStatement( in CreateElementsAssignStatementBySpreadArr()
146 … elementsAssignStr.str(), ClearIdentifierAnnotation(spreadArrIterator->Clone(allocator, nullptr)), in CreateElementsAssignStatementBySpreadArr()
147 …ClearIdentifierAnnotation(spreadArrIterator->Clone(allocator, nullptr)), spId->Clone(allocator, nu… in CreateElementsAssignStatementBySpreadArr()
148 newArrayId->Clone(allocator, nullptr), newArrayIndexId->Clone(allocator, nullptr), in CreateElementsAssignStatementBySpreadArr()
149 ClearIdentifierAnnotation(spreadArrIterator->Clone(allocator, nullptr)), in CreateElementsAssignStatementBySpreadArr()
150 newArrayIndexId->Clone(allocator, nullptr)); in CreateElementsAssignStatementBySpreadArr()
158 auto *const allocator = ctx->allocator; in CreateElementsAssignStatementBySingle() local
159 auto *const parser = ctx->parser->AsETSParser(); in CreateElementsAssignStatementBySingle()
167 ir::Statement *elementsAssignStatement = parser->CreateFormattedStatement( in CreateElementsAssignStatementBySingle()
168 …elementsAssignStr.str(), newArrayId->Clone(allocator, nullptr), newArrayIndexId->Clone(allocator, … in CreateElementsAssignStatementBySingle()
169 element->Clone(allocator, nullptr), newArrayIndexId->Clone(allocator, nullptr)); in CreateElementsAssignStatementBySingle()
179 auto *const allocator = ctx->allocator; in CreateNewArrayElementsAssignStatement() local
180 auto *const parser = ctx->parser->AsETSParser(); in CreateNewArrayElementsAssignStatement()
184 for (auto *element : array->Elements()) { in CreateNewArrayElementsAssignStatement()
185 if (element->Type() == ir::AstNodeType::SPREAD_ELEMENT) { in CreateNewArrayElementsAssignStatement()
186 ir::Identifier *spreadArrIterator = Gensym(allocator); in CreateNewArrayElementsAssignStatement()
195 …statements.emplace_back(parser->CreateFormattedStatement("@@I1;", newArrayId->Clone(allocator, nul… in CreateNewArrayElementsAssignStatement()
217 auto *const checker = ctx->checker->AsETSChecker(); in CreateLoweredExpression()
218 auto *const parser = ctx->parser->AsETSParser(); in CreateLoweredExpression()
219 auto *const allocator = ctx->allocator; in CreateLoweredExpression() local
220 ArenaVector<ir::Statement *> statements(allocator->Adapter()); in CreateLoweredExpression()
222 ir::Identifier *newArrayLengthId = Gensym(allocator); in CreateLoweredExpression()
228 ir::Identifier *newArrayIndexId = Gensym(allocator); in CreateLoweredExpression()
229 statements.emplace_back(parser->CreateFormattedStatement("let @@I1 = 0;", newArrayIndexId)); in CreateLoweredExpression()
230 …<ir::AstNode *> newArrayAndIndex {ClearIdentifierAnnotation(newArrayId->Clone(allocator, nullptr)), in CreateLoweredExpression()
231 newArrayIndexId->Clone(allocator, nullptr)}; in CreateLoweredExpression()
234 return checker->AllocNode<ir::BlockExpression>(std::move(statements)); in CreateLoweredExpression()
239 for (auto &[_, ext_programs] : program->ExternalSources()) { in Perform()
246 checker::ETSChecker *const checker = ctx->checker->AsETSChecker(); in Perform()
248 program->Ast()->TransformChildrenRecursively( in Perform()
249 [&checker, &ctx](ir::AstNode *const node) -> AstNodePtr { in Perform()
250 if (node->IsArrayExpression() && in Perform()
251 …std::any_of(node->AsArrayExpression()->Elements().begin(), node->AsArrayExpression()->Elements().e… in Perform()
252 … [](const auto *param) { return param->Type() == ir::AstNodeType::SPREAD_ELEMENT; })) { in Perform()
254 … varbinder::LexicalScope<varbinder::Scope>::Enter(checker->VarBinder(), NearestScope(node)); in Perform()
256 … ir::BlockExpression *blockExpression = CreateLoweredExpression(ctx, node->AsArrayExpression()); in Perform()
257 blockExpression->SetParent(node->Parent()); in Perform()
259 … // NOTE: this blockExpression is a kind of formatted-dummy code, which is invisible to users, in Perform()
261 blockExpression->SetRange(node->Range()); in Perform()
262 for (auto st : blockExpression->Statements()) { in Perform()
266 Recheck(checker->VarBinder()->AsETSBinder(), checker, blockExpression); in Perform()
279 for (auto &[_, ext_programs] : program->ExternalSources()) { in Postcondition()