Lines Matching refs:ir

26 #include "ir/visitor/IterateAstVisitor.h"
27 #include "ir/expressions/literals/undefinedLiteral.h"
28 #include "ir/expressions/blockExpression.h"
29 #include "ir/ets/etsUnionType.h"
30 #include "ir/ets/etsTuple.h"
38 class ScopesInitPhase : public Phase, public ir::visitor::IterateAstVisitor {
85 void CallFuncParams(const ArenaVector<ir::Expression *> &params);
86 void IterateNoTParams(ir::ClassDefinition *classDef);
91 void VisitFunctionExpression(ir::FunctionExpression *funcExpr) override;
92 void VisitScriptFunction(ir::ScriptFunction *scriptFunction) override;
93 void VisitBlockStatement(ir::BlockStatement *blockStmt) override;
94 void VisitImportDeclaration(ir::ImportDeclaration *importDeclaration) override;
95 void VisitClassStaticBlock(ir::ClassStaticBlock *staticBlock) override;
96 void VisitClassDefinition(ir::ClassDefinition *classDef) override;
97 void VisitMethodDefinition(ir::MethodDefinition *methodDefinition) override;
98 void VisitForUpdateStatement(ir::ForUpdateStatement *forUpdateStmt) override;
99 void VisitForInStatement(ir::ForInStatement *forInStmt) override;
100 void VisitForOfStatement(ir::ForOfStatement *forOfStmt) override;
101 void VisitCatchClause(ir::CatchClause *catchClause) override;
102 void VisitVariableDeclarator(ir::VariableDeclarator *varDecl) override;
103 void VisitSwitchStatement(ir::SwitchStatement *switchStmt) override;
104 void VisitWhileStatement(ir::WhileStatement *whileStmt) override;
105 void VisitETSStructDeclaration(ir::ETSStructDeclaration *structDecl) override;
106 void VisitClassDeclaration(ir::ClassDeclaration *classDecl) override;
107 void VisitDoWhileStatement(ir::DoWhileStatement *doWhileStmt) override;
108 void VisitFunctionDeclaration(ir::FunctionDeclaration *funcDecl) override;
109 void VisitExportAllDeclaration(ir::ExportAllDeclaration *exportAllDecl) override;
110 void VisitImportNamespaceSpecifier(ir::ImportNamespaceSpecifier *importSpec) override;
111 void VisitImportSpecifier(ir::ImportSpecifier *importSpec) override;
112 void VisitImportDefaultSpecifier(ir::ImportDefaultSpecifier *importSpec) override;
113 void VisitExportDefaultDeclaration(ir::ExportDefaultDeclaration *exportDecl) override;
114 void VisitExportNamedDeclaration(ir::ExportNamedDeclaration *exportDecl) override;
115 void VisitArrowFunctionExpression(ir::ArrowFunctionExpression *arrowExpr) override;
116 void VisitDirectEvalExpression(ir::DirectEvalExpression *directCallExpr) override;
117 void VisitTSFunctionType(ir::TSFunctionType *funcType) override;
151 virtual void CreateFuncDecl(ir::ScriptFunction *func);
152 virtual util::StringView FormInterfaceOrEnumDeclarationIdBinding(ir::Identifier *id);
153 void HandleFunction(ir::ScriptFunction *function);
154 varbinder::FunctionParamScope *HandleFunctionSig(ir::TSTypeParameterDeclaration *typeParams,
155 const ir::FunctionSignature::FunctionParams &params,
156 ir::TypeNode *returnType);
161 void HandleBlockStmt(ir::BlockStatement *block, varbinder::Scope *scope);
172 virtual varbinder::Decl *BindClassName(ir::ClassDefinition *classDef);
185 void BindClassDefinition(ir::ClassDefinition *classDef);
187 std::tuple<varbinder::Decl *, varbinder::Variable *> AddOrGetVarDecl(ir::VariableDeclaratorFlag flag,
189 const ir::Identifier *id);
191 virtual void BindVarDecl([[maybe_unused]] ir::Identifier *binding, ir::Expression *init, varbinder::Decl *decl,
193 virtual void AttachLabelToScope(ir::AstNode *node);
206 void VisitTSModuleDeclaration(ir::TSModuleDeclaration *moduleDecl) override;
208 void VisitTSModuleBlock(ir::TSModuleBlock *block) override;
210 void VisitTSTypeAliasDeclaration(ir::TSTypeAliasDeclaration *typeAliasDecl) override;
212 util::StringView FormInterfaceOrEnumDeclarationIdBinding(ir::Identifier *id) override;
219 void VisitTSInterfaceDeclaration(ir::TSInterfaceDeclaration *interfDecl) override;
221 void VisitTSEnumMember(ir::TSEnumMember *enumMember) override;
223 void VisitTSEnumDeclaration(ir::TSEnumDeclaration *enumDecl) override;
225 void VisitTSTypeParameter(ir::TSTypeParameter *typeParam) override;
227 void VisitTSTypeParameterDeclaration(ir::TSTypeParameterDeclaration *paramDecl) override;
229 void VisitClassDefinition(ir::ClassDefinition *classDef) override;
248 void VisitTSMappedType([[maybe_unused]] ir::TSMappedType *mapped) override {}
249 void VisitTSInferType([[maybe_unused]] ir::TSInferType *infer) override {}
250 void VisitExportDefaultDeclaration(ir::ExportDefaultDeclaration *exportDecl) override;
251 void VisitExportNamedDeclaration(ir::ExportNamedDeclaration *exportDecl) override;
252 void VisitImportDeclaration(ir::ImportDeclaration *importDeclaration) override;
253 void VisitTSFunctionType(ir::TSFunctionType *constrType) override;
254 void VisitTSConstructorType(ir::TSConstructorType *constrT) override;
255 void VisitArrowFunctionExpression(ir::ArrowFunctionExpression *arrowFExpr) override;
256 void VisitTSSignatureDeclaration(ir::TSSignatureDeclaration *signDecl) override;
257 void VisitTSMethodSignature(ir::TSMethodSignature *methodSign) override;
259 void CreateFuncDecl(ir::ScriptFunction *func) override;
292 * Then you should pass your new created node = ir::BlockStatement() to RunExternalNode,
304 static void RunExternalNode(ir::AstNode *node, varbinder::VarBinder *varbinder);
308 static void RunExternalNode(ir::AstNode *node, parser::Program *ctx);
324 void HandleETSScript(ir::BlockStatement *script);
326 void ParseGlobalClass(ir::ClassDefinition *global);
328 void AddGlobalDeclaration(ir::AstNode *node);
330 varbinder::Decl *BindClassName([[maybe_unused]] ir::ClassDefinition *identNode) override
335 void BindVarDecl(ir::Identifier *binding, ir::Expression *init, varbinder::Decl *decl,
337 void DeclareClassMethod(ir::MethodDefinition *method);
338 void MaybeAddOverload(ir::MethodDefinition *method, ir::Identifier *methodName, varbinder::Variable *found,
341 void VisitClassStaticBlock(ir::ClassStaticBlock *staticBlock) override;
342 void VisitBlockExpression(ir::BlockExpression *blockExpr) override;
343 void VisitImportNamespaceSpecifier(ir::ImportNamespaceSpecifier *importSpec) override;
344 void VisitImportSpecifier([[maybe_unused]] ir::ImportSpecifier *importSpec) override;
345 void VisitImportDefaultSpecifier([[maybe_unused]] ir::ImportDefaultSpecifier *importSpec) override {};
346 void VisitETSReExportDeclaration(ir::ETSReExportDeclaration *reExport) override;
347 void VisitETSParameterExpression(ir::ETSParameterExpression *paramExpr) override;
348 void VisitETSImportDeclaration(ir::ETSImportDeclaration *importDecl) override;
349 void VisitTSEnumMember(ir::TSEnumMember *enumMember) override;
350 void VisitMethodDefinition(ir::MethodDefinition *method) override;
351 void VisitETSFunctionType(ir::ETSFunctionType *funcType) override;
352 void VisitETSNewClassInstanceExpression(ir::ETSNewClassInstanceExpression *newClassExpr) override;
353 void VisitTSTypeParameter(ir::TSTypeParameter *typeParam) override;
354 void VisitTSInterfaceDeclaration(ir::TSInterfaceDeclaration *interfaceDecl) override;
355 void VisitTSEnumDeclaration(ir::TSEnumDeclaration *enumDecl) override;
356 void VisitTSTypeAliasDeclaration(ir::TSTypeAliasDeclaration *typeAlias) override;
357 void VisitClassDefinition(ir::ClassDefinition *classDef) override;
358 void VisitTSInterfaceBody(ir::TSInterfaceBody *interfBody) override;
359 void VisitClassProperty(ir::ClassProperty *classProp) override;
360 void VisitBreakStatement(ir::BreakStatement *stmt) override;
361 void VisitContinueStatement(ir::ContinueStatement *stmt) override;
362 void AttachLabelToScope(ir::AstNode *node) override;
363 void VisitArrowFunctionExpression(ir::ArrowFunctionExpression *arrowExpr) override
368 util::StringView FormInterfaceOrEnumDeclarationIdBinding(ir::Identifier *id) override
375 void FilterInterfaceOverloads(ArenaVector<ir::AstNode *> &props);
377 void FilterOverloads(ArenaVector<ir::AstNode *> &props);
388 void VisitArrowFunctionExpression(ir::ArrowFunctionExpression *arrowExpr) override;
389 void VisitExportNamedDeclaration(ir::ExportNamedDeclaration *exportDecl) override;