https://github.com/chaitanyav updated https://github.com/llvm/llvm-project/pull/159277
>From bee11d34f36de3f2a9071bbb413b6fbbbec5ae52 Mon Sep 17 00:00:00 2001 From: NagaChaitanya Vellanki <pnag...@protonmail.com> Date: Wed, 17 Sep 2025 00:04:24 -0700 Subject: [PATCH] [clang-format] Fix for BreakTemplateDeclarations and RequiresClausePosition when BreakTemplateDeclarations is set to yes and RequiresClausePosition is SingleLine or WithPreceding requires clause should be on the same line Fixes #150845 --- clang/lib/Format/TokenAnnotator.cpp | 6 ++++++ clang/unittests/Format/FormatTest.cpp | 8 ++++++++ 2 files changed, 14 insertions(+) diff --git a/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp index d97f56751ea69..d89d1cdd12c29 100644 --- a/clang/lib/Format/TokenAnnotator.cpp +++ b/clang/lib/Format/TokenAnnotator.cpp @@ -5854,6 +5854,12 @@ bool TokenAnnotator::mustBreakBefore(const AnnotatedLine &Line, // concept ... if (Right.is(tok::kw_concept)) return Style.BreakBeforeConceptDeclarations == FormatStyle::BBCDS_Always; + if (Style.BreakTemplateDeclarations == FormatStyle::BTDS_Yes && + Right.is(TT_RequiresClause) && + (Style.RequiresClausePosition == FormatStyle::RCPS_WithPreceding || + Style.RequiresClausePosition == FormatStyle::RCPS_SingleLine)) { + return false; + } return Style.BreakTemplateDeclarations == FormatStyle::BTDS_Yes || (Style.BreakTemplateDeclarations == FormatStyle::BTDS_Leave && Right.NewlinesBefore > 0); diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp index d9db06667d802..53b591bf504af 100644 --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -10848,6 +10848,14 @@ TEST_F(FormatTest, WrapsTemplateDeclarations) { "public:\n" " E *f();\n" "};"); + AlwaysBreak.RequiresClausePosition = FormatStyle::RCPS_SingleLine; + verifyFormat("template <typename T> requires std::floating_point<T>\n" + "using LerpValue = ClampedValue<T, T{0}, T{1}>;", + AlwaysBreak); + AlwaysBreak.RequiresClausePosition = FormatStyle::RCPS_WithPreceding; + verifyFormat("template <typename T> requires std::floating_point<T>\n" + "using LerpValue = ClampedValue<T, T{0}, T{1}>;", + AlwaysBreak); FormatStyle NeverBreak = getLLVMStyle(); NeverBreak.BreakTemplateDeclarations = FormatStyle::BTDS_No; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits