Author: Owen Pan Date: 2023-11-15T14:28:37-08:00 New Revision: b04664be6f484551ba34e5e34c511e77d5af709a
URL: https://github.com/llvm/llvm-project/commit/b04664be6f484551ba34e5e34c511e77d5af709a DIFF: https://github.com/llvm/llvm-project/commit/b04664be6f484551ba34e5e34c511e77d5af709a.diff LOG: [clang-format] Handle constrained auto in QualifierAlignment (#72251) Fixed #69610. Added: Modified: clang/lib/Format/QualifierAlignmentFixer.cpp clang/unittests/Format/QualifierFixerTest.cpp Removed: ################################################################################ diff --git a/clang/lib/Format/QualifierAlignmentFixer.cpp b/clang/lib/Format/QualifierAlignmentFixer.cpp index 7167e50ec724eab..e2fab1c1e3c2a37 100644 --- a/clang/lib/Format/QualifierAlignmentFixer.cpp +++ b/clang/lib/Format/QualifierAlignmentFixer.cpp @@ -346,6 +346,9 @@ const FormatToken *LeftRightQualifierAlignmentFixer::analyzeRight( } } + if (Next->is(tok::kw_auto)) + TypeToken = Next; + // Place the Qualifier at the end of the list of qualifiers. while (isQualifier(TypeToken->getNextNonComment())) { // The case `volatile Foo::iter const` -> `Foo::iter const volatile` @@ -446,6 +449,9 @@ const FormatToken *LeftRightQualifierAlignmentFixer::analyzeLeft( return false; } + if (Tok->endsSequence(tok::kw_auto, tok::identifier)) + return false; + return true; }; diff --git a/clang/unittests/Format/QualifierFixerTest.cpp b/clang/unittests/Format/QualifierFixerTest.cpp index 73814e7414f5e7d..a56323a88f4a04d 100644 --- a/clang/unittests/Format/QualifierFixerTest.cpp +++ b/clang/unittests/Format/QualifierFixerTest.cpp @@ -352,6 +352,11 @@ TEST_F(QualifierFixerTest, RightQualifier) { verifyFormat("auto const &ir = i;", "const auto &ir = i;", Style); verifyFormat("auto const *ip = &i;", "const auto *ip = &i;", Style); + verifyFormat("void f(Concept auto const &x);", + "void f(const Concept auto &x);", Style); + verifyFormat("void f(std::integral auto const &x);", + "void f(const std::integral auto &x);", Style); + verifyFormat("Foo<Foo<int> const> P;\n#if 0\n#else\n#endif", "Foo<const Foo<int>> P;\n#if 0\n#else\n#endif", Style); @@ -653,6 +658,11 @@ TEST_F(QualifierFixerTest, LeftQualifier) { verifyFormat("const auto &ir = i;", "auto const &ir = i;", Style); verifyFormat("const auto *ip = &i;", "auto const *ip = &i;", Style); + verifyFormat("void f(const Concept auto &x);", + "void f(Concept auto const &x);", Style); + verifyFormat("void f(const std::integral auto &x);", + "void f(std::integral auto const &x);", Style); + verifyFormat("Foo<const Foo<int>> P;\n#if 0\n#else\n#endif", "Foo<Foo<int> const> P;\n#if 0\n#else\n#endif", Style); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits