Lines Matching defs:lambda

48     ir::ArrowFunctionExpression *lambda = nullptr;
69 static bool CheckIfNeedThis(ir::ArrowFunctionExpression const *lambda)
71 return lambda->IsAnyChild([](ir::AstNode *ast) { return ast->IsThisExpression(); });
84 auto name = util::UString(util::StringView("lambda$invoke$"), allocator);
182 for (auto *oldParam : calleeParameterInfo.lambda->Function()->Params()) {
324 static ir::MethodDefinition *CreateCalleeMethod(public_lib::Context *ctx, ir::ArrowFunctionExpression *lambda,
340 auto *substitution = subst0; // NOTE(gogabr): needed to capture in a lambda later.
346 CalleeParameterInfo cpi {lambda, *info->capturedVars, paramScope, substitution, limit};
354 : lambda->Function()->Signature()->ReturnType()->Substitute(checker->Relation(), substitution);
393 static ir::MethodDefinition *CreateCalleeDefault(public_lib::Context *ctx, ir::ArrowFunctionExpression *lambda,
398 auto *body = lambda->Function()->Body()->AsBlockStatement();
399 auto calleeName = lambda->Function()->IsAsyncFunc()
402 auto *forcedReturnType = lambda->Function()->IsAsyncFunc() ? checker->GlobalETSNullishObjectType() : nullptr;
408 auto *method = CreateCalleeMethod(ctx, lambda, info, &cmInfo);
410 if (lambda->Function()->IsAsyncFunc()) {
417 auto *asyncMethod = CreateCalleeMethod(ctx, lambda, info, &cmInfoAsync);
425 ir::ArrowFunctionExpression *lambda,
446 for (; i < lambda->Function()->Params().size(); i++) {
447 auto *param = lambda->Function()->Params()[i]->AsETSParameterExpression();
459 static ir::BlockStatement *CreateFunctionBody(public_lib::Context *ctx, ir::ArrowFunctionExpression *lambda,
481 CreateArgsForOptionalCall(ctx, lambda, defaultMethod),
499 static ir::MethodDefinition *CreateCallee(public_lib::Context *ctx, ir::ArrowFunctionExpression *lambda,
506 auto calleeName = lambda->Function()->IsAsyncFunc()
509 auto *forcedReturnType = lambda->Function()->IsAsyncFunc() ? checker->GlobalETSNullishObjectType() : nullptr;
513 cmInfo.body = CreateFunctionBody(ctx, lambda, defaultMethod);
516 auto *method = CreateCalleeMethod(ctx, lambda, info, &cmInfo, limit, defaultMethod->Id()->Variable());
518 if (lambda->Function()->IsAsyncFunc()) {
525 auto *asyncMethod = CreateCalleeMethod(ctx, lambda, info, &cmInfoAsync);
758 auto *substitution = subst0; // NOTE(gogabr): needed to capture in a lambda later.
850 static ir::AstNode *ConvertLambda(public_lib::Context *ctx, ir::ArrowFunctionExpression *lambda)
854 auto firstDefaultIndex = lambda->Function()->DefaultParamIndex();
857 std::tie(info.calleeClass, info.enclosingFunction) = FindEnclosingClassAndFunction(lambda);
859 auto capturedVars = FindCaptured(allocator, lambda);
861 info.callReceiver = CheckIfNeedThis(lambda) ? allocator->New<ir::ThisExpression>() : nullptr;
863 auto *callee = CreateCalleeDefault(ctx, lambda, &info);
865 if (firstDefaultIndex < lambda->Function()->Params().size()) {
866 for (size_t i = firstDefaultIndex; i < lambda->Function()->Params().size(); i++) {
867 auto overload = CreateCallee(ctx, lambda, &info, callee, firstDefaultIndex);
872 ASSERT(lambda->TsType()->IsETSFunctionType());
873 auto *lambdaType = lambda->TsType()->AsETSFunctionType();
875 auto *constructorCall = CreateConstructorCall(ctx, lambda, lambdaClass, &info);
965 auto *lambda = util::NodeAllocator::ForceSetParent<ir::ArrowFunctionExpression>(allocator, func);
966 lambda->SetParent(parent);
968 auto *nearestScope = NearestScope(lambda);
970 InitScopesPhaseETS::RunExternalNode(lambda, varBinder);
971 varBinder->ResolveReferencesForScopeWithContext(lambda, nearestScope);
979 lambda->Check(ctx->checker->AsETSChecker());
981 return lambda;
1008 // Direct reference to method will be impossible from the lambda class, so replace func ref with a lambda
1161 parser::SavedFormattingFileName savedFormattingName(ctx->parser->AsETSParser(), "lambda-conversion");