From 7a620c776e3befc153f500a55dec3d390524f4b8 Mon Sep 17 00:00:00 2001 From: jiangkaiwen Date: Thu, 2 Mar 2023 20:06:18 +0800 Subject: [PATCH] fixed 7377594 from https://gitee.com/jiangkaiwen678217/arkcompiler_ets_frontend/pulls/896 Es2abc supports new feature BigInt Issue:I6J58G Signed-off-by: jiangkaiwen Change-Id: I3af30e2c6d2e6f35f358d4ec0304349eeb24b881 --- es2panda/lexer/lexer.cpp | 5 +++++ es2panda/lexer/lexer.h | 1 + test262/es2021_tests.txt | 18 ++++++++++++++++++ 3 files changed, 24 insertions(+) diff --git a/es2panda/lexer/lexer.cpp b/es2panda/lexer/lexer.cpp index dd34c9c4fc..7119403d91 100644 --- a/es2panda/lexer/lexer.cpp +++ b/es2panda/lexer/lexer.cpp @@ -306,6 +306,7 @@ void Lexer::ScanDecimalNumbers(bool allowNumericSeparator) } case LEX_CHAR_UNDERSCORE: { Iterator().Backward(1); + isUnderscore_ = true; if (Iterator().Peek() == LEX_CHAR_DOT || !allowNumericSeparator || !allowNumericOnNext) { Iterator().Forward(1); @@ -423,6 +424,10 @@ void Lexer::ScanNumber(bool allowNumericSeparator, bool allowBigInt) if (!allowBigInt) { ThrowError("Invalid BigInt number"); } + if (isUnderscore_) { + ConvertNumber(exponentSignPos); + isUnderscore_ = false; + } return; } diff --git a/es2panda/lexer/lexer.h b/es2panda/lexer/lexer.h index b830227025..8e56da6ed2 100644 --- a/es2panda/lexer/lexer.h +++ b/es2panda/lexer/lexer.h @@ -174,6 +174,7 @@ private: const parser::ParserContext *parserContext_; util::StringView source_; LexerPosition pos_; + bool isUnderscore_ = false; }; class TemplateLiteralParserContext { diff --git a/test262/es2021_tests.txt b/test262/es2021_tests.txt index 5e78caa91e..ca9dbaa902 100644 --- a/test262/es2021_tests.txt +++ b/test262/es2021_tests.txt @@ -739,6 +739,24 @@ annexB/built-ins/RegExp/incomplete_hex_unicode_escape.js annexB/built-ins/RegExp/named-groups/non-unicode-malformed-lookbehind.js annexB/built-ins/RegExp/named-groups/non-unicode-malformed.js language/literals/bigint/numeric-separators/numeric-separator-literal-unicode-err.js +language/literals/bigint/numeric-separators/numeric-separator-literal-bil-bd-nsl-bd-err.js +language/literals/bigint/numeric-separators/numeric-separator-literal-dds-nsl-dds-dunder-err.js +language/literals/bigint/numeric-separators/numeric-separator-literal-dd-nsl-dds-dunder-err.js +language/literals/bigint/numeric-separators/numeric-separator-literal-dds-nsl-err.js +language/literals/bigint/numeric-separators/numeric-separator-literal-bil-nsl-bd-dunder-err.js +language/literals/bigint/numeric-separators/numeric-separator-literal-hil-nsl-hd-dunder-err.js +language/literals/bigint/numeric-separators/numeric-separator-literal-bil-nsl-bd-err.js +language/literals/bigint/numeric-separators/numeric-separator-literal-hil-hd-nsl-hd-err.js +language/literals/bigint/numeric-separators/numeric-separator-literal-oil-nsl-od-dunder-err.js +language/literals/bigint/numeric-separators/numeric-separator-literal-lol-00-err.js +language/literals/bigint/numeric-separators/numeric-separator-literal-hil-nsl-hd-err.js +language/literals/bigint/numeric-separators/numeric-separator-literal-unicode-err.js +language/literals/bigint/numeric-separators/numeric-separator-literal-dd-nsl-err.js +language/literals/bigint/numeric-separators/numeric-separator-literal-lol-01-err.js +language/literals/bigint/numeric-separators/numeric-separator-literal-lol-07-err.js +language/literals/bigint/numeric-separators/numeric-separator-literal-nzd-nsl-dds-dunder-err.js +language/literals/bigint/numeric-separators/numeric-separator-literal-oil-nsl-od-err.js +language/literals/bigint/numeric-separators/numeric-separator-literal-oil-od-nsl-od-err.js language/literals/string/unicode-escape-nls-err-single.js language/literals/string/unicode-escape-no-hex-err-single.js language/literals/string/unicode-escape-nls-err-double.js -- Gitee