Lines Matching refs:ir
34 ArenaVector<ir::TypeNode *> GetFunctionParameters(checker::ETSChecker *checker, panda_file::MethodDataAccessor &mda)
37 ArenaVector<ir::TypeNode *> parameters(checker->Allocator()->Adapter());
49 ir::ReturnStatement *CreateTypedReturnStatement(checker::ETSChecker *checker, ir::TypeNode *type)
53 if (type->IsETSPrimitiveType() && type->AsETSPrimitiveType()->GetPrimitiveType() == ir::PrimitiveType::VOID) {
54 return checker->AllocNode<ir::ReturnStatement>();
61 auto *apiClass = checker->AllocNode<ir::Identifier>(helpers::DEBUGGER_API_CLASS_NAME, allocator);
63 checker->AllocNode<ir::Identifier>(helpers::CreateGetterName(panda_file::Type::TypeId::REFERENCE), allocator);
64 auto *callee = checker->AllocNode<ir::MemberExpression>(apiClass, prop, ir::MemberExpressionKind::PROPERTY_ACCESS,
67 ArenaVector<ir::Expression *> args(1, checker->AllocNode<ir::NumberLiteral>("0"), allocator->Adapter());
68 auto *callExpression = checker->AllocNode<ir::CallExpression>(callee, std::move(args), nullptr, false);
70 auto *asExpression = checker->AllocNode<ir::TSAsExpression>(callExpression, type->Clone(allocator, nullptr), false);
71 return checker->AllocNode<ir::ReturnStatement>(asExpression);
77 ir::ModifierFlags classModifierFlags)
81 modifierFlags_ = ir::ModifierFlags::EXPORT | helpers::GetModifierFlags(mda_, true);
84 ir::AstNode *MethodBuilder::Build() &&
86 ArenaVector<ir::Statement *> statements(checker_->Allocator()->Adapter());
102 auto *id = checker_->AllocNode<ir::Identifier>(methodName_, checker_->Allocator());
123 auto *paramIdent = checker_->AllocNode<ir::Identifier>(paramName.View(), parameters[idx], checker);
125 auto *param = checker_->AllocNode<ir::ETSParameterExpression>(paramIdent, nullptr);
132 ir::BlockStatement *MethodBuilder::CreateBody(ArenaVector<ir::Statement *> statements)
134 bool isAbstractClass = ((classModifierFlags_ & ir::ModifierFlags::ABSTRACT) != 0);
135 bool isAbstractMethod = ((modifierFlags_ & ir::ModifierFlags::ABSTRACT) != 0);
138 ir::BlockStatement *body = nullptr;
141 body = checker_->AllocNode<ir::BlockStatement>(checker_->Allocator(), std::move(statements));
147 ir::ExpressionStatement *MethodBuilder::CreateSuperConstructorExpressionCall()
151 ArenaVector<ir::Expression *> callArguments(checker_->Allocator()->Adapter());
154 auto *callee = checker_->AllocNode<ir::SuperExpression>();
157 checker_->AllocNode<ir::CallExpression>(callee, std::move(callArguments), nullptr, false);
159 return checker_->AllocNode<ir::ExpressionStatement>(superConstructorCall);
163 ir::AstNode *MethodBuilder::CreateIrConstructor(ir::Identifier *id, ir::BlockStatement *body)
165 auto scriptFuncFlags = ir::ScriptFunctionFlags::EXPRESSION |
166 (IS_STATIC ? ir::ScriptFunctionFlags::STATIC_BLOCK : ir::ScriptFunctionFlags::CONSTRUCTOR);
173 auto *staticBlock = checker_->AllocNode<ir::ClassStaticBlock>(funcExpr, allocator);
174 staticBlock->AddModifier(ir::ModifierFlags::STATIC);
178 return checker_->AllocNode<ir::MethodDefinition>(ir::MethodDefinitionKind::CONSTRUCTOR,
179 id->Clone(allocator, nullptr), funcExpr, ir::ModifierFlags::NONE,
183 ir::MethodDefinition *MethodBuilder::CreateIrMethod(ir::Identifier *id, ir::BlockStatement *body)
186 auto *funcExpr = CreateFunctionExpression(id, body, ir::ScriptFunctionFlags::METHOD);
188 auto *method = checker_->AllocNode<ir::MethodDefinition>(ir::MethodDefinitionKind::METHOD,
194 ir::FunctionExpression *MethodBuilder::CreateFunctionExpression(ir::Identifier *id, ir::BlockStatement *body,
195 ir::ScriptFunctionFlags scriptFuncFlags)
197 auto funcSignature = ir::FunctionSignature(nullptr, std::move(params_), nullptr);
200 auto *func = checker_->AllocNode<ir::ScriptFunction>(
202 ir::ScriptFunction::ScriptFunctionData {body, std::move(funcSignature), scriptFuncFlags, modifierFlags_});
208 return checker_->AllocNode<ir::FunctionExpression>(func);