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;