[llvm-branch-commits] [clang] release/21.x: [clang-format] Disable IntegerLiteralSeparator for C++ before c++14 (#151273) (PR #151362)

via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Wed Jul 30 09:51:54 PDT 2025


https://github.com/llvmbot created https://github.com/llvm/llvm-project/pull/151362

Backport 5fc482cfc0fa70c98e14d64d83dffbf7da03c303

Requested by: @owenca

>From dd68262f577de21b19dda270e5b97e2327aa8186 Mon Sep 17 00:00:00 2001
From: Owen Pan <owenpiano at gmail.com>
Date: Wed, 30 Jul 2025 09:43:46 -0700
Subject: [PATCH] [clang-format] Disable IntegerLiteralSeparator for C++ before
 c++14 (#151273)

Fixes #151102

(cherry picked from commit 5fc482cfc0fa70c98e14d64d83dffbf7da03c303)
---
 clang/lib/Format/IntegerLiteralSeparatorFixer.cpp     | 11 +++++++----
 .../unittests/Format/IntegerLiteralSeparatorTest.cpp  |  3 +++
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/clang/lib/Format/IntegerLiteralSeparatorFixer.cpp b/clang/lib/Format/IntegerLiteralSeparatorFixer.cpp
index 87823ae32b113..aa752f5e3148a 100644
--- a/clang/lib/Format/IntegerLiteralSeparatorFixer.cpp
+++ b/clang/lib/Format/IntegerLiteralSeparatorFixer.cpp
@@ -45,15 +45,18 @@ std::pair<tooling::Replacements, unsigned>
 IntegerLiteralSeparatorFixer::process(const Environment &Env,
                                       const FormatStyle &Style) {
   switch (Style.Language) {
-  case FormatStyle::LK_Cpp:
-  case FormatStyle::LK_ObjC:
-    Separator = '\'';
-    break;
   case FormatStyle::LK_CSharp:
   case FormatStyle::LK_Java:
   case FormatStyle::LK_JavaScript:
     Separator = '_';
     break;
+  case FormatStyle::LK_Cpp:
+  case FormatStyle::LK_ObjC:
+    if (Style.Standard >= FormatStyle::LS_Cpp14) {
+      Separator = '\'';
+      break;
+    }
+    [[fallthrough]];
   default:
     return {};
   }
diff --git a/clang/unittests/Format/IntegerLiteralSeparatorTest.cpp b/clang/unittests/Format/IntegerLiteralSeparatorTest.cpp
index b1e42e924e05c..67b9cc9037905 100644
--- a/clang/unittests/Format/IntegerLiteralSeparatorTest.cpp
+++ b/clang/unittests/Format/IntegerLiteralSeparatorTest.cpp
@@ -83,6 +83,9 @@ TEST_F(IntegerLiteralSeparatorTest, SingleQuoteAsSeparator) {
                "d = 5678_km;\n"
                "h = 0xDEF_u16;",
                Style);
+
+  Style.Standard = FormatStyle::LS_Cpp11;
+  verifyFormat("ld = 1234L;", Style);
 }
 
 TEST_F(IntegerLiteralSeparatorTest, UnderscoreAsSeparator) {



More information about the llvm-branch-commits mailing list