Lines Matching full:ir
20 #include "ir/base/scriptFunctionSignature.h"
129 ir::VariableDeclaratorFlag GetFlag(VariableParsingFlags flags);
133 ir::Property *ParseShorthandProperty(const lexer::LexerPosition *startPos);
135 …bool ParsePropertyModifiers(ExpressionParseFlags flags, ir::PropertyKind *propertyKind, ParserStat…
136 …ir::Expression *ParsePropertyValue(const ir::PropertyKind *propertyKind, const ParserStatus *metho…
143 ir::Expression *ParseKeywordExpression();
144 … ir::Expression *ParseBinaryExpression(ir::Expression *left, const lexer::TokenType operatorType);
145 void ValidateUpdateExpression(ir::Expression *returnExpression, bool isChainExpression);
146 ir::Expression *ParseMemberExpression(bool ignoreCallExpression = false,
148 ir::Expression *SetupChainExpr(ir::Expression *const top, lexer::SourcePosition startLoc);
149 ir::MetaProperty *ParsePotentialNewTarget();
150 void ValidateParenthesizedExpression(ir::Expression *lhsExpression);
151 void ValidateGroupedExpression(ir::Expression *lhsExpression);
152 ir::Expression *ParseImportExpression();
153 ir::Expression *ParseOptionalChain(ir::Expression *leftSideExpr);
154 virtual ir::Expression *ParsePropertyKey(ExpressionParseFlags flags);
155 void ValidateAssignmentTarget(ExpressionParseFlags flags, ir::Expression *node);
156 void ValidateLvalueAssignmentTarget(ir::Expression *node);
157 void ValidateArrowParameterBindings(const ir::Expression *node);
158 ir::Identifier *ParseNamedExport(lexer::Token *exportedToken);
159 virtual void ParseTrailingBlock([[maybe_unused]] ir::CallExpression *callExpr) {} in ParseTrailingBlock()
160 ir::Expression *CreateBinaryAssignmentExpression(ir::Expression *assignmentExpression,
161 … ir::Expression *lhsExpression, lexer::TokenType tokenType);
166 void CheckLabelledFunction(const ir::Statement *node);
167 bool ParseDirective(ArenaVector<ir::Statement *> *statements);
168 void ParseDirectivePrologue(ArenaVector<ir::Statement *> *statements);
169 ir::BlockStatement *ParseFunctionBody();
170 std::tuple<ForStatementKind, ir::AstNode *, ir::Expression *, ir::Expression *> ParseIsForInOf(
171 ir::Expression *leftNode, ExpressionParseFlags exprFlags);
172 std::tuple<ForStatementKind, ir::AstNode *, ir::Expression *, ir::Expression *> ParseForInOf(
173 ir::Expression *leftNode, ExpressionParseFlags exprFlags, bool isAwait);
174 …std::tuple<ForStatementKind, ir::Expression *, ir::Expression *> ParseForInOf(ir::AstNode *initNod…
177 std::tuple<ir::Expression *, ir::Expression *> ParseForUpdate(bool isAwait);
178 std::tuple<ir::Expression *, ir::Statement *> ParseForLoopInitializer();
179 ir::SwitchCaseStatement *ParseSwitchCaseStatement(bool *seenDefault);
180 virtual ir::Expression *ParseCatchParam();
181 ir::CatchClause *ParseCatchClause();
182 ir::VariableDeclaration *ParseContextualLet(VariableParsingFlags flags,
184 ir::Statement *CreateForStatement(struct ForStatementNodes &&nodes, ForStatementKind forKind,
211 void LogParameterModifierError(ir::ModifierFlags status);
213 ir::Statement *AllocEmptyStatement();
214 ir::Statement *AllocBrokenStatement(const lexer::SourcePosition &pos);
215 ir::Statement *AllocBrokenStatement(const lexer::SourceRange &range);
216 bool IsBrokenStatement(ir::Statement *st);
227 ir::Identifier *AllocBrokenExpression(const lexer::SourcePosition &pos);
228 ir::Identifier *AllocBrokenExpression(const lexer::SourceRange &range);
229 ir::TypeNode *AllocBrokenType(const lexer::SourcePosition &pos);
230 ir::TypeNode *AllocBrokenType(const lexer::SourceRange &range);
246 ir::Identifier *ExpectIdentifier(bool isReference = false, bool isUserDefinedType = false,
252 … ir::SpreadElement *ParseSpreadElement(ExpressionParseFlags flags = ExpressionParseFlags::NO_OPTS);
253 ir::YieldExpression *ParseYieldExpression();
254 …virtual ir::Expression *ParsePotentialExpressionSequence(ir::Expression *expr, ExpressionParseFlag…
255 …ir::ArrowFunctionExpression *ParseArrowFunctionExpressionBody(ArrowFunctionContext *arrowFunctionC…
257 … ir::TSTypeParameterDeclaration *typeParamDecl,
258 … ir::TypeNode *returnTypeAnnotation);
259 ir::Expression *ParseAssignmentExpressionHelper();
260 ir::Expression *ParseAssignmentExpression(ir::Expression *lhsExpression,
262 …ir::Expression *ParseAssignmentBinaryExpression(lexer::TokenType tokenType, ir::Expression *lhsExp…
264 …ir::Expression *ParseAssignmentEqualExpression(lexer::TokenType tokenType, ir::Expression *lhsExpr…
266 …ir::SequenceExpression *ParseSequenceExpression(ir::Expression *startExpr, bool acceptRest = false…
267 ir::FunctionExpression *ParseFunctionExpression(ParserStatus newStatus = ParserStatus::NO_OPTS);
268 ir::ArrowFunctionExpression *ParseArrowFunctionExpression(ir::Expression *expr,
269 … ir::TSTypeParameterDeclaration *typeParamDecl,
270 … ir::TypeNode *returnTypeAnnotation, bool isAsync);
271 ir::CallExpression *ParseCallExpression(ir::Expression *callee, bool isOptionalChain = false,
273 …ArenaVector<ir::Expression *> ParseCallExpressionArguments(bool &trailingComma, lexer::SourcePosit…
275 ir::TemplateLiteral *ParseTemplateLiteral();
276 …ir::Expression *ParseLeftHandSideExpression(ExpressionParseFlags flags = ExpressionParseFlags::NO_…
277 void ParseNameSpaceImport(ArenaVector<ir::AstNode *> *specifiers);
278 void ParseNamedImportSpecifiers(ArenaVector<ir::AstNode *> *specifiers);
279 ir::StringLiteral *ParseFromClause(bool requireFrom = true);
281 ir::BooleanLiteral *ParseBooleanLiteral();
282 ir::NullLiteral *ParseNullLiteral();
283 ir::Literal *ParseNumberLiteral();
284 ir::CharLiteral *ParseCharLiteral();
285 ir::StringLiteral *ParseStringLiteral();
286 ir::UndefinedLiteral *ParseUndefinedLiteral();
287 virtual ir::ThisExpression *ParseThisExpression();
288 ir::RegExpLiteral *ParseRegularExpression();
289 ir::SuperExpression *ParseSuperExpression();
290 ir::MemberExpression *ParseElementAccess(ir::Expression *primaryExpr, bool isOptional = false);
291 ir::MemberExpression *ParsePrivatePropertyAccess(ir::Expression *primaryExpr);
292 ir::MemberExpression *ParsePropertyAccess(ir::Expression *primaryExpr, bool isOptional = false);
293 …void CreateAmendedBinaryExpression(ir::Expression *left, ir::Expression *right, lexer::TokenType o…
296 …ArenaVector<ir::Statement *> ParseStatementList(StatementParsingFlags flags = StatementParsingFlag…
298 ir::BlockStatement *ParseBlockStatement();
299 ir::EmptyStatement *ParseEmptyStatement();
300 ir::Statement *ParseForStatement();
301 ir::Statement *ParseIfStatement();
302 virtual ir::Statement *ParseFunctionStatement(StatementParsingFlags flags);
304 …virtual ir::Statement *ParseClassStatement(StatementParsingFlags flags, ir::ClassDefinitionModifie…
305 … ir::ModifierFlags modFlags = ir::ModifierFlags::NONE);
307 …virtual ir::Statement *ParseStructStatement(StatementParsingFlags flags, ir::ClassDefinitionModifi…
308 … ir::ModifierFlags modFlags = ir::ModifierFlags::NONE);
310 virtual ir::Statement *ParseInterfaceStatement(StatementParsingFlags flags);
311 ir::Statement *ParseStatementBasedOnTokenType(StatementParsingFlags flags);
312 ir::Statement *ParseVarStatement();
313 ir::Statement *ParseLetStatement(StatementParsingFlags flags);
314 ir::Statement *ParseBreakStatement();
315 ir::Statement *ParseContinueStatement();
316 ir::Statement *ParseDoWhileStatement();
317 ir::Statement *ParseWhileStatement();
318 ir::Statement *ParseSwitchStatement();
319 ir::Statement *ParseReturnStatement();
320 …ir::Statement *ParseExpressionStatement(StatementParsingFlags flags = StatementParsingFlags::NONE);
321 ir::Statement *ParseLabelledStatement(const lexer::LexerPosition &pos);
322 virtual void ValidateRestParameter(ir::Expression *param);
327 ir::MethodDefinition *BuildImplicitConstructor(ir::ClassDefinitionModifiers modifiers,
330 …virtual void CreateImplicitConstructor(ir::MethodDefinition *&ctor, ArenaVector<ir::AstNode *> &pr…
331 … ir::ClassDefinitionModifiers modifiers, ir::ModifierFlags flags,
335 ir::Expression *ParseClassKey(ClassElementDescriptor *desc);
336 …ir::ClassElement *ParseClassProperty(ClassElementDescriptor *desc, const ArenaVector<ir::AstNode *…
337 ir::Expression *propName, ir::TypeNode *typeAnnotation);
338 void AddPrivateElement(const ir::ClassElement *elem);
339 ir::ScriptFunction *ParseFunction(ParserStatus newStatus = ParserStatus::NO_OPTS);
340 ir::ModifierFlags GetAccessability(ir::ModifierFlags modifiers);
341 …void CheckAccessorPair(const ArenaVector<ir::AstNode *> &properties, const ir::Expression *propNam…
342 ir::MethodDefinitionKind methodKind, ir::ModifierFlags access);
343 ir::Identifier *ParseNamedImport(lexer::Token *importedToken);
344 void ConsumeSemicolon(ir::Statement *statement);
345 ir::ExportAllDeclaration *ParseExportAllDeclaration(const lexer::SourcePosition &startLoc);
346 ir::ExportNamedDeclaration *ParseExportNamedSpecifiers(const lexer::SourcePosition &startLoc);
347 …ir::Statement *ParseVariableDeclaration(VariableParsingFlags flags = VariableParsingFlags::NO_OPTS…
353 ir::VariableDeclarator *ParseVariableDeclarator(VariableParsingFlags flags);
354 ir::FunctionDeclaration *ParseFunctionDeclaration(bool canBeAnonymous = false,
356 ir::Statement *ParseStructDeclaration(ir::ClassDefinitionModifiers modifiers,
357 ir::ModifierFlags flags = ir::ModifierFlags::NONE);
358 ir::Statement *ParseClassDeclaration(ir::ClassDefinitionModifiers modifiers,
359 ir::ModifierFlags flags = ir::ModifierFlags::NONE);
364 …ir::Statement *ParseStatementLiteralIdentHelper(StatementParsingFlags flags = StatementParsingFlag…
366 …ir::Statement *ParseStatementControlFlowTokenHelper(StatementParsingFlags flags = StatementParsing…
368 …ir::Statement *ParseStatementPunctuatorsHelper(StatementParsingFlags flags = StatementParsingFlags…
370 … virtual ir::Statement *ParseStatement(StatementParsingFlags flags = StatementParsingFlags::NONE);
372 …virtual ir::Expression *ParseExpression(ExpressionParseFlags flags = ExpressionParseFlags::NO_OPTS…
374 …virtual ir::Expression *ParseExpressionOrTypeAnnotation(lexer::TokenType type, ExpressionParseFlag…
376 …virtual ir::Expression *ParsePatternElement(ExpressionParseFlags flags = ExpressionParseFlags::NO_…
379 …virtual bool ParsePotentialNonNullExpression(ir::Expression **returnExpression, lexer::SourcePosit…
380 virtual ir::AstNode *ParseImportSpecifiers(ArenaVector<ir::AstNode *> *specifiers);
381 virtual ir::Statement *ParseImportDeclaration(StatementParsingFlags flags);
383 virtual ir::Expression *ParsePropertyDefinition(
386 …virtual ir::ObjectExpression *ParseObjectExpression(ExpressionParseFlags flags = ExpressionParseFl…
389 … virtual ir::ArrayExpression *ParseArrayExpression(ExpressionParseFlags flags, bool allowOmitted);
390 virtual ir::ArrayExpression *ParseArrayExpression(ExpressionParseFlags flags);
391 …void ParseArrayExpressionErrorCheck(ir::ArrayExpression *arrayExpressionNode, ExpressionParseFlags…
393 …virtual ir::ArrowFunctionExpression *ParsePotentialArrowExpression(ir::Expression **returnExpressi…
395 …virtual bool ParsePotentialGenericFunctionCall(ir::Expression *primaryExpr, ir::Expression **retur…
397 virtual ir::Expression *ParsePotentialAsExpression(ir::Expression *primaryExpression);
399 virtual ir::Identifier *ParsePrimaryExpressionIdent(ExpressionParseFlags flags);
400 virtual bool ValidateArrowFunctionRestParameter(ir::SpreadElement *restElement);
401 virtual ir::Statement *ParsePotentialExpressionStatement(StatementParsingFlags flags);
402 virtual ArenaVector<ir::Expression *> ParseFunctionParams();
403 virtual ir::Expression *CreateParameterThis(ir::TypeNode *typeAnnotation);
404 virtual ir::Expression *ParseFunctionParameter();
406 virtual void ParseCatchParamTypeAnnotation(ir::AnnotatedExpression *param);
408 virtual ir::ClassDefinition *ParseClassDefinition(ir::ClassDefinitionModifiers modifiers,
409 … ir::ModifierFlags flags = ir::ModifierFlags::NONE);
410 virtual ir::Identifier *ParseClassIdent(ir::ClassDefinitionModifiers modifiers);
411 virtual ir::Statement *ParsePotentialConstEnum(VariableParsingFlags flags);
412 virtual ir::AstNode *ParseClassElement(const ArenaVector<ir::AstNode *> &properties,
413 … ir::ClassDefinitionModifiers modifiers, ir::ModifierFlags flags);
414 virtual bool CheckClassElement(ir::AstNode *property, ir::MethodDefinition *&ctor,
415 ArenaVector<ir::AstNode *> &properties);
416 … virtual void ValidateClassMethodStart(ClassElementDescriptor *desc, ir::TypeNode *typeAnnotation);
417 virtual ir::MethodDefinition *ParseClassMethod(ClassElementDescriptor *desc,
418 const ArenaVector<ir::AstNode *> &properties,
419 … ir::Expression *propName, lexer::SourcePosition *propEnd);
420 void ValidateGetterSetter(ir::MethodDefinitionKind methodDefinition, size_t number);
421 …virtual void ValidateClassSetter(ClassElementDescriptor *desc, const ArenaVector<ir::AstNode *> &p…
422 ir::Expression *propName, ir::ScriptFunction *func);
423 …virtual void ValidateClassGetter(ClassElementDescriptor *desc, const ArenaVector<ir::AstNode *> &p…
424 ir::Expression *propName, ir::ScriptFunction *func);
425 virtual ir::ModifierFlags ParseModifiers();
426 virtual ir::Statement *ParseConstStatement(StatementParsingFlags flags);
428 virtual ir::AnnotatedExpression *ParseVariableDeclaratorKey(VariableParsingFlags flags);
429 virtual ir::Statement *ParseAnnotationsInStatement(StatementParsingFlags flags);
430 …virtual ir::VariableDeclarator *ParseVariableDeclarator(ir::Expression *init, lexer::SourcePositio…
432 …virtual ir::VariableDeclarator *ParseVariableDeclaratorInitializer(ir::Expression *init, VariableP…
439 virtual void ReportIfBodyEmptyError(ir::Statement *consequent);
443 virtual ir::Expression *ParsePrefixAssertionExpression();
445 virtual ir::Expression *ParseCoverParenthesizedExpressionAndArrowParameterList(
447 virtual void CheckIfStaticConstructor(ir::ModifierFlags flags);
448 …virtual std::tuple<bool, bool, bool> ParseComputedClassFieldOrIndexSignature(ir::Expression **prop…
450 virtual ir::Expression *ParseUnaryOrPrefixUpdateExpression(
452 virtual ir::Expression *ParsePrimaryExpressionWithLiterals(ExpressionParseFlags flags);
453 ir::Expression *ParseHashMaskOperator();
454 ir::Expression *ParseClassExpression();
455 ir::Expression *ParsePunctuators(ExpressionParseFlags flags);
457 …virtual ir::Expression *ParsePrimaryExpression(ExpressionParseFlags flags = ExpressionParseFlags::…
458 …virtual ir::Expression *ParsePostPrimaryExpression(ir::Expression *primaryExpr, lexer::SourcePosit…
460 ir::Expression *ParsePostPrimaryExpressionBackTick(ir::Expression *returnExpression,
462 …ir::Expression *ParsePostPrimaryExpressionDot(ir::Expression *returnExpression, lexer::TokenType t…
464 virtual ir::ClassElement *ParseClassStaticBlock();
465 virtual ParserStatus ValidateArrowParameter(ir::Expression *expr, bool *seenOptional);
466 void ValidateArrowParameterAssignment(ir::AssignmentExpression *expr);
467 virtual ArrowFunctionDescriptor ConvertToArrowParameter(ir::Expression *expr, bool isAsync);
468 virtual ir::Expression *ParseNewExpression();
470 virtual ir::TSTypeParameterDeclaration *ParseFunctionTypeParameters() in ParseFunctionTypeParameters()
475 virtual ir::TypeNode *ParseFunctionReturnType([[maybe_unused]] ParserStatus status) in ParseFunctionReturnType()
480 …virtual ir::ScriptFunctionFlags ParseFunctionThrowMarker([[maybe_unused]] const bool isRethrowsAll… in ParseFunctionThrowMarker()
482 return ir::ScriptFunctionFlags::NONE; in ParseFunctionThrowMarker()
486 …virtual ir::Identifier *ParseIdentifierFormatPlaceholder(std::optional<NodeFormatType> nodeFormat);
487 virtual ir::Statement *ParseStatementFormatPlaceholder();
488 virtual ir::AstNode *ParseTypeParametersFormatPlaceholder();
489 virtual ArenaVector<ir::AstNode *> &ParseAstNodesArrayFormatPlaceholder();
490 virtual ArenaVector<ir::Statement *> &ParseStatementsArrayFormatPlaceholder();
491 virtual ArenaVector<ir::Expression *> &ParseExpressionsArrayFormatPlaceholder();
493 virtual std::tuple<bool, ir::BlockStatement *, lexer::SourcePosition, bool> ParseFunctionBody(
494 … const ArenaVector<ir::Expression *> ¶ms, ParserStatus newStatus, ParserStatus contextStatus);
495 virtual ir::AstNode *ParseImportDefaultSpecifier(ArenaVector<ir::AstNode *> *specifiers);
496 virtual ir::Statement *ParseExportDeclaration(StatementParsingFlags flags);
499 …virtual ir::ExportDefaultDeclaration *ParseExportDefaultDeclaration(const lexer::SourcePosition &s…
501 virtual ir::Statement *ParseNamedExportDeclaration(const lexer::SourcePosition &startLoc);
507 virtual ir::Statement *ParseTryStatement();
508 virtual ir::Statement *ParseThrowStatement();
509 virtual ir::Statement *ParseDebuggerStatement();
511 …virtual ir::Statement *ParseModuleDeclaration(StatementParsingFlags flags = StatementParsingFlags:…
516 virtual ir::Statement *ParseInterfaceDeclaration([[maybe_unused]] bool isStatic) in ParseInterfaceDeclaration()
523 virtual ir::Statement *ParseEnumDeclaration([[maybe_unused]] bool isConst = false,
530 virtual std::tuple<ir::Expression *, ir::TSTypeParameterInstantiation *> ParseSuperClass();
531 virtual ir::Expression *ParseSuperClassReference();
533 …using ClassBody = std::tuple<ir::MethodDefinition *, ArenaVector<ir::AstNode *>, lexer::SourceRang…
534 …ClassBody ParseClassBody(ir::ClassDefinitionModifiers modifiers, ir::ModifierFlags flags = ir::Mod…
586 bool GetCanBeForInOf(ir::Expression *leftNode, ir::AstNode *initNode);