Lines Matching full:lexer
25 #include "lexer/TSLexer.h"
121 std::unique_ptr<lexer::Lexer> TSParser::InitLexer(const SourceFile &sourceFile) in InitLexer()
124 auto lexer = std::make_unique<lexer::TSLexer>(&GetContext(), ErrorLogger()); in InitLexer() local
125 SetLexer(lexer.get()); in InitLexer()
126 return lexer; in InitLexer()
131 ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_AT); in ParseDecorator()
133 lexer::SourcePosition start = Lexer()->GetToken().Start(); in ParseDecorator()
134 Lexer()->NextToken(); // eat '@' in ParseDecorator()
136 if (Lexer()->GetToken().Type() != lexer::TokenType::LITERAL_IDENT) { in ParseDecorator()
140 ir::Expression *expr = AllocNode<ir::Identifier>(Lexer()->GetToken().Ident(), Allocator()); in ParseDecorator()
141 expr->SetRange(Lexer()->GetToken().Loc()); in ParseDecorator()
142 Lexer()->NextToken(); in ParseDecorator()
144 while (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_PERIOD) { in ParseDecorator()
145 Lexer()->NextToken(lexer::NextTokenFlags::KEYWORD_TO_IDENT); in ParseDecorator()
147 if (Lexer()->GetToken().Type() != lexer::TokenType::LITERAL_IDENT) { in ParseDecorator()
151 auto *identNode = AllocNode<ir::Identifier>(Lexer()->GetToken().Ident(), Allocator()); in ParseDecorator()
152 identNode->SetRange(Lexer()->GetToken().Loc()); in ParseDecorator()
156 Lexer()->NextToken(); in ParseDecorator()
159 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS) { in ParseDecorator()
184 ASSERT(Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_TYPE); in ParseTypeAliasDeclaration()
185 lexer::SourcePosition typeStart = Lexer()->GetToken().Start(); in ParseTypeAliasDeclaration()
186 Lexer()->NextToken(); // eat type keyword in ParseTypeAliasDeclaration()
188 if (Lexer()->GetToken().Type() != lexer::TokenType::LITERAL_IDENT) { in ParseTypeAliasDeclaration()
192 if (Lexer()->GetToken().IsReservedTypeName()) { in ParseTypeAliasDeclaration()
194 errMsg.append(TokenToString(Lexer()->GetToken().KeywordType())); in ParseTypeAliasDeclaration()
199 const util::StringView &ident = Lexer()->GetToken().Ident(); in ParseTypeAliasDeclaration()
202 id->SetRange(Lexer()->GetToken().Loc()); in ParseTypeAliasDeclaration()
203 Lexer()->NextToken(); in ParseTypeAliasDeclaration()
206 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LESS_THAN) { in ParseTypeAliasDeclaration()
211 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_SUBSTITUTION) { in ParseTypeAliasDeclaration()
215 Lexer()->NextToken(); // eat '=' in ParseTypeAliasDeclaration()
221 typeAliasDecl->SetRange({typeStart, Lexer()->GetToken().End()}); in ParseTypeAliasDeclaration()
228 switch (Lexer()->GetToken().KeywordType()) { in CurrentLiteralIsBasicType()
229 case lexer::TokenType::KEYW_ANY: in CurrentLiteralIsBasicType()
230 case lexer::TokenType::KEYW_BOOLEAN: in CurrentLiteralIsBasicType()
231 case lexer::TokenType::KEYW_NUMBER: in CurrentLiteralIsBasicType()
232 case lexer::TokenType::KEYW_STRING: in CurrentLiteralIsBasicType()
233 case lexer::TokenType::KEYW_UNKNOWN: in CurrentLiteralIsBasicType()
234 case lexer::TokenType::KEYW_UNDEFINED: in CurrentLiteralIsBasicType()
235 case lexer::TokenType::KEYW_NEVER: in CurrentLiteralIsBasicType()
236 case lexer::TokenType::KEYW_OBJECT: in CurrentLiteralIsBasicType()
237 case lexer::TokenType::KEYW_BIGINT: { in CurrentLiteralIsBasicType()
250 switch (Lexer()->GetToken().Type()) { in CurrentIsBasicType()
251 case lexer::TokenType::LITERAL_NUMBER: in CurrentIsBasicType()
252 case lexer::TokenType::LITERAL_STRING: in CurrentIsBasicType()
253 case lexer::TokenType::LITERAL_FALSE: in CurrentIsBasicType()
254 case lexer::TokenType::LITERAL_TRUE: in CurrentIsBasicType()
255 case lexer::TokenType::LITERAL_NULL: in CurrentIsBasicType()
256 case lexer::TokenType::KEYW_THIS: in CurrentIsBasicType()
257 case lexer::TokenType::KEYW_VOID: { in CurrentIsBasicType()
260 case lexer::TokenType::LITERAL_IDENT: { in CurrentIsBasicType()
286 …if ((((*options) & TypeAnnotationParsingOptions::BREAK_AT_NEW_LINE) != 0) && Lexer()->GetToken().N… in ParseTypeAnnotation()
296 if (CurrentLiteralIsBasicType() && Lexer()->Lookahead() != lexer::LEX_CHAR_DOT) { in ParseIdentifierReference()
305 auto pos = Lexer()->Save(); in IsStartOfMappedType()
306 Lexer()->NextToken(); in IsStartOfMappedType()
309 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_MINUS || in IsStartOfMappedType()
310 Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_PLUS) { in IsStartOfMappedType()
311 Lexer()->NextToken(); in IsStartOfMappedType()
312 result = Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_READONLY; in IsStartOfMappedType()
313 Lexer()->Rewind(pos); in IsStartOfMappedType()
317 if (Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_READONLY) { in IsStartOfMappedType()
318 Lexer()->NextToken(); in IsStartOfMappedType()
321 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET) { in IsStartOfMappedType()
322 Lexer()->Rewind(pos); in IsStartOfMappedType()
326 Lexer()->NextToken(); in IsStartOfMappedType()
328 if (Lexer()->GetToken().Type() != lexer::TokenType::LITERAL_IDENT) { in IsStartOfMappedType()
329 Lexer()->Rewind(pos); in IsStartOfMappedType()
333 Lexer()->NextToken(); in IsStartOfMappedType()
335 result = Lexer()->GetToken().Type() == lexer::TokenType::KEYW_IN; in IsStartOfMappedType()
337 Lexer()->Rewind(pos); in IsStartOfMappedType()
343 ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::LITERAL_IDENT || in IsStartOfTypePredicate()
344 Lexer()->GetToken().Type() == lexer::TokenType::KEYW_THIS); in IsStartOfTypePredicate()
346 auto pos = Lexer()->Save(); in IsStartOfTypePredicate()
347 bool isAsserts = Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_ASSERTS; in IsStartOfTypePredicate()
349 Lexer()->NextToken(); in IsStartOfTypePredicate()
352 if (Lexer()->GetToken().Type() != lexer::TokenType::LITERAL_IDENT && in IsStartOfTypePredicate()
353 Lexer()->GetToken().Type() != lexer::TokenType::KEYW_THIS) { in IsStartOfTypePredicate()
354 Lexer()->Rewind(pos); in IsStartOfTypePredicate()
359 Lexer()->Rewind(pos); in IsStartOfTypePredicate()
363 Lexer()->NextToken(); in IsStartOfTypePredicate()
365 bool result = Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_IS; in IsStartOfTypePredicate()
366 Lexer()->Rewind(pos); in IsStartOfTypePredicate()
372 if (Lexer()->GetToken().KeywordType() != lexer::TokenType::KEYW_ABSTRACT) { in IsStartOfAbstractConstructorType()
376 lexer::LexerPosition pos = Lexer()->Save(); in IsStartOfAbstractConstructorType()
377 Lexer()->NextToken(); // eat 'abstract' in IsStartOfAbstractConstructorType()
378 bool result = Lexer()->GetToken().Type() == lexer::TokenType::KEYW_NEW; in IsStartOfAbstractConstructorType()
380 Lexer()->Rewind(pos); in IsStartOfAbstractConstructorType()
385 ir::TSImportType *TSParser::ParseImportType(const lexer::SourcePosition &startLoc, bool isTypeof) in ParseImportType()
387 ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::KEYW_IMPORT); in ParseImportType()
389 Lexer()->NextToken(); in ParseImportType()
391 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS) { in ParseImportType()
395 Lexer()->NextToken(); in ParseImportType()
404 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS) { in ParseImportType()
408 Lexer()->NextToken(); in ParseImportType()
411 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_PERIOD) { in ParseImportType()
412 Lexer()->NextToken(); in ParseImportType()
417 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_SHIFT || in ParseImportType()
418 Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LESS_THAN) { in ParseImportType()
419 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_SHIFT) { in ParseImportType()
420 Lexer()->BackwardToken(lexer::TokenType::PUNCTUATOR_LESS_THAN, 1); in ParseImportType()
428 importType->SetRange({startLoc, Lexer()->GetToken().End()}); in ParseImportType()
435 ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::KEYW_THIS); in ParseThisType()
444 returnType->SetRange(Lexer()->GetToken().Loc()); in ParseThisType()
446 Lexer()->NextToken(); in ParseThisType()
453 ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::KEYW_EXTENDS); in ParseConditionalType()
458 lexer::SourcePosition startLoc = checkType->Start(); in ParseConditionalType()
460 Lexer()->NextToken(); // eat 'extends' in ParseConditionalType()
471 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_QUESTION_MARK) { in ParseConditionalType()
475 Lexer()->NextToken(); // eat '?' in ParseConditionalType()
480 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_COLON) { in ParseConditionalType()
484 Lexer()->NextToken(); // eat ':' in ParseConditionalType()
488 lexer::SourcePosition endLoc = falseType->End(); in ParseConditionalType()
501 if (Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_READONLY) { in ParseTypeOperatorOrTypeReference()
502 lexer::SourcePosition typeOperatorStart = Lexer()->GetToken().Start(); in ParseTypeOperatorOrTypeReference()
503 Lexer()->NextToken(); in ParseTypeOperatorOrTypeReference()
520 if (Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_KEYOF) { in ParseTypeOperatorOrTypeReference()
521 lexer::SourcePosition typeOperatorStart = Lexer()->GetToken().Start(); in ParseTypeOperatorOrTypeReference()
522 Lexer()->NextToken(); in ParseTypeOperatorOrTypeReference()
533 if (Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_INFER) { in ParseTypeOperatorOrTypeReference()
540 lexer::SourcePosition inferStart = Lexer()->GetToken().Start(); in ParseTypeOperatorOrTypeReference()
541 Lexer()->NextToken(); in ParseTypeOperatorOrTypeReference()
547 inferType->SetRange({inferStart, Lexer()->GetToken().End()}); in ParseTypeOperatorOrTypeReference()
557 lexer::SourcePosition elementStart = Lexer()->GetToken().Start(); in ParseTupleElement()
562 …if (Lexer()->GetToken().Type() == lexer::TokenType::LITERAL_IDENT && !CurrentLiteralIsBasicType())… in ParseTupleElement()
563 auto *elementIdent = AllocNode<ir::Identifier>(Lexer()->GetToken().Ident(), Allocator()); in ParseTupleElement()
564 elementIdent->SetRange(Lexer()->GetToken().Loc()); in ParseTupleElement()
566 …if (Lexer()->Lookahead() == lexer::LEX_CHAR_COLON || Lexer()->Lookahead() == lexer::LEX_CHAR_QUEST… in ParseTupleElement()
571 Lexer()->NextToken(); // eat ident in ParseTupleElement()
573 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_QUESTION_MARK) { in ParseTupleElement()
574 Lexer()->NextToken(); // eat '?' in ParseTupleElement()
581 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_COLON) { in ParseTupleElement()
585 Lexer()->NextToken(); // eat ':' in ParseTupleElement()
593 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_COMMA && in ParseTupleElement()
594 Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET) { in ParseTupleElement()
607 element->SetRange({elementStart, Lexer()->GetToken().End()}); in ParseTupleElement()
614 ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET); in ParseTupleType()
615 lexer::SourcePosition tupleStart = Lexer()->GetToken().Start(); in ParseTupleType()
620 Lexer()->NextToken(); // eat '[' in ParseTupleType()
622 while (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET) { in ParseTupleType()
626 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET) { in ParseTupleType()
630 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_COMMA) { in ParseTupleType()
634 Lexer()->NextToken(); // eat ',' in ParseTupleType()
637 lexer::SourcePosition tupleEnd = Lexer()->GetToken().End(); in ParseTupleType()
638 Lexer()->NextToken(); // eat ']' in ParseTupleType()
650 Lexer()->NextToken(); // eat '[' in ParseIndexAccessType()
654 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET) { in ParseIndexAccessType()
658 Lexer()->NextToken(); // eat ']' in ParseIndexAccessType()
661 …typeName->SetRange({typeName->AsTSIndexedAccessType()->ObjectType()->Start(), Lexer()->GetToken().… in ParseIndexAccessType()
662 } while (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET && in ParseIndexAccessType()
663 Lexer()->Lookahead() != lexer::LEX_CHAR_RIGHT_SQUARE); in ParseIndexAccessType()
670 lexer::SourcePosition referenceStartLoc = Lexer()->GetToken().Start(); in ParseTypeReferenceOrQuery()
673 ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::KEYW_TYPEOF); in ParseTypeReferenceOrQuery()
674 Lexer()->NextToken(); // eat 'typeof' in ParseTypeReferenceOrQuery()
676 if (Lexer()->GetToken().Type() == lexer::TokenType::KEYW_IMPORT) { in ParseTypeReferenceOrQuery()
677 lexer::SourcePosition &startLoc = referenceStartLoc; in ParseTypeReferenceOrQuery()
681 if (Lexer()->GetToken().Type() != lexer::TokenType::LITERAL_IDENT) { in ParseTypeReferenceOrQuery()
686 ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::LITERAL_IDENT || in ParseTypeReferenceOrQuery()
687 Lexer()->GetToken().Type() == lexer::TokenType::KEYW_EXTENDS); in ParseTypeReferenceOrQuery()
689 ir::Expression *typeName = AllocNode<ir::Identifier>(Lexer()->GetToken().Ident(), Allocator()); in ParseTypeReferenceOrQuery()
690 typeName->SetRange(Lexer()->GetToken().Loc()); in ParseTypeReferenceOrQuery()
692 if (Lexer()->Lookahead() == lexer::LEX_CHAR_LESS_THAN) { in ParseTypeReferenceOrQuery()
693 Lexer()->ForwardToken(lexer::TokenType::PUNCTUATOR_LESS_THAN, 1); in ParseTypeReferenceOrQuery()
695 Lexer()->NextToken(); in ParseTypeReferenceOrQuery()
698 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_PERIOD) { in ParseTypeReferenceOrQuery()
703 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LESS_THAN) { in ParseTypeReferenceOrQuery()
712 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET && in ParseTypeReferenceOrQuery()
713 Lexer()->Lookahead() != lexer::LEX_CHAR_RIGHT_SQUARE) { in ParseTypeReferenceOrQuery()
717 typeRef->SetRange({referenceStartLoc, Lexer()->GetToken().End()}); in ParseTypeReferenceOrQuery()
732 lexer::SourcePosition startLoc = Lexer()->GetToken().Start(); in ParseMappedTypeParameter()
734 auto *paramName = AllocNode<ir::Identifier>(Lexer()->GetToken().Ident(), Allocator()); in ParseMappedTypeParameter()
735 paramName->SetRange({Lexer()->GetToken().Start(), Lexer()->GetToken().End()}); in ParseMappedTypeParameter()
737 Lexer()->NextToken(); in ParseMappedTypeParameter()
739 Lexer()->NextToken(); // eat 'in' in ParseMappedTypeParameter()
744 lexer::SourcePosition endLoc = constraint->End(); in ParseMappedTypeParameter()
753 ir::MappedOption TSParser::ParseMappedOption(lexer::TokenType tokenType) in ParseMappedOption()
755 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_MINUS && in ParseMappedOption()
756 Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_PLUS && in ParseMappedOption()
757 Lexer()->GetToken().KeywordType() != tokenType && Lexer()->GetToken().Type() != tokenType) { in ParseMappedOption()
761 …auto result = Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_MINUS ? ir::MappedOption:… in ParseMappedOption()
764 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_MINUS || in ParseMappedOption()
765 Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_PLUS) { in ParseMappedOption()
766 Lexer()->NextToken(); in ParseMappedOption()
769 if (Lexer()->GetToken().KeywordType() != tokenType && Lexer()->GetToken().Type() != tokenType) { in ParseMappedOption()
773 Lexer()->NextToken(); in ParseMappedOption()
780 ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_BRACE); in ParseMappedType()
782 lexer::SourcePosition startLoc = Lexer()->GetToken().Start(); in ParseMappedType()
783 Lexer()->NextToken(lexer::NextTokenFlags::KEYWORD_TO_IDENT); // eat '{' in ParseMappedType()
785 ir::MappedOption readonly = ParseMappedOption(lexer::TokenType::KEYW_READONLY); in ParseMappedType()
787 Lexer()->NextToken(); // eat '[' in ParseMappedType()
791 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET) { in ParseMappedType()
795 Lexer()->NextToken(); // eat ']' in ParseMappedType()
797 ir::MappedOption optional = ParseMappedOption(lexer::TokenType::PUNCTUATOR_QUESTION_MARK); in ParseMappedType()
800 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COLON) { in ParseMappedType()
801 Lexer()->NextToken(); // eat ':' in ParseMappedType()
806 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_SEMI_COLON && in ParseMappedType()
807 Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_BRACE) { in ParseMappedType()
811 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_SEMI_COLON) { in ParseMappedType()
812 Lexer()->NextToken(); // eat ';' in ParseMappedType()
815 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_BRACE) { in ParseMappedType()
821 mappedType->SetRange({startLoc, Lexer()->GetToken().End()}); in ParseMappedType()
823 Lexer()->NextToken(); // eat '}' in ParseMappedType()
830 auto pos = Lexer()->Save(); in ParseTypePredicate()
831 lexer::SourcePosition startPos = Lexer()->GetToken().Start(); in ParseTypePredicate()
832 bool isAsserts = Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_ASSERTS; in ParseTypePredicate()
834 Lexer()->NextToken(); // eat 'asserts' in ParseTypePredicate()
835 if (Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_IS) { in ParseTypePredicate()
837 Lexer()->Rewind(pos); in ParseTypePredicate()
842 if (Lexer()->GetToken().Type() == lexer::TokenType::LITERAL_IDENT) { in ParseTypePredicate()
843 parameterName = AllocNode<ir::Identifier>(Lexer()->GetToken().Ident(), Allocator()); in ParseTypePredicate()
848 parameterName->SetRange({Lexer()->GetToken().Start(), Lexer()->GetToken().End()}); in ParseTypePredicate()
850 Lexer()->NextToken(); in ParseTypePredicate()
853 lexer::SourcePosition endPos; in ParseTypePredicate()
856 if (isAsserts && Lexer()->GetToken().KeywordType() != lexer::TokenType::KEYW_IS) { in ParseTypePredicate()
863 Lexer()->NextToken(); // eat 'is' in ParseTypePredicate()
886 lexer::SourcePosition bodyStart = Lexer()->GetToken().Start(); in ParseTypeLiteralOrMappedType()
888 lexer::SourcePosition bodyEnd = Lexer()->GetToken().End(); in ParseTypeLiteralOrMappedType()
889 Lexer()->NextToken(); in ParseTypeLiteralOrMappedType()
927 ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET); in ParseArrayType()
928 Lexer()->NextToken(); // eat '[' in ParseArrayType()
930 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET) { in ParseArrayType()
934 lexer::SourcePosition endLoc = Lexer()->GetToken().End(); in ParseArrayType()
935 Lexer()->NextToken(); // eat ']' in ParseArrayType()
937 lexer::SourcePosition startLoc = elementType->Start(); in ParseArrayType()
947 lexer::SourcePosition startLoc; in ParseUnionType()
960 startLoc = Lexer()->GetToken().Start(); in ParseUnionType()
964 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_BITWISE_OR) { in ParseUnionType()
968 Lexer()->NextToken(); // eat '|' in ParseUnionType()
973 lexer::SourcePosition endLoc = types.back()->End(); in ParseUnionType()
986 lexer::SourcePosition startLoc; in ParseIntersectionType()
1003 startLoc = Lexer()->GetToken().Start(); in ParseIntersectionType()
1007 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_BITWISE_AND) { in ParseIntersectionType()
1011 Lexer()->NextToken(); // eat '&' in ParseIntersectionType()
1016 lexer::SourcePosition endLoc = types.back()->End(); in ParseIntersectionType()
1031 static ir::TypeNode *GetTypeAnnotationFromLiteral(TSParser *parser, lexer::Lexer *lexer) in GetTypeAnnotationFromLiteral() argument
1033 switch (lexer->GetToken().KeywordType()) { in GetTypeAnnotationFromLiteral()
1034 case lexer::TokenType::LITERAL_NUMBER: { in GetTypeAnnotationFromLiteral()
1035 if ((lexer->GetToken().Flags() & lexer::TokenFlags::NUMBER_BIGINT) != 0) { in GetTypeAnnotationFromLiteral()
1036 … auto *bigintNode = parser->AllocNode<ir::BigIntLiteral>(lexer->GetToken().BigInt()); in GetTypeAnnotationFromLiteral()
1037 bigintNode->SetRange(lexer->GetToken().Loc()); in GetTypeAnnotationFromLiteral()
1041 … auto *numberNode = parser->AllocNode<ir::NumberLiteral>(lexer->GetToken().GetNumber()); in GetTypeAnnotationFromLiteral()
1042 numberNode->SetRange(lexer->GetToken().Loc()); in GetTypeAnnotationFromLiteral()
1046 case lexer::TokenType::LITERAL_STRING: { in GetTypeAnnotationFromLiteral()
1047 auto *stringNode = parser->AllocNode<ir::StringLiteral>(lexer->GetToken().String()); in GetTypeAnnotationFromLiteral()
1048 stringNode->SetRange(lexer->GetToken().Loc()); in GetTypeAnnotationFromLiteral()
1052 case lexer::TokenType::LITERAL_TRUE: { in GetTypeAnnotationFromLiteral()
1054 booleanLiteral->SetRange(lexer->GetToken().Loc()); in GetTypeAnnotationFromLiteral()
1058 case lexer::TokenType::LITERAL_FALSE: { in GetTypeAnnotationFromLiteral()
1060 booleanLiteral->SetRange(lexer->GetToken().Loc()); in GetTypeAnnotationFromLiteral()
1064 case lexer::TokenType::LITERAL_NULL: { in GetTypeAnnotationFromLiteral()
1073 static ir::TypeNode *GetTypeAnnotation(TSParser *parser, lexer::Lexer *lexer) in GetTypeAnnotation() argument
1075 switch (lexer->GetToken().KeywordType()) { in GetTypeAnnotation()
1076 case lexer::TokenType::LITERAL_NUMBER: in GetTypeAnnotation()
1077 case lexer::TokenType::LITERAL_STRING: in GetTypeAnnotation()
1078 case lexer::TokenType::LITERAL_TRUE: in GetTypeAnnotation()
1079 case lexer::TokenType::LITERAL_FALSE: in GetTypeAnnotation()
1080 case lexer::TokenType::LITERAL_NULL: { in GetTypeAnnotation()
1081 return GetTypeAnnotationFromLiteral(parser, lexer); in GetTypeAnnotation()
1083 case lexer::TokenType::KEYW_ANY: { in GetTypeAnnotation()
1086 case lexer::TokenType::KEYW_BOOLEAN: { in GetTypeAnnotation()
1089 case lexer::TokenType::KEYW_NUMBER: { in GetTypeAnnotation()
1092 case lexer::TokenType::KEYW_STRING: { in GetTypeAnnotation()
1095 case lexer::TokenType::KEYW_UNKNOWN: { in GetTypeAnnotation()
1098 case lexer::TokenType::KEYW_VOID: { in GetTypeAnnotation()
1101 case lexer::TokenType::KEYW_UNDEFINED: { in GetTypeAnnotation()
1104 case lexer::TokenType::KEYW_NEVER: { in GetTypeAnnotation()
1107 case lexer::TokenType::KEYW_OBJECT: { in GetTypeAnnotation()
1110 case lexer::TokenType::KEYW_BIGINT: { in GetTypeAnnotation()
1121 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_MINUS) { in ParseBasicType()
1122 Lexer()->NextToken(); in ParseBasicType()
1124 if (Lexer()->GetToken().Type() != lexer::TokenType::LITERAL_NUMBER) { in ParseBasicType()
1129 ir::TypeNode *typeAnnotation = ParseBasicTypeHelper::GetTypeAnnotation(this, Lexer()); in ParseBasicType()
1131 typeAnnotation->SetRange(Lexer()->GetToken().Loc()); in ParseBasicType()
1133 Lexer()->NextToken(); in ParseBasicType()
1143 lexer::SourcePosition typeStart = Lexer()->GetToken().Start(); in ParseParenthesizedOrFunctionType()
1147 if (Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_ABSTRACT) { in ParseParenthesizedOrFunctionType()
1149 Lexer()->NextToken(); // eat 'abstract' in ParseParenthesizedOrFunctionType()
1154 if (Lexer()->GetToken().Type() == lexer::TokenType::KEYW_NEW) { in ParseParenthesizedOrFunctionType()
1155 Lexer()->NextToken(); // eat 'new' in ParseParenthesizedOrFunctionType()
1158 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS && in ParseParenthesizedOrFunctionType()
1159 Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LESS_THAN) { in ParseParenthesizedOrFunctionType()
1164 … if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LESS_THAN || isConstructionType) { in ParseParenthesizedOrFunctionType()
1168 const auto startPos = Lexer()->Save(); in ParseParenthesizedOrFunctionType()
1169 ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS); in ParseParenthesizedOrFunctionType()
1170 Lexer()->NextToken(); // eat '(' in ParseParenthesizedOrFunctionType()
1176 Lexer()->Rewind(startPos); in ParseParenthesizedOrFunctionType()
1180 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COMMA || in ParseParenthesizedOrFunctionType()
1181 Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_QUESTION_MARK || in ParseParenthesizedOrFunctionType()
1182 Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COLON) { in ParseParenthesizedOrFunctionType()
1183 Lexer()->Rewind(startPos); in ParseParenthesizedOrFunctionType()
1187 … if (throwError && Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS) { in ParseParenthesizedOrFunctionType()
1191 lexer::SourcePosition endLoc = Lexer()->GetToken().End(); in ParseParenthesizedOrFunctionType()
1192 Lexer()->NextToken(); // eat ')' in ParseParenthesizedOrFunctionType()
1194 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_ARROW) { in ParseParenthesizedOrFunctionType()
1195 Lexer()->Rewind(startPos); in ParseParenthesizedOrFunctionType()
1206 ir::TypeNode *TSParser::ParseFunctionType(lexer::SourcePosition startLoc, bool isConstructionType, … in ParseFunctionType()
1210 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LESS_THAN) { in ParseFunctionType()
1214 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS) { in ParseFunctionType()
1225 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_ARROW) { in ParseFunctionType()
1229 Lexer()->NextToken(); // eat '=>' in ParseFunctionType()
1255 …static ir::TypeNode *ParseKeywordTokens(TSParser *parser, lexer::Lexer *lexer, ir::TypeNode *typeA… in ParseKeywordTokens() argument
1258 switch (lexer->GetToken().Type()) { in ParseKeywordTokens()
1259 case lexer::TokenType::KEYW_NEW: { in ParseKeywordTokens()
1263 case lexer::TokenType::KEYW_TYPEOF: { in ParseKeywordTokens()
1270 case lexer::TokenType::KEYW_IMPORT: { in ParseKeywordTokens()
1274 return parser->ParseImportType(lexer->GetToken().Start()); in ParseKeywordTokens()
1276 case lexer::TokenType::KEYW_CONST: { in ParseKeywordTokens()
1284 case lexer::TokenType::KEYW_EXTENDS: { in ParseKeywordTokens()
1297 case lexer::TokenType::KEYW_THIS: { in ParseKeywordTokens()
1309 …static ir::TypeNode *ParsePunctuatorTokens(TSParser *parser, lexer::Lexer *lexer, ir::TypeNode *ty… in ParsePunctuatorTokens() argument
1312 switch (lexer->GetToken().Type()) { in ParsePunctuatorTokens()
1313 case lexer::TokenType::PUNCTUATOR_BITWISE_OR: { in ParsePunctuatorTokens()
1322 case lexer::TokenType::PUNCTUATOR_BITWISE_AND: { in ParsePunctuatorTokens()
1331 case lexer::TokenType::PUNCTUATOR_LESS_THAN: in ParsePunctuatorTokens()
1332 case lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS: { in ParsePunctuatorTokens()
1336 case lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET: { in ParsePunctuatorTokens()
1338 if (lexer->Lookahead() == lexer::LEX_CHAR_RIGHT_SQUARE) { in ParsePunctuatorTokens()
1347 case lexer::TokenType::PUNCTUATOR_LEFT_BRACE: { in ParsePunctuatorTokens()
1361 switch (Lexer()->GetToken().Type()) { in ParseTypeAnnotationElement()
1362 case lexer::TokenType::PUNCTUATOR_MINUS: in ParseTypeAnnotationElement()
1363 case lexer::TokenType::LITERAL_NUMBER: in ParseTypeAnnotationElement()
1364 case lexer::TokenType::LITERAL_STRING: in ParseTypeAnnotationElement()
1365 case lexer::TokenType::LITERAL_FALSE: in ParseTypeAnnotationElement()
1366 case lexer::TokenType::LITERAL_TRUE: in ParseTypeAnnotationElement()
1367 case lexer::TokenType::LITERAL_NULL: in ParseTypeAnnotationElement()
1368 case lexer::TokenType::KEYW_VOID: { in ParseTypeAnnotationElement()
1375 case lexer::TokenType::LITERAL_IDENT: { in ParseTypeAnnotationElement()
1386 … ParseTypeAnnotationElementHelper::ParseKeywordTokens(this, Lexer(), typeAnnotation, options); in ParseTypeAnnotationElement()
1392 … ParseTypeAnnotationElementHelper::ParsePunctuatorTokens(this, Lexer(), typeAnnotation, options); in ParseTypeAnnotationElement()
1409 … const lexer::SourcePosition &startLoc, bool ignoreCallExpression) in ParsePotentialGenericFunctionCall()
1411 if (Lexer()->Lookahead() == lexer::LEX_CHAR_LESS_THAN || in ParsePotentialGenericFunctionCall()
1416 const auto savedPos = Lexer()->Save(); in ParsePotentialGenericFunctionCall()
1418 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_SHIFT) { in ParsePotentialGenericFunctionCall()
1419 Lexer()->BackwardToken(lexer::TokenType::PUNCTUATOR_LESS_THAN, 1); in ParsePotentialGenericFunctionCall()
1426 Lexer()->Rewind(savedPos); in ParsePotentialGenericFunctionCall()
1430 if (Lexer()->GetToken().Type() == lexer::TokenType::EOS) { in ParsePotentialGenericFunctionCall()
1434 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS) { in ParsePotentialGenericFunctionCall()
1444 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_BACK_TICK) { in ParsePotentialGenericFunctionCall()
1446 lexer::SourcePosition endLoc = propertyNode->End(); in ParsePotentialGenericFunctionCall()
1453 Lexer()->Rewind(savedPos); in ParsePotentialGenericFunctionCall()
1459 return Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS && in IsNamedFunctionExpression()
1460 Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LESS_THAN; in IsNamedFunctionExpression()
1465 auto *identNode = AllocNode<ir::Identifier>(Lexer()->GetToken().Ident(), Allocator()); in ParsePrimaryExpressionIdent()
1466 identNode->SetRange(Lexer()->GetToken().Loc()); in ParsePrimaryExpressionIdent()
1468 Lexer()->NextToken(); in ParsePrimaryExpressionIdent()
1477 lexer::SourcePosition memberStartLoc = Lexer()->GetToken().Start(); in ParseSignatureMember()
1480 Lexer()->NextToken(); // eat 'new' keyword in ParseSignatureMember()
1484 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LESS_THAN) { in ParseSignatureMember()
1488 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS) { in ParseSignatureMember()
1497 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COLON) { in ParseSignatureMember()
1498 Lexer()->NextToken(); // eat ':' in ParseSignatureMember()
1508 signatureMember->SetRange({memberStartLoc, Lexer()->GetToken().End()}); in ParseSignatureMember()
1515 const auto savedPos = Lexer()->Save(); in IsPotentiallyIndexSignature()
1517 Lexer()->NextToken(); // eat '[' in IsPotentiallyIndexSignature()
1520 …Lexer()->GetToken().Type() == lexer::TokenType::LITERAL_IDENT && Lexer()->Lookahead() == lexer::LE… in IsPotentiallyIndexSignature()
1522 Lexer()->Rewind(savedPos); in IsPotentiallyIndexSignature()
1528 ir::TSIndexSignature *TSParser::ParseIndexSignature(const lexer::SourcePosition &startLoc, bool isR… in ParseIndexSignature()
1530 Lexer()->NextToken(); // eat '[' in ParseIndexSignature()
1532 ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::LITERAL_IDENT); in ParseIndexSignature()
1533 auto *key = AllocNode<ir::Identifier>(Lexer()->GetToken().Ident(), Allocator()); in ParseIndexSignature()
1534 key->SetRange(Lexer()->GetToken().Loc()); in ParseIndexSignature()
1536 Lexer()->NextToken(); // eat key in ParseIndexSignature()
1538 ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COLON); in ParseIndexSignature()
1540 Lexer()->NextToken(); // eat ':' in ParseIndexSignature()
1553 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET) { in ParseIndexSignature()
1557 Lexer()->NextToken(); // eat ']' in ParseIndexSignature()
1559 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_COLON) { in ParseIndexSignature()
1563 Lexer()->NextToken(); // eat ':' in ParseIndexSignature()
1568 indexSignature->SetRange({startLoc, Lexer()->GetToken().End()}); in ParseIndexSignature()
1577 switch (Lexer()->GetToken().Type()) { in ParseInterfacePropertyKey()
1578 case lexer::TokenType::LITERAL_IDENT: { in ParseInterfacePropertyKey()
1579 const util::StringView &ident = Lexer()->GetToken().Ident(); in ParseInterfacePropertyKey()
1581 key->SetRange(Lexer()->GetToken().Loc()); in ParseInterfacePropertyKey()
1584 case lexer::TokenType::LITERAL_STRING: { in ParseInterfacePropertyKey()
1585 const util::StringView &string = Lexer()->GetToken().String(); in ParseInterfacePropertyKey()
1587 key->SetRange(Lexer()->GetToken().Loc()); in ParseInterfacePropertyKey()
1590 case lexer::TokenType::LITERAL_NUMBER: { in ParseInterfacePropertyKey()
1591 if ((Lexer()->GetToken().Flags() & lexer::TokenFlags::NUMBER_BIGINT) != 0) { in ParseInterfacePropertyKey()
1592 key = AllocNode<ir::BigIntLiteral>(Lexer()->GetToken().BigInt()); in ParseInterfacePropertyKey()
1594 key = AllocNode<ir::NumberLiteral>(Lexer()->GetToken().GetNumber()); in ParseInterfacePropertyKey()
1597 key->SetRange(Lexer()->GetToken().Loc()); in ParseInterfacePropertyKey()
1600 case lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET: { in ParseInterfacePropertyKey()
1601 Lexer()->NextToken(); // eat left square bracket in ParseInterfacePropertyKey()
1606 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET) { in ParseInterfacePropertyKey()
1616 Lexer()->NextToken(); in ParseInterfacePropertyKey()
1652 ir::AstNode *TSParser::ParsePropertyOrMethodSignature(const lexer::SourcePosition &startLoc, bool i… in ParsePropertyOrMethodSignature()
1658 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_QUESTION_MARK) { in ParsePropertyOrMethodSignature()
1661 Lexer()->NextToken(); // eat '?' in ParsePropertyOrMethodSignature()
1664 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS || in ParsePropertyOrMethodSignature()
1665 Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LESS_THAN) { in ParsePropertyOrMethodSignature()
1672 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LESS_THAN) { in ParsePropertyOrMethodSignature()
1677 ExpectToken(lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS, false); in ParsePropertyOrMethodSignature()
1683 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COLON) { in ParsePropertyOrMethodSignature()
1684 Lexer()->NextToken(); // eat ':' in ParsePropertyOrMethodSignature()
1693 methodSignature->SetRange({startLoc, Lexer()->GetToken().End()}); in ParsePropertyOrMethodSignature()
1698 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COLON) { in ParsePropertyOrMethodSignature()
1699 Lexer()->NextToken(); // eat ':' in ParsePropertyOrMethodSignature()
1708 propertySignature->SetRange({startLoc, Lexer()->GetToken().End()}); in ParsePropertyOrMethodSignature()
1714 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_AT) { in ParseTypeLiteralOrInterfaceMember()
1718 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS || in ParseTypeLiteralOrInterfaceMember()
1719 Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LESS_THAN) { in ParseTypeLiteralOrInterfaceMember()
1723 char32_t nextCp = Lexer()->Lookahead(); in ParseTypeLiteralOrInterfaceMember()
1724 if (Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_NEW && in ParseTypeLiteralOrInterfaceMember()
1725 (nextCp == lexer::LEX_CHAR_LEFT_PAREN || nextCp == lexer::LEX_CHAR_LESS_THAN)) { in ParseTypeLiteralOrInterfaceMember()
1729 lexer::SourcePosition startLoc = Lexer()->GetToken().Start(); in ParseTypeLiteralOrInterfaceMember()
1730 bool isReadonly = Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_READONLY && in ParseTypeLiteralOrInterfaceMember()
1731 nextCp != lexer::LEX_CHAR_LEFT_PAREN && nextCp != lexer::LEX_CHAR_COLON && in ParseTypeLiteralOrInterfaceMember()
1732 nextCp != lexer::LEX_CHAR_COMMA; in ParseTypeLiteralOrInterfaceMember()
1734 Lexer()->NextToken(); // eat 'readonly" in ParseTypeLiteralOrInterfaceMember()
1737 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET && in ParseTypeLiteralOrInterfaceMember()
1754 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS) { in ValidateFunctionParam()
1793 ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS); in ParseFunctionParams()
1794 Lexer()->NextToken(); in ParseFunctionParams()
1799 while (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS) { in ParseFunctionParams()
1817 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_COMMA && in ParseFunctionParams()
1818 Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS) { in ParseFunctionParams()
1822 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COMMA) { in ParseFunctionParams()
1823 Lexer()->NextToken(); in ParseFunctionParams()
1827 ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS); in ParseFunctionParams()
1828 Lexer()->NextToken(); in ParseFunctionParams()
1835 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COLON) { in ParseClassKeyAnnotation()
1836 Lexer()->NextToken(); // eat ':' in ParseClassKeyAnnotation()
1847 …if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS && desc->isPrivate… in ValidateClassMethodStart()
1851 …if (typeAnnotation == nullptr && (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_… in ValidateClassMethodStart()
1852 … Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LESS_THAN)) { in ValidateClassMethodStart()
1882 lexer::SourcePosition *propEnd) in ParseClassMethod()
1958 bool TSParser::IsModifierKind(const lexer::Token &token) in IsModifierKind()
1961 case lexer::TokenType::KEYW_PUBLIC: in IsModifierKind()
1962 case lexer::TokenType::KEYW_PRIVATE: in IsModifierKind()
1963 case lexer::TokenType::KEYW_PROTECTED: in IsModifierKind()
1964 case lexer::TokenType::KEYW_STATIC: in IsModifierKind()
1965 case lexer::TokenType::KEYW_ASYNC: in IsModifierKind()
1966 case lexer::TokenType::KEYW_ABSTRACT: in IsModifierKind()
1967 case lexer::TokenType::KEYW_DECLARE: in IsModifierKind()
1968 case lexer::TokenType::KEYW_READONLY: in IsModifierKind()
1979 if (Lexer()->GetToken().IsReservedTypeName()) { in CheckIfTypeParameterNameIsReserved()
1993 Lexer()->NextToken(); // eat left square bracket in ParseComputedClassFieldOrIndexSignature()
1995 if (Lexer()->GetToken().Type() == lexer::TokenType::LITERAL_IDENT && in ParseComputedClassFieldOrIndexSignature()
1996 Lexer()->Lookahead() == lexer::LEX_CHAR_COLON) { in ParseComputedClassFieldOrIndexSignature()
1997 auto id = AllocNode<ir::Identifier>(Lexer()->GetToken().Ident(), Allocator()); in ParseComputedClassFieldOrIndexSignature()
1998 id->SetRange(Lexer()->GetToken().Loc()); in ParseComputedClassFieldOrIndexSignature()
2000 Lexer()->NextToken(); // eat param in ParseComputedClassFieldOrIndexSignature()
2002 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_COLON) { in ParseComputedClassFieldOrIndexSignature()
2006 Lexer()->NextToken(); // eat ':' in ParseComputedClassFieldOrIndexSignature()
2018 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET) { in ParseComputedClassFieldOrIndexSignature()
2023 Lexer()->NextToken(lexer::NextTokenFlags::KEYWORD_TO_IDENT); in ParseComputedClassFieldOrIndexSignature()
2035 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET) { in ParseComputedClassFieldOrIndexSignature()
2044 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COLON) { in ParseFunctionReturnType()
2045 Lexer()->NextToken(); // eat ':' in ParseFunctionReturnType()
2066 std::tuple<bool, ir::BlockStatement *, lexer::SourcePosition, bool> TSParser::ParseFunctionBody( in ParseFunctionBody()
2073 lexer::SourcePosition endLoc = Lexer()->GetToken().End(); in ParseFunctionBody()
2075 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_BRACE) { in ParseFunctionBody()
2097 ir::Identifier *local = ParseNamedImport(&Lexer()->GetToken()); in ParseImportDefaultSpecifier()
2098 Lexer()->NextToken(); // eat local name in ParseImportDefaultSpecifier()
2100 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_SUBSTITUTION) { in ParseImportDefaultSpecifier()
2101 Lexer()->NextToken(); // eat substitution in ParseImportDefaultSpecifier()
2102 if (Lexer()->GetToken().Type() != lexer::TokenType::LITERAL_IDENT) { in ParseImportDefaultSpecifier()
2115 Lexer()->NextToken(); // eat specifier name in ParseImportDefaultSpecifier()
2117 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COMMA) { in ParseImportDefaultSpecifier()
2118 Lexer()->NextToken(); // eat comma in ParseImportDefaultSpecifier()
2126 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COLON) { in ParseCatchParamTypeAnnotation()
2127 Lexer()->NextToken(); // eat ':' in ParseCatchParamTypeAnnotation()
2133 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_SUBSTITUTION) { in ParseCatchParamTypeAnnotation()
2145 void TSParser::ReportIllegalBreakError(const lexer::SourcePosition &pos) in ReportIllegalBreakError()