diff --git a/jerry-core/parser/js/js-lexer.c b/jerry-core/parser/js/js-lexer.c
index 81ea37942..69f88b5d9 100644
--- a/jerry-core/parser/js/js-lexer.c
+++ b/jerry-core/parser/js/js-lexer.c
@@ -1416,7 +1416,7 @@ lexer_parse_number (parser_context_t *context_p) /**< context */
}
#endif /* ENABLED (JERRY_ESNEXT) */
else if (source_p[1] >= LIT_CHAR_0
- && source_p[1] <= LIT_CHAR_7)
+ && source_p[1] <= LIT_CHAR_9)
{
context_p->token.extra_value = LEXER_NUMBER_OCTAL;
#if ENABLED (JERRY_BUILTIN_BIGINT)
@@ -1429,11 +1429,18 @@ lexer_parse_number (parser_context_t *context_p) /**< context */
}
lexer_check_numbers (context_p, &source_p, source_end_p, LIT_CHAR_7, true);
- }
- else if (source_p[1] >= LIT_CHAR_8
- && source_p[1] <= LIT_CHAR_9)
- {
- parser_raise_error (context_p, PARSER_ERR_INVALID_NUMBER);
+
+ if (source_p < source_end_p
+ && source_p[0] >= LIT_CHAR_8
+ && source_p[0] <= LIT_CHAR_9)
+ {
+#if ENABLED (JERRY_ESNEXT)
+ lexer_check_numbers (context_p, &source_p, source_end_p, LIT_CHAR_9, true);
+ context_p->token.extra_value = LEXER_NUMBER_DECIMAL;
+#else /* !ENABLED (JERRY_ESNEXT) */
+ parser_raise_error (context_p, PARSER_ERR_INVALID_NUMBER);
+#endif /* ENABLED (JERRY_ESNEXT) */
+ }
}
#if ENABLED (JERRY_ESNEXT)
else if (LEXER_TO_ASCII_LOWERCASE (source_p[1]) == LIT_CHAR_LOWERCASE_B)
diff --git a/tests/jerry/es.next/decimal-with-leading-zero.js b/tests/jerry/es.next/decimal-with-leading-zero.js
new file mode 100644
index 000000000..b66863055
--- /dev/null
+++ b/tests/jerry/es.next/decimal-with-leading-zero.js
@@ -0,0 +1,47 @@
+// Copyright JS Foundation and other contributors, http://js.foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// valid decimal with leading zero
+assert (01239 === 1239)
+assert (0999 === 999)
+assert (0000000000009 === 9)
+
+function invalid_strict_cases (string)
+{
+ "use strict"
+ try {
+ eval (string)
+ assert (false)
+ } catch (e) {
+ assert (true)
+ }
+}
+
+// invalid strict test-cases
+invalid_strict_cases ("09")
+invalid_strict_cases ("01239")
+
+// invalid to create bigint with decimal with leading zero
+function invalid_cases (string)
+{
+ try {
+ eval (string)
+ assert (false)
+ } catch (e) {
+ assert (true)
+ }
+}
+
+invalid_cases ("09n")
+invalid_cases ("01239n")
diff --git a/tests/test262-esnext-excludelist.xml b/tests/test262-esnext-excludelist.xml
index af5e89b0d..e6d1fe4af 100644
--- a/tests/test262-esnext-excludelist.xml
+++ b/tests/test262-esnext-excludelist.xml
@@ -1220,7 +1220,6 @@
-
@@ -10172,5 +10171,4 @@
-