From 2cd550c56bb177c5b2ec6454147365d7a51c1557 Mon Sep 17 00:00:00 2001 From: Lukas Kurz Date: Mon, 15 Apr 2024 13:48:08 +0200 Subject: [PATCH] Don't break ternary with decimal numbers --- lib/Parser/Scan.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/Parser/Scan.cpp b/lib/Parser/Scan.cpp index 72603dbe4b1..6dcedc9973c 100644 --- a/lib/Parser/Scan.cpp +++ b/lib/Parser/Scan.cpp @@ -1783,6 +1783,11 @@ tokens Scanner::ScanCore(bool identifyKwds) } else if (m_scriptContext->GetConfig()->IsESOptionalChainingEnabled() && this->PeekFirst(p, last) == '.') { + // `a?.3:0` is actually a ternary operator containing the number `0.3` + bool isTernary = CharTypes::_C_DIG == this->charClassifier->GetCharType(this->PeekFirst(p + 1, last)); + if (isTernary) + break; + p++; token = tkOptChain; break;