From d200a2b02e50b33511ff2ea26a2968301f06b170 Mon Sep 17 00:00:00 2001 From: Gaming4JC Date: Sun, 9 Jun 2019 01:35:28 -0400 Subject: 1337143 - Tweak ExportClause parsing to eliminate a peekToken where a simpler consuming getToken could be performed. --- js/src/frontend/Parser.cpp | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) (limited to 'js/src') diff --git a/js/src/frontend/Parser.cpp b/js/src/frontend/Parser.cpp index abb2d51ad..7e43bc3b5 100644 --- a/js/src/frontend/Parser.cpp +++ b/js/src/frontend/Parser.cpp @@ -4990,12 +4990,17 @@ Parser::exportDeclaration() // Handle the forms |export {}| and |export { ..., }| (where ... // is non empty), by escaping the loop early if the next token // is }. - if (!tokenStream.peekToken(&tt)) + if (!tokenStream.getToken(&tt)) return null(); + if (tt == TOK_RC) break; - MUST_MATCH_TOKEN(TOK_NAME, JSMSG_NO_BINDING_NAME); + if (tt != TOK_NAME) { + error(JSMSG_NO_BINDING_NAME); + return null(); + } + Node bindingName = newName(tokenStream.currentName()); if (!bindingName) return null(); @@ -5019,14 +5024,18 @@ Parser::exportDeclaration() handler.addList(kid, exportSpec); - bool matched; - if (!tokenStream.matchToken(&matched, TOK_COMMA)) + TokenKind next; + if (!tokenStream.getToken(&next)) return null(); - if (!matched) + + if (next == TOK_RC) break; - } - MUST_MATCH_TOKEN(TOK_RC, JSMSG_RC_AFTER_EXPORT_SPEC_LIST); + if (next != TOK_COMMA) { + error(JSMSG_RC_AFTER_EXPORT_SPEC_LIST); + return null(); + } + } // Careful! If |from| follows, even on a new line, it must start a // FromClause: -- cgit v1.2.3