From: Daniel Jasper Date: Wed, 7 Aug 2013 16:29:23 +0000 (+0000) Subject: clang-format: Fix corner case in OpenMP pragma formatting. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1dc6f745eb19c94527503012d798dc9b9b5ba6da;p=clang clang-format: Fix corner case in OpenMP pragma formatting. Before: #pragma omp reduction( | : var) After: #pragma omp reduction(| : var) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187892 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Format/TokenAnnotator.cpp b/lib/Format/TokenAnnotator.cpp index 67091b5068..4af23b01c2 100644 --- a/lib/Format/TokenAnnotator.cpp +++ b/lib/Format/TokenAnnotator.cpp @@ -1236,7 +1236,8 @@ bool TokenAnnotator::spaceRequiredBefore(const AnnotatedLine &Line, if (Tok.isOneOf(tok::arrowstar, tok::periodstar) || Tok.Previous->isOneOf(tok::arrowstar, tok::periodstar)) return false; - if (Tok.Type == TT_BinaryOperator || Tok.Previous->Type == TT_BinaryOperator) + if ((Tok.Type == TT_BinaryOperator && !Tok.Previous->is(tok::l_paren)) || + Tok.Previous->Type == TT_BinaryOperator) return true; if (Tok.Previous->Type == TT_TemplateCloser && Tok.is(tok::l_paren)) return false; diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp index fe10de98fe..2b1b94c4c6 100644 --- a/unittests/Format/FormatTest.cpp +++ b/unittests/Format/FormatTest.cpp @@ -5532,6 +5532,11 @@ TEST_F(FormatTest, AllmanBraceBreaking) { BreakBeforeBrace); } +TEST_F(FormatTest, UnderstandsPragmas) { + verifyFormat("#pragma omp reduction(| : var)"); + verifyFormat("#pragma omp reduction(+ : var)"); +} + bool allStylesEqual(ArrayRef Styles) { for (size_t i = 1; i < Styles.size(); ++i) if (!(Styles[0] == Styles[i]))