diff options
-rw-r--r-- | lib/Format/TokenAnnotator.cpp | 3 | ||||
-rw-r--r-- | unittests/Format/FormatTest.cpp | 9 |
2 files changed, 11 insertions, 1 deletions
diff --git a/lib/Format/TokenAnnotator.cpp b/lib/Format/TokenAnnotator.cpp index 9802711834..e584eec368 100644 --- a/lib/Format/TokenAnnotator.cpp +++ b/lib/Format/TokenAnnotator.cpp @@ -2580,7 +2580,8 @@ bool TokenAnnotator::spaceRequiredBetween(const AnnotatedLine &Line, (Style.PointerAlignment != FormatStyle::PAS_Right && !Line.IsMultiVariableDeclStmt) && Left.Previous && - !Left.Previous->isOneOf(tok::l_paren, tok::coloncolon)); + !Left.Previous->isOneOf(tok::l_paren, tok::coloncolon, + tok::l_square)); if (Right.is(tok::star) && Left.is(tok::l_paren)) return false; const auto SpaceRequiredForArrayInitializerLSquare = diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp index dc20faf70c..0f5040488e 100644 --- a/unittests/Format/FormatTest.cpp +++ b/unittests/Format/FormatTest.cpp @@ -14074,6 +14074,15 @@ TEST_F(FormatTest, TypenameMacros) { verifyFormat("STACK_OF(int*)* a;", Macros); } +TEST_F(FormatTest, AmbersandInLamda) { + // Test case reported in https://bugs.llvm.org/show_bug.cgi?id=41899 + FormatStyle AlignStyle = getLLVMStyle(); + AlignStyle.PointerAlignment = FormatStyle::PAS_Left; + verifyFormat("auto lambda = [&a = a]() { a = 2; };", AlignStyle); + AlignStyle.PointerAlignment = FormatStyle::PAS_Right; + verifyFormat("auto lambda = [&a = a]() { a = 2; };", AlignStyle); +} + } // end namespace } // end namespace format } // end namespace clang |