Lines Matching refs:Lexer

121 std::unique_ptr<lexer::Lexer> TSParser::InitLexer(const SourceFile &sourceFile)
131 ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_AT);
133 lexer::SourcePosition start = Lexer()->GetToken().Start();
134 Lexer()->NextToken(); // eat '@'
136 if (Lexer()->GetToken().Type() != lexer::TokenType::LITERAL_IDENT) {
140 ir::Expression *expr = AllocNode<ir::Identifier>(Lexer()->GetToken().Ident(), Allocator());
141 expr->SetRange(Lexer()->GetToken().Loc());
142 Lexer()->NextToken();
144 while (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_PERIOD) {
145 Lexer()->NextToken(lexer::NextTokenFlags::KEYWORD_TO_IDENT);
147 if (Lexer()->GetToken().Type() != lexer::TokenType::LITERAL_IDENT) {
151 auto *identNode = AllocNode<ir::Identifier>(Lexer()->GetToken().Ident(), Allocator());
152 identNode->SetRange(Lexer()->GetToken().Loc());
156 Lexer()->NextToken();
159 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS) {
184 ASSERT(Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_TYPE);
185 lexer::SourcePosition typeStart = Lexer()->GetToken().Start();
186 Lexer()->NextToken(); // eat type keyword
188 if (Lexer()->GetToken().Type() != lexer::TokenType::LITERAL_IDENT) {
192 if (Lexer()->GetToken().IsReservedTypeName()) {
194 errMsg.append(TokenToString(Lexer()->GetToken().KeywordType()));
199 const util::StringView &ident = Lexer()->GetToken().Ident();
202 id->SetRange(Lexer()->GetToken().Loc());
203 Lexer()->NextToken();
206 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LESS_THAN) {
211 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_SUBSTITUTION) {
215 Lexer()->NextToken(); // eat '='
222 typeAliasDecl->SetRange({typeStart, Lexer()->GetToken().End()});
229 switch (Lexer()->GetToken().KeywordType()) {
251 switch (Lexer()->GetToken().Type()) {
287 if ((((*options) & TypeAnnotationParsingOptions::BREAK_AT_NEW_LINE) != 0) && Lexer()->GetToken().NewLine()) {
297 if (CurrentLiteralIsBasicType() && Lexer()->Lookahead() != lexer::LEX_CHAR_DOT) {
306 auto pos = Lexer()->Save();
307 Lexer()->NextToken();
310 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_MINUS ||
311 Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_PLUS) {
312 Lexer()->NextToken();
313 result = Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_READONLY;
314 Lexer()->Rewind(pos);
318 if (Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_READONLY) {
319 Lexer()->NextToken();
322 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET) {
323 Lexer()->Rewind(pos);
327 Lexer()->NextToken();
329 if (Lexer()->GetToken().Type() != lexer::TokenType::LITERAL_IDENT) {
330 Lexer()->Rewind(pos);
334 Lexer()->NextToken();
336 result = Lexer()->GetToken().Type() == lexer::TokenType::KEYW_IN;
338 Lexer()->Rewind(pos);
344 ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::LITERAL_IDENT ||
345 Lexer()->GetToken().Type() == lexer::TokenType::KEYW_THIS);
347 auto pos = Lexer()->Save();
348 bool isAsserts = Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_ASSERTS;
350 Lexer()->NextToken();
353 if (Lexer()->GetToken().Type() != lexer::TokenType::LITERAL_IDENT &&
354 Lexer()->GetToken().Type() != lexer::TokenType::KEYW_THIS) {
355 Lexer()->Rewind(pos);
360 Lexer()->Rewind(pos);
364 Lexer()->NextToken();
366 bool result = Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_IS;
367 Lexer()->Rewind(pos);
373 if (Lexer()->GetToken().KeywordType() != lexer::TokenType::KEYW_ABSTRACT) {
377 lexer::LexerPosition pos = Lexer()->Save();
378 Lexer()->NextToken(); // eat 'abstract'
379 bool result = Lexer()->GetToken().Type() == lexer::TokenType::KEYW_NEW;
381 Lexer()->Rewind(pos);
388 ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::KEYW_IMPORT);
390 Lexer()->NextToken();
392 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS) {
396 Lexer()->NextToken();
405 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS) {
409 Lexer()->NextToken();
412 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_PERIOD) {
413 Lexer()->NextToken();
418 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_SHIFT ||
419 Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LESS_THAN) {
420 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_SHIFT) {
421 Lexer()->BackwardToken(lexer::TokenType::PUNCTUATOR_LESS_THAN, 1);
429 importType->SetRange({startLoc, Lexer()->GetToken().End()});
436 ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::KEYW_THIS);
445 returnType->SetRange(Lexer()->GetToken().Loc());
447 Lexer()->NextToken();
454 ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::KEYW_EXTENDS);
461 Lexer()->NextToken(); // eat 'extends'
472 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_QUESTION_MARK) {
476 Lexer()->NextToken(); // eat '?'
481 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_COLON) {
485 Lexer()->NextToken(); // eat ':'
502 if (Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_READONLY) {
503 lexer::SourcePosition typeOperatorStart = Lexer()->GetToken().Start();
504 Lexer()->NextToken();
521 if (Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_KEYOF) {
522 lexer::SourcePosition typeOperatorStart = Lexer()->GetToken().Start();
523 Lexer()->NextToken();
534 if (Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_INFER) {
541 lexer::SourcePosition inferStart = Lexer()->GetToken().Start();
542 Lexer()->NextToken();
548 inferType->SetRange({inferStart, Lexer()->GetToken().End()});
558 lexer::SourcePosition elementStart = Lexer()->GetToken().Start();
563 if (Lexer()->GetToken().Type() == lexer::TokenType::LITERAL_IDENT && !CurrentLiteralIsBasicType()) {
564 auto *elementIdent = AllocNode<ir::Identifier>(Lexer()->GetToken().Ident(), Allocator());
565 elementIdent->SetRange(Lexer()->GetToken().Loc());
567 if (Lexer()->Lookahead() == lexer::LEX_CHAR_COLON || Lexer()->Lookahead() == lexer::LEX_CHAR_QUESTION) {
572 Lexer()->NextToken(); // eat ident
574 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_QUESTION_MARK) {
575 Lexer()->NextToken(); // eat '?'
582 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_COLON) {
586 Lexer()->NextToken(); // eat ':'
594 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_COMMA &&
595 Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET) {
608 element->SetRange({elementStart, Lexer()->GetToken().End()});
615 ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET);
616 lexer::SourcePosition tupleStart = Lexer()->GetToken().Start();
621 Lexer()->NextToken(); // eat '['
623 while (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET) {
627 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET) {
631 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_COMMA) {
635 Lexer()->NextToken(); // eat ','
638 lexer::SourcePosition tupleEnd = Lexer()->GetToken().End();
639 Lexer()->NextToken(); // eat ']'
651 Lexer()->NextToken(); // eat '['
655 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET) {
659 Lexer()->NextToken(); // eat ']'
662 typeName->SetRange({typeName->AsTSIndexedAccessType()->ObjectType()->Start(), Lexer()->GetToken().End()});
663 } while (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET &&
664 Lexer()->Lookahead() != lexer::LEX_CHAR_RIGHT_SQUARE);
671 lexer::SourcePosition referenceStartLoc = Lexer()->GetToken().Start();
674 ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::KEYW_TYPEOF);
675 Lexer()->NextToken(); // eat 'typeof'
677 if (Lexer()->GetToken().Type() == lexer::TokenType::KEYW_IMPORT) {
682 if (Lexer()->GetToken().Type() != lexer::TokenType::LITERAL_IDENT) {
687 ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::LITERAL_IDENT ||
688 Lexer()->GetToken().Type() == lexer::TokenType::KEYW_EXTENDS);
690 ir::Expression *typeName = AllocNode<ir::Identifier>(Lexer()->GetToken().Ident(), Allocator());
691 typeName->SetRange(Lexer()->GetToken().Loc());
694 if (Lexer()->Lookahead() == lexer::LEX_CHAR_LESS_THAN) {
695 Lexer()->ForwardToken(lexer::TokenType::PUNCTUATOR_LESS_THAN, 1);
697 Lexer()->NextToken();
700 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_PERIOD) {
705 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LESS_THAN) {
714 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET &&
715 Lexer()->Lookahead() != lexer::LEX_CHAR_RIGHT_SQUARE) {
719 typeRef->SetRange({referenceStartLoc, Lexer()->GetToken().End()});
734 lexer::SourcePosition startLoc = Lexer()->GetToken().Start();
736 auto *paramName = AllocNode<ir::Identifier>(Lexer()->GetToken().Ident(), Allocator());
737 paramName->SetRange({Lexer()->GetToken().Start(), Lexer()->GetToken().End()});
739 Lexer()->NextToken();
741 Lexer()->NextToken(); // eat 'in'
757 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_MINUS &&
758 Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_PLUS &&
759 Lexer()->GetToken().KeywordType() != tokenType && Lexer()->GetToken().Type() != tokenType) {
763 auto result = Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_MINUS ? ir::MappedOption::MINUS
766 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_MINUS ||
767 Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_PLUS) {
768 Lexer()->NextToken();
771 if (Lexer()->GetToken().KeywordType() != tokenType && Lexer()->GetToken().Type() != tokenType) {
775 Lexer()->NextToken();
782 ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_BRACE);
784 lexer::SourcePosition startLoc = Lexer()->GetToken().Start();
785 Lexer()->NextToken(lexer::NextTokenFlags::KEYWORD_TO_IDENT); // eat '{'
789 Lexer()->NextToken(); // eat '['
793 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET) {
797 Lexer()->NextToken(); // eat ']'
802 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COLON) {
803 Lexer()->NextToken(); // eat ':'
808 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_SEMI_COLON &&
809 Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_BRACE) {
813 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_SEMI_COLON) {
814 Lexer()->NextToken(); // eat ';'
817 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_BRACE) {
823 mappedType->SetRange({startLoc, Lexer()->GetToken().End()});
825 Lexer()->NextToken(); // eat '}'
832 auto pos = Lexer()->Save();
833 lexer::SourcePosition startPos = Lexer()->GetToken().Start();
834 bool isAsserts = Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_ASSERTS;
836 Lexer()->NextToken(); // eat 'asserts'
837 if (Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_IS) {
839 Lexer()->Rewind(pos);
844 if (Lexer()->GetToken().Type() == lexer::TokenType::LITERAL_IDENT) {
845 parameterName = AllocNode<ir::Identifier>(Lexer()->GetToken().Ident(), Allocator());
850 parameterName->SetRange({Lexer()->GetToken().Start(), Lexer()->GetToken().End()});
852 Lexer()->NextToken();
858 if (isAsserts && Lexer()->GetToken().KeywordType() != lexer::TokenType::KEYW_IS) {
865 Lexer()->NextToken(); // eat 'is'
888 lexer::SourcePosition bodyStart = Lexer()->GetToken().Start();
890 lexer::SourcePosition bodyEnd = Lexer()->GetToken().End();
891 Lexer()->NextToken();
929 ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET);
930 Lexer()->NextToken(); // eat '['
932 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET) {
936 lexer::SourcePosition endLoc = Lexer()->GetToken().End();
937 Lexer()->NextToken(); // eat ']'
962 startLoc = Lexer()->GetToken().Start();
966 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_BITWISE_OR) {
970 Lexer()->NextToken(); // eat '|'
1005 startLoc = Lexer()->GetToken().Start();
1009 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_BITWISE_AND) {
1013 Lexer()->NextToken(); // eat '&'
1033 static ir::TypeNode *GetTypeAnnotationFromLiteral(TSParser *parser, lexer::Lexer *lexer)
1075 static ir::TypeNode *GetTypeAnnotation(TSParser *parser, lexer::Lexer *lexer)
1123 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_MINUS) {
1124 Lexer()->NextToken();
1126 if (Lexer()->GetToken().Type() != lexer::TokenType::LITERAL_NUMBER) {
1131 ir::TypeNode *typeAnnotation = ParseBasicTypeHelper::GetTypeAnnotation(this, Lexer());
1133 typeAnnotation->SetRange(Lexer()->GetToken().Loc());
1135 Lexer()->NextToken();
1145 lexer::SourcePosition typeStart = Lexer()->GetToken().Start();
1149 if (Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_ABSTRACT) {
1151 Lexer()->NextToken(); // eat 'abstract'
1156 if (Lexer()->GetToken().Type() == lexer::TokenType::KEYW_NEW) {
1157 Lexer()->NextToken(); // eat 'new'
1160 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS &&
1161 Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LESS_THAN) {
1166 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LESS_THAN || isConstructionType) {
1170 const auto startPos = Lexer()->Save();
1171 ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS);
1172 Lexer()->NextToken(); // eat '('
1178 Lexer()->Rewind(startPos);
1182 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COMMA ||
1183 Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_QUESTION_MARK ||
1184 Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COLON) {
1185 Lexer()->Rewind(startPos);
1189 if (throwError && Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS) {
1193 lexer::SourcePosition endLoc = Lexer()->GetToken().End();
1194 Lexer()->NextToken(); // eat ')'
1196 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_ARROW) {
1197 Lexer()->Rewind(startPos);
1212 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LESS_THAN) {
1216 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS) {
1227 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_ARROW) {
1231 Lexer()->NextToken(); // eat '=>'
1257 static ir::TypeNode *ParseKeywordTokens(TSParser *parser, lexer::Lexer *lexer, ir::TypeNode *typeAnnotation,
1311 static ir::TypeNode *ParsePunctuatorTokens(TSParser *parser, lexer::Lexer *lexer, ir::TypeNode *typeAnnotation,
1363 switch (Lexer()->GetToken().Type()) {
1388 ParseTypeAnnotationElementHelper::ParseKeywordTokens(this, Lexer(), typeAnnotation, options);
1394 ParseTypeAnnotationElementHelper::ParsePunctuatorTokens(this, Lexer(), typeAnnotation, options);
1413 if (Lexer()->Lookahead() == lexer::LEX_CHAR_LESS_THAN ||
1418 const auto savedPos = Lexer()->Save();
1420 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_SHIFT) {
1421 Lexer()->BackwardToken(lexer::TokenType::PUNCTUATOR_LESS_THAN, 1);
1428 Lexer()->Rewind(savedPos);
1432 if (Lexer()->GetToken().Type() == lexer::TokenType::EOS) {
1436 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS) {
1446 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_BACK_TICK) {
1455 Lexer()->Rewind(savedPos);
1461 return Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS &&
1462 Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LESS_THAN;
1467 auto *identNode = AllocNode<ir::Identifier>(Lexer()->GetToken().Ident(), Allocator());
1469 identNode->SetRange(Lexer()->GetToken().Loc());
1471 Lexer()->NextToken();
1480 lexer::SourcePosition memberStartLoc = Lexer()->GetToken().Start();
1483 Lexer()->NextToken(); // eat 'new' keyword
1487 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LESS_THAN) {
1491 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS) {
1500 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COLON) {
1501 Lexer()->NextToken(); // eat ':'
1511 signatureMember->SetRange({memberStartLoc, Lexer()->GetToken().End()});
1518 const auto savedPos = Lexer()->Save();
1520 Lexer()->NextToken(); // eat '['
1523 Lexer()->GetToken().Type() == lexer::TokenType::LITERAL_IDENT && Lexer()->Lookahead() == lexer::LEX_CHAR_COLON;
1525 Lexer()->Rewind(savedPos);
1533 Lexer()->NextToken(); // eat '['
1535 ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::LITERAL_IDENT);
1536 auto *key = AllocNode<ir::Identifier>(Lexer()->GetToken().Ident(), Allocator());
1537 key->SetRange(Lexer()->GetToken().Loc());
1539 Lexer()->NextToken(); // eat key
1541 ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COLON);
1543 Lexer()->NextToken(); // eat ':'
1556 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET) {
1560 Lexer()->NextToken(); // eat ']'
1562 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_COLON) {
1566 Lexer()->NextToken(); // eat ':'
1571 indexSignature->SetRange({startLoc, Lexer()->GetToken().End()});
1580 switch (Lexer()->GetToken().Type()) {
1582 const util::StringView &ident = Lexer()->GetToken().Ident();
1584 key->SetRange(Lexer()->GetToken().Loc());
1588 const util::StringView &string = Lexer()->GetToken().String();
1590 key->SetRange(Lexer()->GetToken().Loc());
1594 if ((Lexer()->GetToken().Flags() & lexer::TokenFlags::NUMBER_BIGINT) != 0) {
1595 key = AllocNode<ir::BigIntLiteral>(Lexer()->GetToken().BigInt());
1597 key = AllocNode<ir::NumberLiteral>(Lexer()->GetToken().GetNumber());
1600 key->SetRange(Lexer()->GetToken().Loc());
1604 Lexer()->NextToken(); // eat left square bracket
1609 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET) {
1619 Lexer()->NextToken();
1661 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_QUESTION_MARK) {
1664 Lexer()->NextToken(); // eat '?'
1667 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS ||
1668 Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LESS_THAN) {
1675 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LESS_THAN) {
1686 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COLON) {
1687 Lexer()->NextToken(); // eat ':'
1696 methodSignature->SetRange({startLoc, Lexer()->GetToken().End()});
1701 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COLON) {
1702 Lexer()->NextToken(); // eat ':'
1711 propertySignature->SetRange({startLoc, Lexer()->GetToken().End()});
1717 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_AT) {
1721 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS ||
1722 Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LESS_THAN) {
1726 char32_t nextCp = Lexer()->Lookahead();
1727 if (Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_NEW &&
1732 lexer::SourcePosition startLoc = Lexer()->GetToken().Start();
1733 bool isReadonly = Lexer()->GetToken().KeywordType() == lexer::TokenType::KEYW_READONLY &&
1737 Lexer()->NextToken(); // eat 'readonly"
1740 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET &&
1757 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS) {
1796 ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS);
1797 Lexer()->NextToken();
1802 while (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS) {
1820 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_COMMA &&
1821 Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS) {
1825 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COMMA) {
1826 Lexer()->NextToken();
1830 ASSERT(Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS);
1831 Lexer()->NextToken();
1838 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COLON) {
1839 Lexer()->NextToken(); // eat ':'
1850 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS && desc->isPrivateIdent) {
1854 if (typeAnnotation == nullptr && (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS ||
1855 Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LESS_THAN)) {
1986 if (Lexer()->GetToken().IsReservedTypeName()) {
2000 Lexer()->NextToken(); // eat left square bracket
2002 if (Lexer()->GetToken().Type() == lexer::TokenType::LITERAL_IDENT &&
2003 Lexer()->Lookahead() == lexer::LEX_CHAR_COLON) {
2004 auto id = AllocNode<ir::Identifier>(Lexer()->GetToken().Ident(), Allocator());
2005 id->SetRange(Lexer()->GetToken().Loc());
2007 Lexer()->NextToken(); // eat param
2009 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_COLON) {
2013 Lexer()->NextToken(); // eat ':'
2025 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET) {
2030 Lexer()->NextToken(lexer::NextTokenFlags::KEYWORD_TO_IDENT);
2042 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET) {
2051 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COLON) {
2052 Lexer()->NextToken(); // eat ':'
2080 lexer::SourcePosition endLoc = Lexer()->GetToken().End();
2082 if (Lexer()->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_BRACE) {
2104 ir::Identifier *local = ParseNamedImport(Lexer()->GetToken());
2105 Lexer()->NextToken(); // eat local name
2107 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_SUBSTITUTION) {
2108 Lexer()->NextToken(); // eat substitution
2109 if (Lexer()->GetToken().Type() != lexer::TokenType::LITERAL_IDENT) {
2122 Lexer()->NextToken(); // eat specifier name
2124 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COMMA) {
2125 Lexer()->NextToken(); // eat comma
2133 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COLON) {
2134 Lexer()->NextToken(); // eat ':'
2140 if (Lexer()->GetToken().Type() == lexer::TokenType::PUNCTUATOR_SUBSTITUTION) {