Lines Matching refs:ir
57 using DynamicCallIntrinsicsMap = ArenaUnorderedMap<Language, ArenaUnorderedMap<util::StringView, ir::ScriptFunction *>>;
58 using DynamicClassIntrinsicsMap = ArenaUnorderedMap<Language, ir::ClassDeclaration *>;
130 ETSObjectType *GlobalBuiltinFunctionType(size_t nargs, ir::ScriptFunctionFlags flags) const;
145 Type *CheckTypeCached(ir::Expression *expr) override;
158 ETSObjectType *BuildBasicClassProperties(ir::ClassDefinition *classDef);
159 ETSObjectType *BuildAnonymousClassProperties(ir::ClassDefinition *classDef, ETSObjectType *superType);
160 ETSObjectType *BuildBasicInterfaceProperties(ir::TSInterfaceDeclaration *interfaceDecl);
169 bool ValidateArrayIndex(ir::Expression *expr, bool relaxed = false);
170 bool ValidateTupleIndex(const ETSTupleType *tuple, ir::MemberExpression *expr);
171 ETSObjectType *CheckThisOrSuperAccess(ir::Expression *node, ETSObjectType *classType, std::string_view msg);
173 ETSTypeParameter *SetUpParameterType(ir::TSTypeParameter *param);
174 void CheckIfOverrideIsValidInInterface(const ETSObjectType *classType, Signature *sig, ir::ScriptFunction *func);
176 ArenaVector<Signature *> &similarSignatures, ir::ScriptFunction *func);
202 void CheckLocalClass(ir::ClassDefinition *classDef, CheckerStatus &checkerStatus);
203 void CheckClassDefinition(ir::ClassDefinition *classDef);
204 void CheckConstructors(ir::ClassDefinition *classDef, ETSObjectType *classType);
205 void FindAssignment(const ir::AstNode *node, const varbinder::LocalVariable *classVar, bool &initialized);
206 void FindAssignments(const ir::AstNode *node, const varbinder::LocalVariable *classVar, bool &initialized);
216 std::vector<ResolveResult *> ResolveMemberReference(const ir::MemberExpression *memberExpr,
218 varbinder::Variable *ResolveInstanceExtension(const ir::MemberExpression *memberExpr);
221 void CheckExpressionsInConstructor(const ArenaVector<const ir::Expression *> &arguments);
222 ArenaVector<const ir::Expression *> CheckMemberOrCallOrObjectExpressionInConstructor(const ir::Expression *arg);
223 void CheckValidInheritance(ETSObjectType *classType, ir::ClassDefinition *classDef);
224 void CheckProperties(ETSObjectType *classType, ir::ClassDefinition *classDef, varbinder::LocalVariable *it,
236 bool HasETSFunctionType(ir::TypeNode *typeAnnotation);
250 ETSIntEnumType *CreateEnumIntTypeFromEnumDeclaration(ir::TSEnumDeclaration const *const enumDecl);
251 ETSStringEnumType *CreateEnumStringTypeFromEnumDeclaration(ir::TSEnumDeclaration const *const enumDecl);
265 ETSFunctionType *CreateETSFunctionType(ir::ScriptFunction *func, Signature *signature, util::StringView name);
268 ETSFunctionType *CreateETSFunctionType(ir::ScriptFunction *func, ArenaVector<Signature *> &&signature,
275 ETSObjectType *CreateETSObjectType(util::StringView name, ir::AstNode *declNode, ETSObjectFlags flags);
279 std::tuple<Language, bool> CheckForDynamicLang(ir::AstNode *declNode, util::StringView assemblerName);
280 ETSObjectType *CreateNewETSObjectType(util::StringView name, ir::AstNode *declNode, ETSObjectFlags flags);
282 Signature *CreateSignature(SignatureInfo *info, Type *returnType, ir::ScriptFunction *func);
287 Type *NegateNumericType(Type *type, ir::Expression *node);
288 Type *BitwiseNegateNumericType(Type *type, ir::Expression *node);
291 const ir::Expression *left,
292 const ir::Expression *right);
293 std::tuple<Type *, Type *> CheckBinaryOperator(ir::Expression *left, ir::Expression *right, ir::Expression *expr,
297 ir::Expression *expr,
298 std::tuple<ir::Expression *, ir::Expression *, lexer::TokenType, lexer::SourcePosition> op, bool isEqualOp,
301 std::tuple<ir::Expression *, ir::Expression *, lexer::TokenType, lexer::SourcePosition> op, bool isEqualOp,
306 std::tuple<ir::Expression *, ir::Expression *, lexer::TokenType, lexer::SourcePosition> op, bool isEqualOp,
309 std::tuple<ir::Expression *, ir::Expression *, lexer::TokenType, lexer::SourcePosition> op, bool isEqualOp,
312 std::tuple<ir::Expression *, ir::Expression *, lexer::TokenType, lexer::SourcePosition> op, bool isEqualOp,
314 checker::Type *CheckBinaryOperatorLogical(ir::Expression *left, ir::Expression *right, ir::Expression *expr,
317 std::tuple<Type *, Type *> CheckBinaryOperatorStrictEqual(ir::Expression *left, lexer::TokenType operationType,
324 std::tuple<Type *, Type *> CheckBinaryOperatorEqual(ir::Expression *left, ir::Expression *right,
328 std::tuple<Type *, Type *> CheckBinaryOperatorEqualDynamic(ir::Expression *left, ir::Expression *right,
330 std::tuple<Type *, Type *> CheckBinaryOperatorLessGreater(ir::Expression *left, ir::Expression *right,
336 checker::Type *CheckBinaryOperatorNullishCoalescing(ir::Expression *left, ir::Expression *right,
338 bool AdjustNumberLiteralType(ir::NumberLiteral *literal, Type *literalType, Type *otherType);
342 void FlagExpressionWithUnboxing(Type *type, Type *unboxedType, ir::Expression *typeExpression);
351 bool NeedTypeInference(const ir::ScriptFunction *lambda);
352 std::vector<bool> FindTypeInferenceArguments(const ArenaVector<ir::Expression *> &arguments);
353 void InferTypesForLambda(ir::ScriptFunction *lambda, ir::ETSFunctionType *calleeType,
355 bool TypeInference(Signature *signature, const ArenaVector<ir::Expression *> &arguments,
357 bool CheckLambdaTypeAnnotation(ir::AstNode *typeAnnotation, ir::ArrowFunctionExpression *arrowFuncExpr,
359 bool CheckLambdaInfer(ir::AstNode *typeAnnotation, ir::ArrowFunctionExpression *arrowFuncExpr,
361 bool CheckLambdaAssignable(ir::Expression *param, ir::ScriptFunction *lambda);
362 bool CheckLambdaAssignableUnion(ir::AstNode *typeAnn, ir::ScriptFunction *lambda);
389 ir::TSTypeParameterDeclaration const *typeParams);
390 void AssignTypeParameterConstraints(ir::TSTypeParameterDeclaration const *typeParams);
396 std::tuple<Signature *, const ir::TSTypeParameterInstantiation *, TypeRelationFlag> info,
397 const ArenaVector<ir::Expression *> &arguments, const lexer::SourcePosition &pos,
399 void MaybeSubstituteLambdaArgumentsInFunctionCall(ir::CallExpression *callExpr);
400 void MaybeSubstituteLambdaArgumentsInFunctionCallHelper(ir::CallExpression *callExpr, ir::Identifier *ident);
401 void MaybeSubstituteLambdaArguments(const ArenaVector<ir::Expression *> ¶ms, ir::CallExpression *callExpr);
402 bool ValidateSignatureRequiredParams(Signature *substitutedSig, const ArenaVector<ir::Expression *> &arguments,
405 bool ValidateSignatureInvocationContext(Signature *substitutedSig, ir::Expression *argument, const Type *targetType,
407 bool CheckInvokable(Signature *substitutedSig, ir::Expression *argument, std::size_t index, TypeRelationFlag flags);
408 bool CheckOptionalLambdaFunction(ir::Expression *argument, Signature *substitutedSig, std::size_t index);
409 bool ValidateArgumentAsIdentifier(const ir::Identifier *identifier);
410 bool ValidateSignatureRestParams(Signature *substitutedSig, const ArenaVector<ir::Expression *> &arguments,
413 const ir::TSTypeParameterInstantiation *typeArguments,
414 const ArenaVector<ir::Expression *> &arguments, const lexer::SourcePosition &pos,
430 ir::CallExpression *callExpr, const lexer::SourcePosition &pos,
432 Signature *ResolveConstructExpression(ETSObjectType *type, const ArenaVector<ir::Expression *> &arguments,
434 void CheckObjectLiteralArguments(Signature *sig, ArenaVector<ir::Expression *> const &arguments);
435 Signature *ComposeSignature(ir::ScriptFunction *func, SignatureInfo *signatureInfo, Type *returnType,
437 Type *ComposeReturnType(ir::ScriptFunction *func);
438 SignatureInfo *ComposeSignatureInfo(ir::ScriptFunction *func);
439 ArenaVector<SignatureInfo *> ComposeSignatureInfosForArrowFunction(ir::ArrowFunctionExpression *arrowFuncExpr);
440 void SetParamForSignatureInfoOfArrowFunction(SignatureInfo *signatureInfo, ir::ETSParameterExpression *param);
441 void ValidateMainSignature(ir::ScriptFunction *func);
442 void BuildFunctionSignature(ir::ScriptFunction *func, bool isConstructSig = false);
443 checker::ETSFunctionType *BuildNamedFunctionType(ir::ScriptFunction *func);
444 checker::ETSFunctionType *BuildMethodSignature(ir::MethodDefinition *method);
446 static Signature *GetSignatureFromMethodDefinition(const ir::MethodDefinition *methodDef);
448 const ir::MethodDefinition *currentFunc);
464 void ValidateSignatureAccessibility(ETSObjectType *callee, const ir::CallExpression *callExpr, Signature *signature,
467 void CheckCapturedVariableInSubnodes(ir::AstNode *node, varbinder::Variable *var);
468 void CheckCapturedVariable(ir::AstNode *node, varbinder::Variable *var);
469 void CreateAsyncProxyMethods(ir::ClassDefinition *classDef);
470 ir::MethodDefinition *CreateAsyncImplMethod(ir::MethodDefinition *asyncMethod, ir::ClassDefinition *classDef);
471 ir::MethodDefinition *CreateAsyncProxy(ir::MethodDefinition *asyncMethod, ir::ClassDefinition *classDef,
473 ir::MethodDefinition *CreateMethod(const util::StringView &name, ir::ModifierFlags modifiers,
474 ir::ScriptFunctionFlags flags, ArenaVector<ir::Expression *> &¶ms,
475 varbinder::FunctionParamScope *paramScope, ir::TypeNode *returnType,
476 ir::AstNode *body);
477 varbinder::FunctionParamScope *CopyParams(const ArenaVector<ir::Expression *> ¶ms,
478 ArenaVector<ir::Expression *> &outParams);
479 void ReplaceScope(ir::AstNode *root, ir::AstNode *oldNode, varbinder::Scope *newScope);
482 size_t ComputeProxyMethods(ir::ClassDefinition *klass);
483 ir::ModifierFlags GetFlagsForProxyLambda(bool isStatic);
484 ir::ScriptFunction *CreateProxyFunc(ir::ArrowFunctionExpression *lambda, ArenaVector<ir::AstNode *> &captured,
486 ir::AstNode *GetProxyMethodBody(ir::ArrowFunctionExpression *lambda, varbinder::FunctionScope *scope);
488 static std::string GetAsyncImplName(ir::MethodDefinition *asyncMethod);
489 static bool IsAsyncImplMethod(ir::MethodDefinition const *method);
492 void BindingsModuleObjectAddProperty(checker::ETSObjectType *moduleObjType, ir::ETSImportDeclaration *importDecl,
496 ir::ETSImportDeclaration *importDecl = nullptr);
497 void SetrModuleObjectTsType(ir::Identifier *local, checker::ETSObjectType *moduleObjType);
498 Type *GetReferencedTypeFromBase(Type *baseType, ir::Expression *name);
499 Type *GetReferencedTypeBase(ir::Expression *name);
503 void ValidateGenericTypeAliasForClonedNode(ir::TSTypeAliasDeclaration *typeAliasNode,
504 const ir::TSTypeParameterInstantiation *exactTypeParams);
505 Type *HandleTypeAlias(ir::Expression *name, const ir::TSTypeParameterInstantiation *typeParams);
509 bool IsNullLikeOrVoidExpression(const ir::Expression *expr) const;
510 bool IsConstantExpression(ir::Expression *expr, Type *type);
512 void InferAliasLambdaType(ir::TypeNode *localTypeAnnotation, ir::ArrowFunctionExpression *init);
521 Type *HandleBooleanLogicalOperatorsExtended(Type *leftType, Type *rightType, ir::BinaryExpression *expr);
523 checker::Type *FixOptionalVariableType(varbinder::Variable *const bindingVar, ir::ModifierFlags flags,
524 ir::Expression *init);
525 void CheckEnumType(ir::Expression *init, checker::Type *initType, const util::StringView &varName);
526 checker::Type *CheckVariableDeclaration(ir::Identifier *ident, ir::TypeNode *typeAnnotation, ir::Expression *init,
527 ir::ModifierFlags flags);
529 ir::Expression *init, checker::Type *initType);
530 void CheckTruthinessOfType(ir::Expression *expr);
532 bool CheckNonNullish(ir::Expression const *expr);
540 Type *ResolveIdentifier(ir::Identifier *ident);
544 ir::AstNode *FindAncestorGivenByType(ir::AstNode *node, ir::AstNodeType type, const ir::AstNode *endNode = nullptr);
553 std::optional<const ir::AstNode *> FindJumpTarget(ir::AstNode *node);
555 varbinder::VariableFlags GetAccessFlagFromNode(const ir::AstNode *node);
556 Type *CheckSwitchDiscriminant(ir::Expression *discriminant);
560 void AddBoxingUnboxingFlagsToNode(ir::AstNode *node, Type *boxingUnboxingType);
561 ir::BoxingUnboxingFlags GetBoxingFlag(Type *boxingType);
562 ir::BoxingUnboxingFlags GetUnboxingFlag(Type const *unboxingType) const;
563 Type *MaybeBoxExpression(ir::Expression *expr);
564 Type *MaybeUnboxExpression(ir::Expression *expr);
568 void CheckForSameSwitchCases(ArenaVector<ir::SwitchCaseStatement *> const &cases);
570 bool CompareIdentifiersValuesAreDifferent(ir::Expression *compareValue, const std::string &caseValue);
571 void CheckIdentifierSwitchCase(ir::Expression *currentCase, ir::Expression *compareCase,
573 std::string GetStringFromLiteral(ir::Expression *caseTest) const;
578 varbinder::Variable *FindVariableInGlobal(const ir::Identifier *identifier,
580 varbinder::Variable *ExtraCheckForResolvedError(ir::Identifier *ident);
581 void ValidateResolvedIdentifier(ir::Identifier *ident, varbinder::Variable *resolved);
585 void SaveCapturedVariable(varbinder::Variable *var, ir::Identifier *ident);
586 bool SaveCapturedVariableInLocalClass(varbinder::Variable *var, ir::Identifier *ident);
595 const ir::Identifier *ident, PropertySearchFlags flags);
596 bool IsValidSetterLeftSide(const ir::MemberExpression *member);
597 bool CheckRethrowingParams(const ir::AstNode *ancestorFunction, const ir::AstNode *node);
598 void CheckThrowingStatements(ir::AstNode *node);
599 bool CheckThrowingPlacement(ir::AstNode *node, const ir::AstNode *ancestorFunction);
600 bool CheckNumberOfTypeArguments(ETSObjectType *type, ir::TSTypeParameterInstantiation *typeArgs,
602 ir::BlockStatement *FindFinalizerOfTryStatement(ir::AstNode *startFrom, const ir::AstNode *p);
603 void CheckExceptionClauseType(const std::vector<checker::ETSObjectType *> &exceptions, ir::CatchClause *catchClause,
605 void CheckRethrowingFunction(ir::ScriptFunction *func);
609 util::StringView GetHashFromFunctionType(ir::ETSFunctionType *type);
611 void SetArrayPreferredTypeForNestedMemberExpressions(ir::MemberExpression *expr, Type *annotationType);
613 bool ValidateTupleMinElementSize(ir::ArrayExpression *arrayExpr, ETSTupleType *tuple);
614 void ModifyPreferredType(ir::ArrayExpression *arrayExpr, Type *newPreferredType);
617 ir::ClassProperty *ClassPropToImplementationProp(ir::ClassProperty *classProp, varbinder::ClassScope *scope);
618 ir::Expression *GenerateImplicitInstantiateArg(varbinder::LocalVariable *instantiateMethod,
620 void GenerateGetterSetterBody(ArenaVector<ir::Statement *> &stmts, ArenaVector<ir::Expression *> ¶ms,
621 ir::ClassProperty *field, varbinder::FunctionParamScope *paramScope, bool isSetter);
622 static ir::MethodDefinition *GenerateDefaultGetterSetter(ir::ClassProperty *property, ir::ClassProperty *field,
625 void GenerateGetterSetterPropertyAndMethod(ir::ClassProperty *originalProp, ETSObjectType *classType);
626 ETSObjectType *GetImportSpecifierObjectType(ir::ETSImportDeclaration *importDecl, ir::Identifier *ident);
627 void ImportNamespaceObjectTypeAddReExportType(ir::ETSImportDeclaration *importDecl,
628 checker::ETSObjectType *lastObjectType, ir::Identifier *ident);
630 checker::ETSObjectType *lastObjectType, ir::Identifier *id);
633 bool CheckVoidAnnotation(const ir::ETSPrimitiveType *typeAnnotation);
636 ir::TypeNode *GetUtilityTypeTypeParamNode(const ir::TSTypeParameterInstantiation *typeParams,
638 Type *HandleUtilityTypeParameterNode(const ir::TSTypeParameterInstantiation *typeParams,
642 ir::ClassProperty *CreateNullishProperty(ir::ClassProperty *prop, ir::ClassDefinition *newClassDefinition);
643 ir::ClassDefinition *CreatePartialClassDeclaration(ir::ClassDefinition *newClassDefinition,
644 const ir::ClassDefinition *classDef);
645 void CreateConstructorForPartialType(ir::ClassDefinition *partialClassDef, checker::ETSObjectType *partialType,
647 ir::ClassDefinition *CreateClassPrototype(util::StringView name, parser::Program *classDeclProgram);
652 Type *CreatePartialTypeClassDef(ir::ClassDefinition *partialClassDef, ir::ClassDefinition *classDef,
654 std::pair<ir::ScriptFunction *, ir::Identifier *> CreateScriptFunctionForConstructor(
656 ir::MethodDefinition *CreateNonStaticClassInitializer(varbinder::ClassScope *classScope,
659 Type *HandleReadonlyType(const ir::TSTypeParameterInstantiation *typeParams);
668 const ir::ObjectExpression *initObjExpr);
679 bool IsInLocalClass(const ir::AstNode *node) const;
688 Signature *ResolveDynamicCallExpression(ir::Expression *callee, const ArenaVector<T *> &arguments, Language lang,
690 ir::ClassProperty *CreateStaticReadonlyField(const char *name);
692 void BuildLambdaObjectClass(ETSObjectType *functionalInterface, ir::TypeNode *retTypeAnnotation);
694 void EnsureValidCurlyBrace(ir::CallExpression *callExpr);
697 void HandleUpdatedCallExpressionNode(ir::CallExpression *callExpr);
701 checker::Type *CheckArrayElements(ir::ArrayExpression *init);
703 ir::ScriptFunction *containingFunc, ir::ReturnStatement *st);
730 ETSObjectType *GetCachedFunctionalInterface(ir::ETSFunctionType *type);
731 void CacheFunctionalInterface(ir::ETSFunctionType *type, ETSObjectType *ifaceType);
732 void CollectReturnStatements(ir::AstNode *parent);
733 ir::ETSParameterExpression *AddParam(util::StringView name, ir::TypeNode *type);
735 [[nodiscard]] ir::ScriptFunction *FindFunction(ir::TSEnumDeclaration const *const enumDecl,
743 using ClassBuilder = std::function<void(ArenaVector<ir::AstNode *> *)>;
745 std::function<void(ArenaVector<ir::Statement *> *, ArenaVector<ir::Expression *> *)>;
746 using MethodBuilder = std::function<void(ArenaVector<ir::Statement *> *, ArenaVector<ir::Expression *> *, Type **)>;
748 ir::ClassStaticBlock *CreateClassStaticInitializer(const ClassInitializerBuilder &builder,
750 ir::MethodDefinition *CreateClassInstanceInitializer(const ClassInitializerBuilder &builder,
752 ir::MethodDefinition *CreateClassMethod(std::string_view name, ir::ScriptFunctionFlags funcFlags,
753 ir::ModifierFlags modifierFlags, const MethodBuilder &builder);
754 ir::ClassDeclaration *BuildClass(util::StringView name, const ClassBuilder &builder);
757 ETSEnumType::Method MakeMethod(ir::TSEnumDeclaration const *const enumDecl, const std::string_view &name,
760 std::pair<const ir::Identifier *, ir::TypeNode *> GetTargetIdentifierAndType(ir::Identifier *ident);
761 void LogUnResolvedError(ir::Identifier *ident);
764 void WrongContextErrorClassifyByType(ir::Identifier *ident, varbinder::Variable *resolved);
765 void CheckEtsFunctionType(ir::Identifier *ident, ir::Identifier const *id);
766 void NotResolvedError(ir::Identifier *const ident, const varbinder::Variable *classVar,
768 void ValidateCallExpressionIdentifier(ir::Identifier *const ident, varbinder::Variable *const resolved,
770 void ValidateNewClassInstanceIdentifier(ir::Identifier *const ident, varbinder::Variable *const resolved);
771 void ValidateMemberIdentifier(ir::Identifier *const ident, varbinder::Variable *const resolved, Type *const type);
772 void ValidatePropertyOrDeclaratorIdentifier(ir::Identifier *const ident, varbinder::Variable *const resolved);
773 void ValidateAssignmentIdentifier(ir::Identifier *const ident, varbinder::Variable *const resolved,
775 bool ValidateBinaryExpressionIdentifier(ir::Identifier *const ident, Type *const type);
776 void ValidateGetterSetter(const ir::MemberExpression *const memberExpr, const varbinder::LocalVariable *const prop,
778 ir::ClassProperty *FindClassProperty(const ETSObjectType *objectType, const ETSFunctionType *propType);
779 bool IsInitializedProperty(const ir::ClassDefinition *classDefinition, const ir::ClassProperty *prop);
780 bool FindPropertyInAssignment(const ir::AstNode *it, const std::string &targetName);
781 void ValidateReadonlyProperty(const ir::MemberExpression *memberExpr, const ETSFunctionType *propType,
783 void ValidateVarDeclaratorOrClassProperty(const ir::MemberExpression *memberExpr, varbinder::LocalVariable *prop);
785 const ir::MemberExpression *const memberExpr);
786 std::tuple<bool, bool> IsResolvedAndValue(const ir::Expression *expr, Type *type) const;
787 PropertySearchFlags GetSearchFlags(const ir::MemberExpression *memberExpr, const varbinder::Variable *targetRef);
788 PropertySearchFlags GetInitialSearchFlags(const ir::MemberExpression *memberExpr);
789 const varbinder::Variable *GetTargetRef(const ir::MemberExpression *memberExpr);
792 bool CheckInit(ir::Identifier *ident, ir::TypeNode *typeAnnotation, ir::Expression *init,
794 void CheckItemCasesConstant(ArenaVector<ir::SwitchCaseStatement *> const &cases);
795 void CheckItemCasesDuplicate(ArenaVector<ir::SwitchCaseStatement *> const &cases);
798 EnumType *CreateEnumTypeFromEnumDeclaration(ir::TSEnumDeclaration const *const enumDecl);
800 std::pair<ir::ScriptFunction *, ir::Identifier *> CreateStaticScriptFunction(
802 std::pair<ir::ScriptFunction *, ir::Identifier *> CreateScriptFunction(ClassInitializerBuilder const &builder);
805 ir::MethodDefinition *CreateDynamicCallIntrinsic(ir::Expression *callee, const ArenaVector<T *> &arguments,
807 ir::ClassStaticBlock *CreateDynamicCallClassInitializer(Language lang, bool isConstruct);
808 ir::ClassStaticBlock *CreateDynamicModuleClassInitializer(const std::vector<ir::ETSImportDeclaration *> &imports);
809 ir::MethodDefinition *CreateDynamicModuleClassInitMethod();
811 ir::MethodDefinition *CreateLambdaObjectClassInitializer(ETSObjectType *functionalInterface);
813 ir::MethodDefinition *CreateLambdaObjectClassInvokeMethod(Signature *invokeSignature,
814 ir::TypeNode *retTypeAnnotation);
816 void ClassInitializerFromImport(ir::ETSImportDeclaration *import, ArenaVector<ir::Statement *> *statements);
823 ir::ClassDeclaration *GetDynamicClass(Language lang, bool isConstruct);
827 bool CheckTypeParameterConstraint(ir::TSTypeParameter *param, Type2TypeMap &extends);
828 bool CheckDefaultTypeParameter(const ir::TSTypeParameter *param, TypeSet &typeParameterDecls);
830 void SetUpTypeParameterConstraint(ir::TSTypeParameter *param);
833 ETSObjectType *CreateETSObjectTypeCheckBuiltins(util::StringView name, ir::AstNode *declNode, ETSObjectFlags flags);
851 const ArenaVector<ir::Expression *> &arguments,
854 const ir::TSTypeParameterInstantiation *typeArguments,
855 const ArenaVector<ir::Expression *> &arguments,
858 void MoveTrailingBlockToEnclosingBlockStatement(ir::CallExpression *callExpr);
859 void TransformTraillingLambda(ir::CallExpression *callExpr);
860 ArenaVector<ir::Expression *> ExtendArgumentsWithFakeLamda(ir::CallExpression *callExpr);
863 bool TryTransformingToStaticInvoke(ir::Identifier *ident, const Type *resolvedType);