Lines Matching refs:lexer_
86 ASSERT(lexer_->GetToken().Type() == lexer::TokenType::KEYW_YIELD);
88 lexer::SourcePosition startLoc = lexer_->GetToken().Start();
89 lexer::SourcePosition endLoc = lexer_->GetToken().End();
91 if (lexer_->GetToken().Flags() & lexer::TokenFlags::HAS_ESCAPE) {
95 lexer_->NextToken();
100 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_MULTIPLY && !lexer_->GetToken().NewLine()) {
102 lexer_->NextToken();
106 } else if (!lexer_->GetToken().NewLine() && lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_BRACE &&
107 lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS &&
108 lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET &&
109 lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_COMMA &&
110 lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_SEMI_COLON &&
111 lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_COLON &&
112 lexer_->GetToken().Type() != lexer::TokenType::EOS) {
125 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COMMA &&
135 lexer_->NextToken(); // eat 'as'
151 asExpr->SetRange({startLoc, lexer_->GetToken().End()});
153 if (Extension() == ScriptExtension::TS && lexer_->GetToken().Type() == lexer::TokenType::LITERAL_IDENT &&
154 lexer_->GetToken().KeywordType() == lexer::TokenType::KEYW_AS &&
166 lexer_->NextToken(); // eat 'satisfies'
172 satisfiesExpr->SetRange({startLoc, lexer_->GetToken().End()});
174 if (Extension() == ScriptExtension::TS && lexer_->GetToken().Type() == lexer::TokenType::LITERAL_IDENT &&
175 lexer_->GetToken().KeywordType() == lexer::TokenType::KEYW_SATISFIES) {
184 if (lexer_->GetToken().Type() == lexer::TokenType::KEYW_YIELD && !(flags & ExpressionParseFlags::DISALLOW_YIELD)) {
190 if (Extension() == ScriptExtension::TS && lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LESS_THAN) {
191 const auto startPos = lexer_->Save();
202 lexer_->Rewind(startPos);
208 if (lexer_->GetToken().NewLine()) {
212 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COMMA &&
224 lexer::SourcePosition startLoc = lexer_->GetToken().Start();
228 lexer_->NextToken();
233 while (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET) {
234 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COMMA) {
236 omitted->SetRange(lexer_->GetToken().Loc());
238 lexer_->NextToken();
245 } else if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_PERIOD_PERIOD_PERIOD) {
255 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COMMA) {
260 lexer_->NextToken(); // eat comma
262 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET) {
270 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET) {
277 arrayExpressionNode->SetRange({startLoc, lexer_->GetToken().End()});
278 lexer_->NextToken();
285 lexer::Token::IsTsParamToken(lexer_->GetToken().Type(), lexer_->Lookahead())) {
291 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_SUBSTITUTION &&
294 } else if (!inPattern && lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_SUBSTITUTION) {
387 lexer_->NextToken(); // eat '=>'
392 lexer::SourcePosition bodyStart = lexer_->GetToken().Start();
394 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_BRACE) {
399 lexer_->NextToken();
402 body->SetRange({bodyStart, lexer_->GetToken().End()});
404 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_BRACE) {
408 lexer_->NextToken();
432 return ArrowFunctionDescriptor {std::move(params), paramScope, lexer_->GetToken().Start(), arrowStatus};
487 ASSERT(lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_ARROW);
489 if (lexer_->GetToken().NewLine()) {
509 ASSERT(lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LESS_THAN);
510 lexer::SourcePosition startLoc = lexer_->GetToken().Start();
514 if (typeParamDecl == nullptr || lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS) {
528 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COLON) {
529 lexer_->NextToken(); // eat ':'
536 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_ARROW) {
549 ASSERT(lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LESS_THAN);
550 lexer::SourcePosition start = lexer_->GetToken().Start();
551 lexer_->NextToken(); // eat '<'
557 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_GREATER_THAN) {
561 lexer_->NextToken(); // eat '>'
564 typeAssertion->SetRange({start, lexer_->GetToken().End()});
571 ASSERT(lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS);
572 lexer::SourcePosition start = lexer_->GetToken().Start();
573 lexer_->NextToken();
576 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_PERIOD_PERIOD_PERIOD) {
583 lexer::Token::IsTsParamToken(lexer_->GetToken().Type(), lexer_->Lookahead())) {
587 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS) {
591 lexer_->NextToken();
594 if (Extension() == ScriptExtension::TS && lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COLON) {
595 lexer_->NextToken(); // eat ':'
601 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_ARROW) {
608 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS) {
609 lexer_->NextToken();
612 if (Extension() == ScriptExtension::TS && lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COLON) {
613 lexer_->NextToken(); // eat ':'
619 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_ARROW) {
634 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS) {
639 expr->SetRange({start, lexer_->GetToken().End()});
640 lexer_->NextToken();
643 lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COLON)) {
647 const auto startPos = lexer_->Save();
649 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COLON) {
650 lexer_->NextToken(); // eat ':'
657 lexer_->Rewind(startPos);
662 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_ARROW) {
663 lexer_->Rewind(startPos);
744 lexer::TokenType tokenType = lexer_->GetToken().Type();
757 lexer_->NextToken();
760 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_COLON) {
764 lexer_->NextToken();
772 if (lexer_->GetToken().NewLine()) {
816 lexer_->NextToken();
842 lexer_->NextToken();
852 lexer::TokenType keywordType = lexer_->GetToken().KeywordType();
854 !(flags & ExpressionParseFlags::EXP_DISALLOW_AS) && !lexer_->GetToken().NewLine()) {
858 !lexer_->GetToken().NewLine()) {
873 lexer::SourcePosition startLoc = lexer_->GetToken().Start();
879 lexer_->ResetTokenEnd();
880 const auto startPos = lexer_->Save();
882 lexer_->AssignTokenTaggedTemplate();
884 lexer_->ScanString<LEX_CHAR_BACK_TICK>();
885 util::StringView cooked = lexer_->GetToken().String();
886 bool escapeError = lexer_->GetToken().EscapeError();
888 lexer_->Rewind(startPos);
889 auto [raw, end, scanExpression] = lexer_->ScanTemplateString();
894 lexer::SourcePosition {end, lexer_->Line()}});
898 lexer_->ScanTemplateStringEnd();
905 lexer::TemplateLiteralParserContext ctx(lexer_);
906 lexer_->PushTemplateContext(&ctx);
907 lexer_->NextToken();
911 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_BRACE) {
919 templateNode->SetRange({startLoc, lexer_->GetToken().End()});
921 lexer_->NextToken();
928 lexer::SourcePosition start = lexer_->GetToken().Start();
930 lexer_->NextToken(); // eat new
942 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_SHIFT) {
943 lexer_->BackwardToken(lexer::TokenType::PUNCTUATOR_LESS_THAN, 1);
945 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LESS_THAN) {
955 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS) {
962 lexer_->NextToken(); // eat left pranthesis
965 while (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS) {
968 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_PERIOD_PERIOD_PERIOD) {
976 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COMMA) {
977 lexer_->NextToken(); // eat comma
980 if (lexer_->GetToken().Type() == lexer::TokenType::EOS) {
986 newExprNode->SetRange({start, lexer_->GetToken().End()});
988 lexer_->NextToken();
1000 lexer::SourceRange loc = lexer_->GetToken().Loc();
1002 if (lexer_->Lookahead() == LEX_CHAR_DOT) {
1003 lexer_->NextToken();
1004 lexer_->NextToken();
1006 if (lexer_->GetToken().Type() == lexer::TokenType::LITERAL_IDENT && lexer_->GetToken().Ident().Is("target")) {
1011 if (lexer_->GetToken().Flags() & lexer::TokenFlags::HAS_ESCAPE) {
1017 lexer_->NextToken();
1027 switch (lexer_->GetToken().Type()) {
1032 auto *identNode = AllocNode<ir::Identifier>(lexer_->GetToken().Ident());
1034 identNode->SetRange(lexer_->GetToken().Loc());
1036 lexer_->NextToken();
1039 lexer::Token::IsTsParamToken(lexer_->GetToken().Type(), lexer_->Lookahead())) {
1048 trueNode->SetRange(lexer_->GetToken().Loc());
1050 lexer_->NextToken();
1055 falseNode->SetRange(lexer_->GetToken().Loc());
1057 lexer_->NextToken();
1062 nullNode->SetRange(lexer_->GetToken().Loc());
1064 lexer_->NextToken();
1070 if (lexer_->GetToken().Flags() & lexer::TokenFlags::NUMBER_BIGINT) {
1071 numberNode = AllocNode<ir::BigIntLiteral>(lexer_->GetToken().BigInt());
1073 numberNode = AllocNode<ir::NumberLiteral>(lexer_->GetToken().Number(), lexer_->GetToken().String());
1076 numberNode->SetRange(lexer_->GetToken().Loc());
1078 lexer_->NextToken();
1082 auto *stringNode = AllocNode<ir::StringLiteral>(lexer_->GetToken().String());
1083 stringNode->SetRange(lexer_->GetToken().Loc());
1085 lexer_->NextToken();
1090 lexer_->ResetTokenEnd();
1091 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_DIVIDE_EQUAL) {
1092 lexer_->BackwardToken(lexer::TokenType::PUNCTUATOR_DIVIDE, 1);
1094 auto regexp = lexer_->ScanRegExp();
1105 regexpNode->SetRange(lexer_->GetToken().Loc());
1107 lexer_->NextToken();
1125 lexer::SourcePosition startLoc = lexer_->GetToken().Start();
1135 thisExprNode->SetRange(lexer_->GetToken().Loc());
1137 lexer_->NextToken(); // eat this
1142 superExprNode->SetRange(lexer_->GetToken().Loc());
1144 lexer_->NextToken(); // eat super
1146 if ((lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_PERIOD ||
1147 lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET) &&
1152 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS &&
1260 lexer::TokenType operatorType = lexer_->GetToken().Type();
1271 lexer_->NextToken();
1338 ASSERT(lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS);
1341 lexer_->NextToken();
1344 while (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS) {
1346 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_PERIOD_PERIOD_PERIOD) {
1355 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COMMA) {
1356 lexer_->NextToken();
1357 } else if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS) {
1363 callExpr->SetRange({callee->Start(), lexer_->GetToken().End()});
1366 lexer_->NextToken();
1368 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS) {
1381 lexer::TokenType tokenType = lexer_->GetToken().Type();
1402 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS) {
1419 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_BACK_TICK) {
1433 lexer::TokenType tokenType = lexer_->GetToken().Type();
1441 property = AllocNode<ir::Identifier>(lexer_->GetToken().Ident());
1443 property->SetRange(lexer_->GetToken().Loc());
1444 end = lexer_->GetToken().End();
1445 lexer_->NextToken();
1449 lexer_->NextToken(); // eat '['
1452 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET) {
1455 end = lexer_->GetToken().End();
1456 lexer_->NextToken();
1470 const auto savedPos = lexer_->Save();
1472 switch (lexer_->GetToken().Type()) {
1479 if (!lexer_->CheckArrow()) {
1511 lexer_->Rewind(savedPos);
1515 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS) {
1523 lexer_->Rewind(savedPos);
1529 if (Extension() == ScriptExtension::TS && lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COLON) {
1530 lexer_->NextToken(); // eat ':'
1535 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_ARROW) {
1560 switch (lexer_->GetToken().Type()) {
1591 if (Extension() != ScriptExtension::TS || lexer_->Lookahead() == LEX_CHAR_LESS_THAN) {
1595 const auto savedPos = lexer_->Save();
1598 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_SHIFT) {
1599 lexer_->BackwardToken(lexer::TokenType::PUNCTUATOR_LESS_THAN, 1);
1614 lexer_->Rewind(savedPos);
1618 if (IsGenericInstantiation() || lexer_->GetToken().NewLine()) {
1625 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS) {
1633 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_BACK_TICK) {
1642 lexer_->Rewind(savedPos);
1652 switch (lexer_->GetToken().Type()) {
1655 lexer_->NextToken(lexer::LexerNextTokenFlags::KEYWORD_TO_IDENT); // eat ?.
1660 lexer_->NextToken(lexer::LexerNextTokenFlags::KEYWORD_TO_IDENT); // eat period
1664 lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_HASH_MARK) {
1671 lexer::SourcePosition memberStart = lexer_->GetToken().Start();
1672 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_HASH_MARK) {
1677 lexer_->NextToken(lexer::LexerNextTokenFlags::KEYWORD_TO_IDENT);
1680 if (lexer_->GetToken().Type() != lexer::TokenType::LITERAL_IDENT) {
1683 auto *identNode = AllocNode<ir::Identifier>(lexer_->GetToken().Ident());
1684 identNode->SetRange(lexer_->GetToken().Loc());
1685 lexer_->NextToken();
1706 lexer_->NextToken(); // eat '['
1709 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET) {
1717 returnExpression->SetRange({startPos, lexer_->GetToken().End()});
1718 lexer_->NextToken();
1747 if (Extension() != ScriptExtension::TS || !returnExpression || lexer_->GetToken().NewLine()) {
1755 returnExpression->SetRange({startLoc, lexer_->GetToken().End()});
1756 lexer_->NextToken();
1823 bool isAsync = lexer_->GetToken().IsAsyncModifier();
1824 lexer::SourcePosition startLoc = lexer_->GetToken().Start();
1827 if (lexer_->GetToken().NewLine() && returnExpression->IsArrowFunctionExpression()) {
1831 if (isAsync && !lexer_->GetToken().NewLine()) {
1852 if (!lexer_->GetToken().NewLine() && lexer::Token::IsUpdateToken(lexer_->GetToken().Type())) {
1857 returnExpression = AllocNode<ir::UpdateExpression>(returnExpression, lexer_->GetToken().Type(), false);
1859 returnExpression->SetRange({start, lexer_->GetToken().End()});
1860 lexer_->NextToken();
1875 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_QUESTION_MARK) {
1890 lexer_->NextToken(); // eat '?'
1893 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COLON) {
1894 lexer_->NextToken(); // eat ':'
1899 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_SUBSTITUTION) {
1916 switch (lexer_->GetToken().Type()) {
1935 returnNode = AllocNode<ir::Identifier>(lexer_->GetToken().Ident());
1937 returnNode->SetRange(lexer_->GetToken().Loc());
1938 lexer_->NextToken();
1948 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_SUBSTITUTION) {
1960 lexer_->NextToken();
1963 lexer_->GetToken().Type() == lexer::TokenType::KEYW_YIELD) {
1978 const auto asyncPos = lexer_->Save();
1979 lexer_->NextToken();
1981 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS &&
1982 lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_COLON &&
1983 lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_COMMA &&
1984 lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_BRACE) {
1985 if (lexer_->GetToken().NewLine()) {
1993 lexer_->Rewind(asyncPos);
2039 char32_t nextCp = lexer_->Lookahead();
2040 lexer::TokenType keywordType = lexer_->GetToken().KeywordType();
2044 lexer_->Rewind(*startPos);
2045 lexer_->NextToken();
2046 lexer::SourcePosition start = lexer_->GetToken().Start();
2048 if (lexer_->GetToken().Type() != lexer::TokenType::LITERAL_IDENT) {
2052 if (lexer_->GetToken().KeywordType() >= lexer::TokenType::KEYW_PRIVATE &&
2053 lexer_->GetToken().KeywordType() <= lexer::TokenType::KEYW_DECLARE) {
2054 ThrowSyntaxError(" Unexpected reserved word", lexer_->GetToken().Start());
2057 const util::StringView &ident = lexer_->GetToken().Ident();
2060 key->SetRange(lexer_->GetToken().Loc());
2064 value->SetRange(lexer_->GetToken().Loc());
2073 lexer_->NextToken(); // substitution
2074 lexer_->NextToken(); // eat substitution
2084 end = lexer_->GetToken().End();
2085 lexer_->NextToken();
2097 if (lexer_->GetToken().IsAsyncModifier()) {
2101 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_MULTIPLY) {
2106 lexer_->NextToken();
2110 lexer::TokenFlags currentTokenFlags = lexer_->GetToken().Flags();
2111 char32_t nextCp = lexer_->Lookahead();
2112 lexer::TokenType keywordType = lexer_->GetToken().KeywordType();
2118 lexer_->NextToken(lexer::LexerNextTokenFlags::KEYWORD_TO_IDENT);
2128 lexer_->NextToken(lexer::LexerNextTokenFlags::KEYWORD_TO_IDENT);
2143 lexer_->NextToken(lexer::LexerNextTokenFlags::KEYWORD_TO_IDENT);
2151 switch (lexer_->GetToken().Type()) {
2153 const util::StringView &ident = lexer_->GetToken().Ident();
2155 key->SetRange(lexer_->GetToken().Loc());
2159 const util::StringView &string = lexer_->GetToken().String();
2161 key->SetRange(lexer_->GetToken().Loc());
2165 if (lexer_->GetToken().Flags() & lexer::TokenFlags::NUMBER_BIGINT) {
2166 key = AllocNode<ir::BigIntLiteral>(lexer_->GetToken().BigInt());
2168 key = AllocNode<ir::NumberLiteral>(lexer_->GetToken().Number(), lexer_->GetToken().String());
2171 key->SetRange(lexer_->GetToken().Loc());
2175 lexer_->NextToken(); // eat left square bracket
2179 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_SQUARE_BRACKET) {
2189 lexer_->NextToken();
2202 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_COLON) {
2206 lexer_->NextToken(); // eat colon
2221 lexer_->NextToken();
2245 const auto startPos = lexer_->Save();
2246 lexer_->NextToken(lexer::LexerNextTokenFlags::KEYWORD_TO_IDENT);
2247 lexer::SourcePosition start = lexer_->GetToken().Start();
2249 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_PERIOD_PERIOD_PERIOD) {
2253 if (lexer_->GetToken().Type() == lexer::TokenType::LITERAL_IDENT) {
2257 } else if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_MULTIPLY) {
2261 bool isComputed = lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_SQUARE_BRACKET;
2265 if ((lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS ||
2266 lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LESS_THAN) &&
2290 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_COMMA &&
2291 lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_BRACE) {
2295 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COMMA &&
2296 lexer_->Lookahead() == LEX_CHAR_RIGHT_BRACE) {
2297 lexer_->NextToken();
2306 ASSERT(lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LEFT_BRACE);
2307 lexer::SourcePosition start = lexer_->GetToken().Start();
2312 if (lexer_->Lookahead() == LEX_CHAR_RIGHT_BRACE) {
2313 lexer_->NextToken();
2316 while (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_BRACE) {
2324 objectExpression->SetRange({start, lexer_->GetToken().End()});
2325 lexer_->NextToken();
2332 lexer::Token::IsTsParamToken(lexer_->GetToken().Type(), lexer_->Lookahead())) {
2338 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_SUBSTITUTION &&
2341 } else if (!inPattern && lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_SUBSTITUTION) {
2360 while (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COMMA) {
2361 lexer_->NextToken();
2363 if (acceptRest && lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_PERIOD_PERIOD_PERIOD) {
2369 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS && lexer_->CheckArrow()) {
2389 if (Extension() == ScriptExtension::TS && lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_LESS_THAN) {
2393 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_HASH_MARK) {
2395 if (lexer_->GetToken().Type() != lexer::TokenType::KEYW_IN) {
2401 if (!lexer_->GetToken().IsUnary()) {
2405 lexer::TokenType operatorType = lexer_->GetToken().Type();
2406 lexer::SourcePosition start = lexer_->GetToken().Start();
2407 lexer_->NextToken();
2447 lexer::SourcePosition startLoc = lexer_->GetToken().Start();
2448 lexer::SourcePosition endLoc = lexer_->GetToken().End();
2449 lexer_->NextToken(); // eat import
2452 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_PERIOD) {
2457 lexer_->NextToken(); // eat dot
2459 if (lexer_->GetToken().Type() != lexer::TokenType::LITERAL_IDENT ||
2460 lexer_->GetToken().KeywordType() != lexer::TokenType::KEYW_META) {
2467 lexer_->NextToken();
2471 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS) {
2475 lexer_->NextToken(); // eat left parentheses
2477 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_PERIOD_PERIOD_PERIOD) {
2484 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_COMMA) {
2488 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_RIGHT_PARENTHESIS) {
2493 importExpression->SetRange({startLoc, lexer_->GetToken().End()});
2495 lexer_->NextToken(); // eat right paren
2506 lexer_->NextToken();
2507 if (lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_BRACE) {
2536 lexer::SourcePosition startLoc = lexer_->GetToken().Start();
2547 lexer_->NextToken();
2549 if (lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_MULTIPLY) {
2551 lexer_->NextToken();
2555 lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS) ||
2557 lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LEFT_PARENTHESIS &&
2558 lexer_->GetToken().Type() != lexer::TokenType::PUNCTUATOR_LESS_THAN)) {
2559 if (lexer_->GetToken().Type() != lexer::TokenType::LITERAL_IDENT) {
2565 ident = AllocNode<ir::Identifier>(lexer_->GetToken().Ident());
2566 ident->SetRange(lexer_->GetToken().Loc());
2567 lexer_->NextToken();
2575 lexer_->NextToken();
2593 ASSERT(lexer_->GetToken().Type() == lexer::TokenType::PUNCTUATOR_HASH_MARK);
2598 auto start = lexer_->GetToken().Start();
2601 lexer_->NextToken(lexer::LexerNextTokenFlags::KEYWORD_TO_IDENT);
2603 auto token = lexer_->GetToken();
2620 privateIdent->SetRange({start, lexer_->GetToken().End()});
2621 lexer_->NextToken();