• Home
  • Raw
  • Download

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(), DiagnosticEngine()); in InitLexer() local
125 SetLexer(lexer.get()); in InitLexer()
126 return lexer; in InitLexer()
131 ES2PANDA_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()
153 identNode->SetRange(Lexer()->GetToken().Loc()); in ParseDecorator()
157 Lexer()->NextToken(); in ParseDecorator()
160 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS) { in ParseDecorator()
186 ES2PANDA_ASSERT(Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_TYPE); in ParseTypeAliasDeclaration()
187 lexer::SourcePosition typeStart = Lexer()->GetToken().Start(); in ParseTypeAliasDeclaration()
188 Lexer()->NextToken(); // eat type keyword in ParseTypeAliasDeclaration()
190 if (Lexer()->GetToken().Type() != lexer::TokenType::LITERAL_IDENT) { in ParseTypeAliasDeclaration()
194 if (Lexer()->GetToken().IsReservedTypeName()) { in ParseTypeAliasDeclaration()
196 errMsg.append(TokenToString(Lexer()->GetToken().KeywordType())); in ParseTypeAliasDeclaration()
201 const util::StringView &ident = Lexer()->GetToken().Ident(); in ParseTypeAliasDeclaration()
205 id->SetRange(Lexer()->GetToken().Loc()); in ParseTypeAliasDeclaration()
206 Lexer()->NextToken(); in ParseTypeAliasDeclaration()
209 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LESS_THAN) { in ParseTypeAliasDeclaration()
214 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_SUBSTITUTION) { in ParseTypeAliasDeclaration()
218 Lexer()->NextToken(); // eat '=' in ParseTypeAliasDeclaration()
224 typeAliasDecl->SetRange({typeStart, Lexer()->GetToken().End()}); in ParseTypeAliasDeclaration()
231 switch (Lexer()->GetToken().KeywordType()) { in CurrentLiteralIsBasicType()
232 case lexer::TokenType::KEYW_ANY: in CurrentLiteralIsBasicType()
233 case lexer::TokenType::KEYW_BOOLEAN: in CurrentLiteralIsBasicType()
234 case lexer::TokenType::KEYW_NUMBER: in CurrentLiteralIsBasicType()
235 case lexer::TokenType::KEYW_STRING: in CurrentLiteralIsBasicType()
236 case lexer::TokenType::KEYW_UNKNOWN: in CurrentLiteralIsBasicType()
237 case lexer::TokenType::KEYW_UNDEFINED: in CurrentLiteralIsBasicType()
238 case lexer::TokenType::KEYW_NEVER: in CurrentLiteralIsBasicType()
239 case lexer::TokenType::KEYW_OBJECT: in CurrentLiteralIsBasicType()
240 case lexer::TokenType::KEYW_BIGINT: { in CurrentLiteralIsBasicType()
253 switch (Lexer()->GetToken().Type()) { in CurrentIsBasicType()
254 case lexer::TokenType::LITERAL_NUMBER: in CurrentIsBasicType()
255 case lexer::TokenType::LITERAL_STRING: in CurrentIsBasicType()
256 case lexer::TokenType::LITERAL_FALSE: in CurrentIsBasicType()
257 case lexer::TokenType::LITERAL_TRUE: in CurrentIsBasicType()
258 case lexer::TokenType::LITERAL_NULL: in CurrentIsBasicType()
259 case lexer::TokenType::KEYW_THIS: in CurrentIsBasicType()
260 case lexer::TokenType::KEYW_VOID: { in CurrentIsBasicType()
263 case lexer::TokenType::LITERAL_IDENT: { in CurrentIsBasicType()
289 …if ((((*options) & TypeAnnotationParsingOptions::BREAK_AT_NEW_LINE) != 0) && Lexer()->GetToken().N… in ParseTypeAnnotation()
299 if (CurrentLiteralIsBasicType() && Lexer()->Lookahead() != lexer::LEX_CHAR_DOT) { in ParseIdentifierReference()
308 auto pos = Lexer()->Save(); in IsStartOfMappedType()
309 Lexer()->NextToken(); in IsStartOfMappedType()
312 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_MINUS || in IsStartOfMappedType()
313 Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_PLUS) { in IsStartOfMappedType()
314 Lexer()->NextToken(); in IsStartOfMappedType()
315 result = Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_READONLY; in IsStartOfMappedType()
316 Lexer()->Rewind(pos); in IsStartOfMappedType()
320 if (Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_READONLY) { in IsStartOfMappedType()
321 Lexer()->NextToken(); in IsStartOfMappedType()
324 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET) { in IsStartOfMappedType()
325 Lexer()->Rewind(pos); in IsStartOfMappedType()
329 Lexer()->NextToken(); in IsStartOfMappedType()
331 if (Lexer()->GetToken().Type() != lexer::TokenType::LITERAL_IDENT) { in IsStartOfMappedType()
332 Lexer()->Rewind(pos); in IsStartOfMappedType()
336 Lexer()->NextToken(); in IsStartOfMappedType()
338 result = Lexer()->GetToken().Type() == lexer::TokenType::KEYW_IN; in IsStartOfMappedType()
340 Lexer()->Rewind(pos); in IsStartOfMappedType()
346 ES2PANDA_ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::LITERAL_IDENT || in IsStartOfTypePredicate()
347 Lexer()->GetToken().Type() == lexer::TokenType::KEYW_THIS); in IsStartOfTypePredicate()
349 auto pos = Lexer()->Save(); in IsStartOfTypePredicate()
350 bool isAsserts = Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_ASSERTS; in IsStartOfTypePredicate()
352 Lexer()->NextToken(); in IsStartOfTypePredicate()
355 if (Lexer()->GetToken().Type() != lexer::TokenType::LITERAL_IDENT && in IsStartOfTypePredicate()
356 Lexer()->GetToken().Type() != lexer::TokenType::KEYW_THIS) { in IsStartOfTypePredicate()
357 Lexer()->Rewind(pos); in IsStartOfTypePredicate()
362 Lexer()->Rewind(pos); in IsStartOfTypePredicate()
366 Lexer()->NextToken(); in IsStartOfTypePredicate()
368 bool result = Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_IS; in IsStartOfTypePredicate()
369 Lexer()->Rewind(pos); in IsStartOfTypePredicate()
375 if (Lexer()->GetToken().KeywordType() != lexer::TokenType::KEYW_ABSTRACT) { in IsStartOfAbstractConstructorType()
379 lexer::LexerPosition pos = Lexer()->Save(); in IsStartOfAbstractConstructorType()
380 Lexer()->NextToken(); // eat 'abstract' in IsStartOfAbstractConstructorType()
381 bool result = Lexer()->GetToken().Type() == lexer::TokenType::KEYW_NEW; in IsStartOfAbstractConstructorType()
383 Lexer()->Rewind(pos); in IsStartOfAbstractConstructorType()
388 ir::TSImportType *TSParser::ParseImportType(const lexer::SourcePosition &startLoc, bool isTypeof) in ParseImportType()
390 ES2PANDA_ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::KEYW_IMPORT); in ParseImportType()
392 Lexer()->NextToken(); in ParseImportType()
394 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS) { in ParseImportType()
398 Lexer()->NextToken(); in ParseImportType()
407 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS) { in ParseImportType()
411 Lexer()->NextToken(); in ParseImportType()
414 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_PERIOD) { in ParseImportType()
415 Lexer()->NextToken(); in ParseImportType()
420 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_SHIFT || in ParseImportType()
421 Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LESS_THAN) { in ParseImportType()
422 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_SHIFT) { in ParseImportType()
423 Lexer()->BackwardToken(lexer::TokenType::PUNCTUATOR_LESS_THAN, 1); in ParseImportType()
431 importType->SetRange({startLoc, Lexer()->GetToken().End()}); in ParseImportType()
438 ES2PANDA_ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::KEYW_THIS); in ParseThisType()
448 returnType->SetRange(Lexer()->GetToken().Loc()); in ParseThisType()
450 Lexer()->NextToken(); in ParseThisType()
457 ES2PANDA_ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::KEYW_EXTENDS); in ParseConditionalType()
462 lexer::SourcePosition startLoc = checkType->Start(); in ParseConditionalType()
464 Lexer()->NextToken(); // eat 'extends' in ParseConditionalType()
475 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_QUESTION_MARK) { in ParseConditionalType()
479 Lexer()->NextToken(); // eat '?' in ParseConditionalType()
484 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_COLON) { in ParseConditionalType()
488 Lexer()->NextToken(); // eat ':' in ParseConditionalType()
492 lexer::SourcePosition endLoc = falseType->End(); in ParseConditionalType()
505 if (Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_READONLY) { in ParseTypeOperatorOrTypeReference()
506 lexer::SourcePosition typeOperatorStart = Lexer()->GetToken().Start(); in ParseTypeOperatorOrTypeReference()
507 Lexer()->NextToken(); in ParseTypeOperatorOrTypeReference()
524 if (Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_KEYOF) { in ParseTypeOperatorOrTypeReference()
525 lexer::SourcePosition typeOperatorStart = Lexer()->GetToken().Start(); in ParseTypeOperatorOrTypeReference()
526 Lexer()->NextToken(); in ParseTypeOperatorOrTypeReference()
537 if (Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_INFER) { in ParseTypeOperatorOrTypeReference()
544 lexer::SourcePosition inferStart = Lexer()->GetToken().Start(); in ParseTypeOperatorOrTypeReference()
545 Lexer()->NextToken(); in ParseTypeOperatorOrTypeReference()
552 inferType->SetRange({inferStart, Lexer()->GetToken().End()}); in ParseTypeOperatorOrTypeReference()
562 lexer::SourcePosition elementStart = Lexer()->GetToken().Start(); in ParseTupleElement()
567 …if (Lexer()->GetToken().Type() == lexer::TokenType::LITERAL_IDENT && !CurrentLiteralIsBasicType())… in ParseTupleElement()
568 auto *elementIdent = AllocNode<ir::Identifier>(Lexer()->GetToken().Ident(), Allocator()); in ParseTupleElement()
569 elementIdent->SetRange(Lexer()->GetToken().Loc()); in ParseTupleElement()
571 …if (Lexer()->Lookahead() == lexer::LEX_CHAR_COLON || Lexer()->Lookahead() == lexer::LEX_CHAR_QUEST… in ParseTupleElement()
576 Lexer()->NextToken(); // eat ident in ParseTupleElement()
578 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_QUESTION_MARK) { in ParseTupleElement()
579 Lexer()->NextToken(); // eat '?' in ParseTupleElement()
586 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_COLON) { in ParseTupleElement()
590 Lexer()->NextToken(); // eat ':' in ParseTupleElement()
598 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_COMMA && in ParseTupleElement()
599 Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET) { in ParseTupleElement()
612 element->SetRange({elementStart, Lexer()->GetToken().End()}); in ParseTupleElement()
619 ES2PANDA_ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET); in ParseTupleType()
620 lexer::SourcePosition tupleStart = Lexer()->GetToken().Start(); in ParseTupleType()
625 Lexer()->NextToken(); // eat '[' in ParseTupleType()
627 while (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET) { in ParseTupleType()
631 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET) { in ParseTupleType()
635 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_COMMA) { in ParseTupleType()
639 Lexer()->NextToken(); // eat ',' in ParseTupleType()
642 lexer::SourcePosition tupleEnd = Lexer()->GetToken().End(); in ParseTupleType()
643 Lexer()->NextToken(); // eat ']' in ParseTupleType()
656 Lexer()->NextToken(); // eat '[' in ParseIndexAccessType()
660 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET) { in ParseIndexAccessType()
664 Lexer()->NextToken(); // eat ']' in ParseIndexAccessType()
667 …typeName->SetRange({typeName->AsTSIndexedAccessType()->ObjectType()->Start(), Lexer()->GetToken().… in ParseIndexAccessType()
668 } while (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET && in ParseIndexAccessType()
669 Lexer()->Lookahead() != lexer::LEX_CHAR_RIGHT_SQUARE); in ParseIndexAccessType()
676 lexer::SourcePosition referenceStartLoc = Lexer()->GetToken().Start(); in ParseTypeReferenceOrQuery()
679 ES2PANDA_ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::KEYW_TYPEOF); in ParseTypeReferenceOrQuery()
680 Lexer()->NextToken(); // eat 'typeof' in ParseTypeReferenceOrQuery()
682 if (Lexer()->GetToken().Type() == lexer::TokenType::KEYW_IMPORT) { in ParseTypeReferenceOrQuery()
683 lexer::SourcePosition &startLoc = referenceStartLoc; in ParseTypeReferenceOrQuery()
687 if (Lexer()->GetToken().Type() != lexer::TokenType::LITERAL_IDENT) { in ParseTypeReferenceOrQuery()
692 ES2PANDA_ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::LITERAL_IDENT || in ParseTypeReferenceOrQuery()
693 Lexer()->GetToken().Type() == lexer::TokenType::KEYW_EXTENDS); in ParseTypeReferenceOrQuery()
695 ir::Expression *typeName = AllocNode<ir::Identifier>(Lexer()->GetToken().Ident(), Allocator()); in ParseTypeReferenceOrQuery()
697 typeName->SetRange(Lexer()->GetToken().Loc()); in ParseTypeReferenceOrQuery()
699 if (Lexer()->Lookahead() == lexer::LEX_CHAR_LESS_THAN) { in ParseTypeReferenceOrQuery()
700 Lexer()->ForwardToken(lexer::TokenType::PUNCTUATOR_LESS_THAN, 1); in ParseTypeReferenceOrQuery()
702 Lexer()->NextToken(); in ParseTypeReferenceOrQuery()
705 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_PERIOD) { in ParseTypeReferenceOrQuery()
710 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LESS_THAN) { in ParseTypeReferenceOrQuery()
719 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET && in ParseTypeReferenceOrQuery()
720 Lexer()->Lookahead() != lexer::LEX_CHAR_RIGHT_SQUARE) { in ParseTypeReferenceOrQuery()
725 typeRef->SetRange({referenceStartLoc, Lexer()->GetToken().End()}); in ParseTypeReferenceOrQuery()
741 lexer::SourcePosition startLoc = Lexer()->GetToken().Start(); in ParseMappedTypeParameter()
743 auto *paramName = AllocNode<ir::Identifier>(Lexer()->GetToken().Ident(), Allocator()); in ParseMappedTypeParameter()
745 paramName->SetRange({Lexer()->GetToken().Start(), Lexer()->GetToken().End()}); in ParseMappedTypeParameter()
747 Lexer()->NextToken(); in ParseMappedTypeParameter()
749 Lexer()->NextToken(); // eat 'in' in ParseMappedTypeParameter()
754 lexer::SourcePosition endLoc = constraint->End(); in ParseMappedTypeParameter()
763 ir::MappedOption TSParser::ParseMappedOption(lexer::TokenType tokenType) in ParseMappedOption()
765 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_MINUS && in ParseMappedOption()
766 Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_PLUS && in ParseMappedOption()
767 Lexer()->GetToken().KeywordType() != tokenType && Lexer()->GetToken().Type() != tokenType) { in ParseMappedOption()
771 …auto result = Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_MINUS ? ir::MappedOption:… in ParseMappedOption()
774 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_MINUS || in ParseMappedOption()
775 Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_PLUS) { in ParseMappedOption()
776 Lexer()->NextToken(); in ParseMappedOption()
779 if (Lexer()->GetToken().KeywordType() != tokenType && Lexer()->GetToken().Type() != tokenType) { in ParseMappedOption()
783 Lexer()->NextToken(); in ParseMappedOption()
790 ES2PANDA_ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_BRACE); in ParseMappedType()
792 lexer::SourcePosition startLoc = Lexer()->GetToken().Start(); in ParseMappedType()
793 Lexer()->NextToken(lexer::NextTokenFlags::KEYWORD_TO_IDENT); // eat '{' in ParseMappedType()
795 ir::MappedOption readonly = ParseMappedOption(lexer::TokenType::KEYW_READONLY); in ParseMappedType()
797 Lexer()->NextToken(); // eat '[' in ParseMappedType()
801 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET) { in ParseMappedType()
805 Lexer()->NextToken(); // eat ']' in ParseMappedType()
807 ir::MappedOption optional = ParseMappedOption(lexer::TokenType::PUNCTUATOR_QUESTION_MARK); in ParseMappedType()
810 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COLON) { in ParseMappedType()
811 Lexer()->NextToken(); // eat ':' in ParseMappedType()
816 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_SEMI_COLON && in ParseMappedType()
817 Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_BRACE) { in ParseMappedType()
821 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_SEMI_COLON) { in ParseMappedType()
822 Lexer()->NextToken(); // eat ';' in ParseMappedType()
825 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_BRACE) { in ParseMappedType()
831 mappedType->SetRange({startLoc, Lexer()->GetToken().End()}); in ParseMappedType()
833 Lexer()->NextToken(); // eat '}' in ParseMappedType()
840 auto pos = Lexer()->Save(); in ParseTypePredicate()
841 lexer::SourcePosition startPos = Lexer()->GetToken().Start(); in ParseTypePredicate()
842 bool isAsserts = Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_ASSERTS; in ParseTypePredicate()
844 Lexer()->NextToken(); // eat 'asserts' in ParseTypePredicate()
845 if (Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_IS) { in ParseTypePredicate()
847 Lexer()->Rewind(pos); in ParseTypePredicate()
852 if (Lexer()->GetToken().Type() == lexer::TokenType::LITERAL_IDENT) { in ParseTypePredicate()
853 parameterName = AllocNode<ir::Identifier>(Lexer()->GetToken().Ident(), Allocator()); in ParseTypePredicate()
858 parameterName->SetRange({Lexer()->GetToken().Start(), Lexer()->GetToken().End()}); in ParseTypePredicate()
860 Lexer()->NextToken(); in ParseTypePredicate()
863 lexer::SourcePosition endPos; in ParseTypePredicate()
866 if (isAsserts && Lexer()->GetToken().KeywordType() != lexer::TokenType::KEYW_IS) { in ParseTypePredicate()
874 Lexer()->NextToken(); // eat 'is' in ParseTypePredicate()
897 lexer::SourcePosition bodyStart = Lexer()->GetToken().Start(); in ParseTypeLiteralOrMappedType()
899 lexer::SourcePosition bodyEnd = Lexer()->GetToken().End(); in ParseTypeLiteralOrMappedType()
900 Lexer()->NextToken(); in ParseTypeLiteralOrMappedType()
939 ES2PANDA_ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET); in ParseArrayType()
940 Lexer()->NextToken(); // eat '[' in ParseArrayType()
942 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET) { in ParseArrayType()
946 lexer::SourcePosition endLoc = Lexer()->GetToken().End(); in ParseArrayType()
947 Lexer()->NextToken(); // eat ']' in ParseArrayType()
949 lexer::SourcePosition startLoc = elementType->Start(); in ParseArrayType()
960 lexer::SourcePosition startLoc; in ParseUnionType()
973 startLoc = Lexer()->GetToken().Start(); in ParseUnionType()
977 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_BITWISE_OR) { in ParseUnionType()
981 Lexer()->NextToken(); // eat '|' in ParseUnionType()
986 lexer::SourcePosition endLoc = types.back()->End(); in ParseUnionType()
1000 lexer::SourcePosition startLoc; in ParseIntersectionType()
1017 startLoc = Lexer()->GetToken().Start(); in ParseIntersectionType()
1021 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_BITWISE_AND) { in ParseIntersectionType()
1025 Lexer()->NextToken(); // eat '&' in ParseIntersectionType()
1030 lexer::SourcePosition endLoc = types.back()->End(); in ParseIntersectionType()
1046 static ir::TypeNode *GetTypeAnnotationFromLiteral(TSParser *parser, lexer::Lexer *lexer) in GetTypeAnnotationFromLiteral() argument
1048 switch (lexer->GetToken().KeywordType()) { in GetTypeAnnotationFromLiteral()
1049 case lexer::TokenType::LITERAL_NUMBER: { in GetTypeAnnotationFromLiteral()
1050 if ((lexer->GetToken().Flags() & lexer::TokenFlags::NUMBER_BIGINT) != 0) { in GetTypeAnnotationFromLiteral()
1051 … auto *bigintNode = parser->AllocNode<ir::BigIntLiteral>(lexer->GetToken().BigInt()); in GetTypeAnnotationFromLiteral()
1052 bigintNode->SetRange(lexer->GetToken().Loc()); in GetTypeAnnotationFromLiteral()
1056 … auto *numberNode = parser->AllocNode<ir::NumberLiteral>(lexer->GetToken().GetNumber()); in GetTypeAnnotationFromLiteral()
1058 numberNode->SetRange(lexer->GetToken().Loc()); in GetTypeAnnotationFromLiteral()
1062 case lexer::TokenType::LITERAL_STRING: { in GetTypeAnnotationFromLiteral()
1063 auto *stringNode = parser->AllocNode<ir::StringLiteral>(lexer->GetToken().String()); in GetTypeAnnotationFromLiteral()
1064 stringNode->SetRange(lexer->GetToken().Loc()); in GetTypeAnnotationFromLiteral()
1068 case lexer::TokenType::LITERAL_TRUE: { in GetTypeAnnotationFromLiteral()
1070 booleanLiteral->SetRange(lexer->GetToken().Loc()); in GetTypeAnnotationFromLiteral()
1074 case lexer::TokenType::LITERAL_FALSE: { in GetTypeAnnotationFromLiteral()
1076 booleanLiteral->SetRange(lexer->GetToken().Loc()); in GetTypeAnnotationFromLiteral()
1080 case lexer::TokenType::LITERAL_NULL: { in GetTypeAnnotationFromLiteral()
1089 static ir::TypeNode *GetTypeAnnotation(TSParser *parser, lexer::Lexer *lexer) in GetTypeAnnotation() argument
1091 switch (lexer->GetToken().KeywordType()) { in GetTypeAnnotation()
1092 case lexer::TokenType::LITERAL_NUMBER: in GetTypeAnnotation()
1093 case lexer::TokenType::LITERAL_STRING: in GetTypeAnnotation()
1094 case lexer::TokenType::LITERAL_TRUE: in GetTypeAnnotation()
1095 case lexer::TokenType::LITERAL_FALSE: in GetTypeAnnotation()
1096 case lexer::TokenType::LITERAL_NULL: { in GetTypeAnnotation()
1097 return GetTypeAnnotationFromLiteral(parser, lexer); in GetTypeAnnotation()
1099 case lexer::TokenType::KEYW_ANY: { in GetTypeAnnotation()
1102 case lexer::TokenType::KEYW_BOOLEAN: { in GetTypeAnnotation()
1105 case lexer::TokenType::KEYW_NUMBER: { in GetTypeAnnotation()
1108 case lexer::TokenType::KEYW_STRING: { in GetTypeAnnotation()
1111 case lexer::TokenType::KEYW_UNKNOWN: { in GetTypeAnnotation()
1114 case lexer::TokenType::KEYW_VOID: { in GetTypeAnnotation()
1117 case lexer::TokenType::KEYW_UNDEFINED: { in GetTypeAnnotation()
1120 case lexer::TokenType::KEYW_NEVER: { in GetTypeAnnotation()
1123 case lexer::TokenType::KEYW_OBJECT: { in GetTypeAnnotation()
1126 case lexer::TokenType::KEYW_BIGINT: { in GetTypeAnnotation()
1137 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_MINUS) { in ParseBasicType()
1138 Lexer()->NextToken(); in ParseBasicType()
1140 if (Lexer()->GetToken().Type() != lexer::TokenType::LITERAL_NUMBER) { in ParseBasicType()
1145 ir::TypeNode *typeAnnotation = ParseBasicTypeHelper::GetTypeAnnotation(this, Lexer()); in ParseBasicType()
1147 typeAnnotation->SetRange(Lexer()->GetToken().Loc()); in ParseBasicType()
1149 Lexer()->NextToken(); in ParseBasicType()
1160 lexer::SourcePosition typeStart = Lexer()->GetToken().Start(); in ParseParenthesizedOrFunctionType()
1164 if (Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_ABSTRACT) { in ParseParenthesizedOrFunctionType()
1166 Lexer()->NextToken(); // eat 'abstract' in ParseParenthesizedOrFunctionType()
1171 if (Lexer()->GetToken().Type() == lexer::TokenType::KEYW_NEW) { in ParseParenthesizedOrFunctionType()
1172 Lexer()->NextToken(); // eat 'new' in ParseParenthesizedOrFunctionType()
1175 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS && in ParseParenthesizedOrFunctionType()
1176 Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LESS_THAN) { in ParseParenthesizedOrFunctionType()
1181 … if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LESS_THAN || isConstructionType) { in ParseParenthesizedOrFunctionType()
1185 const auto startPos = Lexer()->Save(); in ParseParenthesizedOrFunctionType()
1186 ES2PANDA_ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS); in ParseParenthesizedOrFunctionType()
1187 Lexer()->NextToken(); // eat '(' in ParseParenthesizedOrFunctionType()
1193 Lexer()->Rewind(startPos); in ParseParenthesizedOrFunctionType()
1197 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COMMA || in ParseParenthesizedOrFunctionType()
1198 Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_QUESTION_MARK || in ParseParenthesizedOrFunctionType()
1199 Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COLON) { in ParseParenthesizedOrFunctionType()
1200 Lexer()->Rewind(startPos); in ParseParenthesizedOrFunctionType()
1204 … if (throwError && Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS) { in ParseParenthesizedOrFunctionType()
1208 lexer::SourcePosition endLoc = Lexer()->GetToken().End(); in ParseParenthesizedOrFunctionType()
1209 Lexer()->NextToken(); // eat ')' in ParseParenthesizedOrFunctionType()
1211 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_ARROW) { in ParseParenthesizedOrFunctionType()
1212 Lexer()->Rewind(startPos); in ParseParenthesizedOrFunctionType()
1224 ir::TypeNode *TSParser::ParseFunctionType(lexer::SourcePosition startLoc, bool isConstructionType, … in ParseFunctionType()
1228 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LESS_THAN) { in ParseFunctionType()
1232 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS) { in ParseFunctionType()
1243 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_ARROW) { in ParseFunctionType()
1247 Lexer()->NextToken(); // eat '=>' in ParseFunctionType()
1273 …static ir::TypeNode *ParseKeywordTokens(TSParser *parser, lexer::Lexer *lexer, ir::TypeNode *typeA… in ParseKeywordTokens() argument
1276 switch (lexer->GetToken().Type()) { in ParseKeywordTokens()
1277 case lexer::TokenType::KEYW_NEW: { in ParseKeywordTokens()
1281 case lexer::TokenType::KEYW_TYPEOF: { in ParseKeywordTokens()
1288 case lexer::TokenType::KEYW_IMPORT: { in ParseKeywordTokens()
1292 return parser->ParseImportType(lexer->GetToken().Start()); in ParseKeywordTokens()
1294 case lexer::TokenType::KEYW_CONST: { in ParseKeywordTokens()
1302 case lexer::TokenType::KEYW_EXTENDS: { in ParseKeywordTokens()
1315 case lexer::TokenType::KEYW_THIS: { in ParseKeywordTokens()
1327 …static ir::TypeNode *ParsePunctuatorTokens(TSParser *parser, lexer::Lexer *lexer, ir::TypeNode *ty… in ParsePunctuatorTokens() argument
1330 switch (lexer->GetToken().Type()) { in ParsePunctuatorTokens()
1331 case lexer::TokenType::PUNCTUATOR_BITWISE_OR: { in ParsePunctuatorTokens()
1340 case lexer::TokenType::PUNCTUATOR_BITWISE_AND: { in ParsePunctuatorTokens()
1349 case lexer::TokenType::PUNCTUATOR_LESS_THAN: in ParsePunctuatorTokens()
1350 case lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS: { in ParsePunctuatorTokens()
1354 case lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET: { in ParsePunctuatorTokens()
1356 if (lexer->Lookahead() == lexer::LEX_CHAR_RIGHT_SQUARE) { in ParsePunctuatorTokens()
1365 case lexer::TokenType::PUNCTUATOR_LEFT_BRACE: { in ParsePunctuatorTokens()
1379 switch (Lexer()->GetToken().Type()) { in ParseTypeAnnotationElement()
1380 case lexer::TokenType::PUNCTUATOR_MINUS: in ParseTypeAnnotationElement()
1381 case lexer::TokenType::LITERAL_NUMBER: in ParseTypeAnnotationElement()
1382 case lexer::TokenType::LITERAL_STRING: in ParseTypeAnnotationElement()
1383 case lexer::TokenType::LITERAL_FALSE: in ParseTypeAnnotationElement()
1384 case lexer::TokenType::LITERAL_TRUE: in ParseTypeAnnotationElement()
1385 case lexer::TokenType::LITERAL_NULL: in ParseTypeAnnotationElement()
1386 case lexer::TokenType::KEYW_VOID: { in ParseTypeAnnotationElement()
1393 case lexer::TokenType::LITERAL_IDENT: { in ParseTypeAnnotationElement()
1404 … ParseTypeAnnotationElementHelper::ParseKeywordTokens(this, Lexer(), typeAnnotation, options); in ParseTypeAnnotationElement()
1410 … ParseTypeAnnotationElementHelper::ParsePunctuatorTokens(this, Lexer(), typeAnnotation, options); in ParseTypeAnnotationElement()
1427 … const lexer::SourcePosition &startLoc, bool ignoreCallExpression) in ParsePotentialGenericFunctionCall()
1429 if (Lexer()->Lookahead() == lexer::LEX_CHAR_LESS_THAN || in ParsePotentialGenericFunctionCall()
1434 const auto savedPos = Lexer()->Save(); in ParsePotentialGenericFunctionCall()
1436 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_SHIFT) { in ParsePotentialGenericFunctionCall()
1437 Lexer()->BackwardToken(lexer::TokenType::PUNCTUATOR_LESS_THAN, 1); in ParsePotentialGenericFunctionCall()
1444 Lexer()->Rewind(savedPos); in ParsePotentialGenericFunctionCall()
1448 if (Lexer()->GetToken().Type() == lexer::TokenType::EOS) { in ParsePotentialGenericFunctionCall()
1452 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS) { in ParsePotentialGenericFunctionCall()
1462 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_BACK_TICK) { in ParsePotentialGenericFunctionCall()
1464 lexer::SourcePosition endLoc = propertyNode->End(); in ParsePotentialGenericFunctionCall()
1472 Lexer()->Rewind(savedPos); in ParsePotentialGenericFunctionCall()
1478 return Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS && in IsNamedFunctionExpression()
1479 Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LESS_THAN; in IsNamedFunctionExpression()
1484 auto *identNode = AllocNode<ir::Identifier>(Lexer()->GetToken().Ident(), Allocator()); in ParsePrimaryExpressionIdent()
1486 identNode->SetRange(Lexer()->GetToken().Loc()); in ParsePrimaryExpressionIdent()
1488 Lexer()->NextToken(); in ParsePrimaryExpressionIdent()
1497 lexer::SourcePosition memberStartLoc = Lexer()->GetToken().Start(); in ParseSignatureMember()
1500 Lexer()->NextToken(); // eat 'new' keyword in ParseSignatureMember()
1504 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LESS_THAN) { in ParseSignatureMember()
1508 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS) { in ParseSignatureMember()
1517 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COLON) { in ParseSignatureMember()
1518 Lexer()->NextToken(); // eat ':' in ParseSignatureMember()
1529 signatureMember->SetRange({memberStartLoc, Lexer()->GetToken().End()}); in ParseSignatureMember()
1536 const auto savedPos = Lexer()->Save(); in IsPotentiallyIndexSignature()
1538 Lexer()->NextToken(); // eat '[' in IsPotentiallyIndexSignature()
1541Lexer()->GetToken().Type() == lexer::TokenType::LITERAL_IDENT && Lexer()->Lookahead() == lexer::LE… in IsPotentiallyIndexSignature()
1543 Lexer()->Rewind(savedPos); in IsPotentiallyIndexSignature()
1549 ir::TSIndexSignature *TSParser::ParseIndexSignature(const lexer::SourcePosition &startLoc, bool isR… in ParseIndexSignature()
1551 Lexer()->NextToken(); // eat '[' in ParseIndexSignature()
1553 ES2PANDA_ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::LITERAL_IDENT); in ParseIndexSignature()
1554 auto *key = AllocNode<ir::Identifier>(Lexer()->GetToken().Ident(), Allocator()); in ParseIndexSignature()
1556 key->SetRange(Lexer()->GetToken().Loc()); in ParseIndexSignature()
1558 Lexer()->NextToken(); // eat key in ParseIndexSignature()
1560 ES2PANDA_ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COLON); in ParseIndexSignature()
1562 Lexer()->NextToken(); // eat ':' in ParseIndexSignature()
1575 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET) { in ParseIndexSignature()
1579 Lexer()->NextToken(); // eat ']' in ParseIndexSignature()
1581 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_COLON) { in ParseIndexSignature()
1585 Lexer()->NextToken(); // eat ':' in ParseIndexSignature()
1590 indexSignature->SetRange({startLoc, Lexer()->GetToken().End()}); in ParseIndexSignature()
1599 switch (Lexer()->GetToken().Type()) { in ParseInterfacePropertyKey()
1600 case lexer::TokenType::LITERAL_IDENT: { in ParseInterfacePropertyKey()
1601 const util::StringView &ident = Lexer()->GetToken().Ident(); in ParseInterfacePropertyKey()
1604 key->SetRange(Lexer()->GetToken().Loc()); in ParseInterfacePropertyKey()
1607 case lexer::TokenType::LITERAL_STRING: { in ParseInterfacePropertyKey()
1608 const util::StringView &string = Lexer()->GetToken().String(); in ParseInterfacePropertyKey()
1611 key->SetRange(Lexer()->GetToken().Loc()); in ParseInterfacePropertyKey()
1614 case lexer::TokenType::LITERAL_NUMBER: { in ParseInterfacePropertyKey()
1615 if ((Lexer()->GetToken().Flags() & lexer::TokenFlags::NUMBER_BIGINT) != 0) { in ParseInterfacePropertyKey()
1616 key = AllocNode<ir::BigIntLiteral>(Lexer()->GetToken().BigInt()); in ParseInterfacePropertyKey()
1618 key = AllocNode<ir::NumberLiteral>(Lexer()->GetToken().GetNumber()); in ParseInterfacePropertyKey()
1622 key->SetRange(Lexer()->GetToken().Loc()); in ParseInterfacePropertyKey()
1625 case lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET: { in ParseInterfacePropertyKey()
1626 Lexer()->NextToken(); // eat left square bracket in ParseInterfacePropertyKey()
1631 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET) { in ParseInterfacePropertyKey()
1641 Lexer()->NextToken(); in ParseInterfacePropertyKey()
1677 ir::AstNode *TSParser::ParsePropertyOrMethodSignature(const lexer::SourcePosition &startLoc, bool i… in ParsePropertyOrMethodSignature()
1683 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_QUESTION_MARK) { in ParsePropertyOrMethodSignature()
1686 Lexer()->NextToken(); // eat '?' in ParsePropertyOrMethodSignature()
1689 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS || in ParsePropertyOrMethodSignature()
1690 Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LESS_THAN) { in ParsePropertyOrMethodSignature()
1697 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LESS_THAN) { in ParsePropertyOrMethodSignature()
1702 ExpectToken(lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS, false); in ParsePropertyOrMethodSignature()
1708 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COLON) { in ParsePropertyOrMethodSignature()
1709 Lexer()->NextToken(); // eat ':' in ParsePropertyOrMethodSignature()
1718 methodSignature->SetRange({startLoc, Lexer()->GetToken().End()}); in ParsePropertyOrMethodSignature()
1723 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COLON) { in ParsePropertyOrMethodSignature()
1724 Lexer()->NextToken(); // eat ':' in ParsePropertyOrMethodSignature()
1733 propertySignature->SetRange({startLoc, Lexer()->GetToken().End()}); in ParsePropertyOrMethodSignature()
1739 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_AT) { in ParseTypeLiteralOrInterfaceMember()
1743 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS || in ParseTypeLiteralOrInterfaceMember()
1744 Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LESS_THAN) { in ParseTypeLiteralOrInterfaceMember()
1748 char32_t nextCp = Lexer()->Lookahead(); in ParseTypeLiteralOrInterfaceMember()
1749 if (Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_NEW && in ParseTypeLiteralOrInterfaceMember()
1750 (nextCp == lexer::LEX_CHAR_LEFT_PAREN || nextCp == lexer::LEX_CHAR_LESS_THAN)) { in ParseTypeLiteralOrInterfaceMember()
1754 lexer::SourcePosition startLoc = Lexer()->GetToken().Start(); in ParseTypeLiteralOrInterfaceMember()
1755 bool isReadonly = Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_READONLY && in ParseTypeLiteralOrInterfaceMember()
1756 nextCp != lexer::LEX_CHAR_LEFT_PAREN && nextCp != lexer::LEX_CHAR_COLON && in ParseTypeLiteralOrInterfaceMember()
1757 nextCp != lexer::LEX_CHAR_COMMA; in ParseTypeLiteralOrInterfaceMember()
1759 Lexer()->NextToken(); // eat 'readonly" in ParseTypeLiteralOrInterfaceMember()
1762 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET && in ParseTypeLiteralOrInterfaceMember()
1779 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS) { in ValidateFunctionParam()
1818 ES2PANDA_ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS); in ParseFunctionParams()
1819 Lexer()->NextToken(); in ParseFunctionParams()
1824 while (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS) { in ParseFunctionParams()
1842 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_COMMA && in ParseFunctionParams()
1843 Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS) { in ParseFunctionParams()
1847 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COMMA) { in ParseFunctionParams()
1848 Lexer()->NextToken(); in ParseFunctionParams()
1852 ES2PANDA_ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS); in ParseFunctionParams()
1853 Lexer()->NextToken(); in ParseFunctionParams()
1860 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COLON) { in ParseClassKeyAnnotation()
1861 Lexer()->NextToken(); // eat ':' in ParseClassKeyAnnotation()
1872 …if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS && desc->isPrivate… in ValidateClassMethodStart()
1876 …if (typeAnnotation == nullptr && (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_… in ValidateClassMethodStart()
1877Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LESS_THAN)) { in ValidateClassMethodStart()
1907 lexer::SourcePosition *propEnd) in ParseClassMethod()
1986 bool TSParser::IsModifierKind(const lexer::Token &token) in IsModifierKind()
1989 case lexer::TokenType::KEYW_PUBLIC: in IsModifierKind()
1990 case lexer::TokenType::KEYW_PRIVATE: in IsModifierKind()
1991 case lexer::TokenType::KEYW_PROTECTED: in IsModifierKind()
1992 case lexer::TokenType::KEYW_STATIC: in IsModifierKind()
1993 case lexer::TokenType::KEYW_ASYNC: in IsModifierKind()
1994 case lexer::TokenType::KEYW_ABSTRACT: in IsModifierKind()
1995 case lexer::TokenType::KEYW_DECLARE: in IsModifierKind()
1996 case lexer::TokenType::KEYW_READONLY: in IsModifierKind()
2007 if (Lexer()->GetToken().IsReservedTypeName()) { in CheckIfTypeParameterNameIsReserved()
2021 Lexer()->NextToken(); // eat left square bracket in ParseComputedClassFieldOrIndexSignature()
2023 if (Lexer()->GetToken().Type() == lexer::TokenType::LITERAL_IDENT && in ParseComputedClassFieldOrIndexSignature()
2024 Lexer()->Lookahead() == lexer::LEX_CHAR_COLON) { in ParseComputedClassFieldOrIndexSignature()
2025 auto id = AllocNode<ir::Identifier>(Lexer()->GetToken().Ident(), Allocator()); in ParseComputedClassFieldOrIndexSignature()
2027 id->SetRange(Lexer()->GetToken().Loc()); in ParseComputedClassFieldOrIndexSignature()
2029 Lexer()->NextToken(); // eat param in ParseComputedClassFieldOrIndexSignature()
2031 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_COLON) { in ParseComputedClassFieldOrIndexSignature()
2035 Lexer()->NextToken(); // eat ':' in ParseComputedClassFieldOrIndexSignature()
2047 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET) { in ParseComputedClassFieldOrIndexSignature()
2052 Lexer()->NextToken(lexer::NextTokenFlags::KEYWORD_TO_IDENT); in ParseComputedClassFieldOrIndexSignature()
2064 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET) { in ParseComputedClassFieldOrIndexSignature()
2073 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COLON) { in ParseFunctionReturnType()
2074 Lexer()->NextToken(); // eat ':' in ParseFunctionReturnType()
2095 std::tuple<bool, ir::BlockStatement *, lexer::SourcePosition, bool> TSParser::ParseFunctionBody( in ParseFunctionBody()
2102 lexer::SourcePosition endLoc = Lexer()->GetToken().End(); in ParseFunctionBody()
2104 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_BRACE) { in ParseFunctionBody()
2127 ir::Identifier *local = ParseNamedImport(&Lexer()->GetToken()); in ParseImportDefaultSpecifier()
2128 Lexer()->NextToken(); // eat local name in ParseImportDefaultSpecifier()
2130 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_SUBSTITUTION) { in ParseImportDefaultSpecifier()
2131 Lexer()->NextToken(); // eat substitution in ParseImportDefaultSpecifier()
2132 if (Lexer()->GetToken().Type() != lexer::TokenType::LITERAL_IDENT) { in ParseImportDefaultSpecifier()
2144 Lexer()->NextToken(); // eat specifier name in ParseImportDefaultSpecifier()
2146 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COMMA) { in ParseImportDefaultSpecifier()
2147 Lexer()->NextToken(); // eat comma in ParseImportDefaultSpecifier()
2155 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COLON) { in ParseCatchParamTypeAnnotation()
2156 Lexer()->NextToken(); // eat ':' in ParseCatchParamTypeAnnotation()
2162 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_SUBSTITUTION) { in ParseCatchParamTypeAnnotation()
2174 void TSParser::ReportIllegalBreakError(const lexer::SourcePosition &pos) in ReportIllegalBreakError()