From 73775947dc86f5acd410a2e9e56ca31723c809b5 Mon Sep 17 00:00:00 2001 From: jiangkaiwen Date: Thu, 2 Mar 2023 20:06:18 +0800 Subject: [PATCH] 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 8b2210e8dc..6ba93184a8 100644 --- a/es2panda/lexer/lexer.cpp +++ b/es2panda/lexer/lexer.cpp @@ -304,6 +304,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); @@ -421,6 +422,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 2c8dfed8b2..621ccf078c 100644 --- a/test262/es2021_tests.txt +++ b/test262/es2021_tests.txt @@ -1121,6 +1121,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