[clang] [clang-format] Fix a crash in `QualifierAlignment: Right` (PR #120821)

Owen Pan via cfe-commits cfe-commits at lists.llvm.org
Fri Dec 20 20:07:26 PST 2024


https://github.com/owenca created https://github.com/llvm/llvm-project/pull/120821

Fixes #120793.

>From 9a2a33fe4568f0b344e9093b99c87ad1a0f7e8a4 Mon Sep 17 00:00:00 2001
From: Owen Pan <owenpiano at gmail.com>
Date: Fri, 20 Dec 2024 20:02:26 -0800
Subject: [PATCH] [clang-format] Fix a crash in `QualifierAlignment: Right`

Fixes #120793.
---
 clang/lib/Format/QualifierAlignmentFixer.cpp  | 2 +-
 clang/unittests/Format/QualifierFixerTest.cpp | 5 +++++
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/clang/lib/Format/QualifierAlignmentFixer.cpp b/clang/lib/Format/QualifierAlignmentFixer.cpp
index 593f8efff25aa9..530b2dd538cee0 100644
--- a/clang/lib/Format/QualifierAlignmentFixer.cpp
+++ b/clang/lib/Format/QualifierAlignmentFixer.cpp
@@ -348,7 +348,7 @@ const FormatToken *LeftRightQualifierAlignmentFixer::analyzeRight(
       }
     }
 
-    if (Next->is(tok::kw_auto))
+    if (Next && Next->is(tok::kw_auto))
       TypeToken = Next;
 
     // Place the Qualifier at the end of the list of qualifiers.
diff --git a/clang/unittests/Format/QualifierFixerTest.cpp b/clang/unittests/Format/QualifierFixerTest.cpp
index f9255c6e4c7088..9ed567445eb07e 100644
--- a/clang/unittests/Format/QualifierFixerTest.cpp
+++ b/clang/unittests/Format/QualifierFixerTest.cpp
@@ -531,6 +531,11 @@ TEST_F(QualifierFixerTest, RightQualifier) {
   verifyFormat("float (C::*const p)(int);", Style);
   verifyFormat("float (C::*p)(int) const;", Style);
   verifyFormat("float const (C::*p)(int);", "const float (C::*p)(int);", Style);
+
+  Style.BreakBeforeBraces = FormatStyle::BS_Custom;
+  Style.BraceWrapping.AfterFunction = true;
+  verifyFormat("auto foo() -> T const { return bar; }",
+               "auto foo() -> const T { return bar; }", Style);
 }
 
 TEST_F(QualifierFixerTest, LeftQualifier) {



More information about the cfe-commits mailing list