[cfe-commits] r170875 - /cfe/trunk/lib/Format/Format.cpp
David Blaikie
dblaikie at gmail.com
Fri Dec 21 11:53:48 PST 2012
On Fri, Dec 21, 2012 at 2:20 AM, Daniel Jasper <djasper at google.com> wrote:
> Author: djasper
> Date: Fri Dec 21 04:20:02 2012
> New Revision: 170875
>
> URL: http://llvm.org/viewvc/llvm-project?rev=170875&view=rev
> Log:
> Use OperatorPrecedence.h in clang-format
>
> No indented functional changes other than handling more operators
> correctly.
That sounds like a testable intended functional change, or am I
missing something?
>
> Modified:
> cfe/trunk/lib/Format/Format.cpp
>
> Modified: cfe/trunk/lib/Format/Format.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/Format.cpp?rev=170875&r1=170874&r2=170875&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Format/Format.cpp (original)
> +++ cfe/trunk/lib/Format/Format.cpp Fri Dec 21 04:20:02 2012
> @@ -19,6 +19,7 @@
> #include "clang/Format/Format.h"
> #include "UnwrappedLineParser.h"
> #include "clang/Basic/SourceManager.h"
> +#include "clang/Basic/OperatorPrecedence.h"
> #include "clang/Lex/Lexer.h"
>
> #include <string>
> @@ -650,11 +651,12 @@
> TokenAnnotation &Annotation = Annotations[i];
> const FormatToken &Tok = Line.Tokens[i];
>
> - if (Tok.Tok.is(tok::equal) || Tok.Tok.is(tok::plusequal) ||
> - Tok.Tok.is(tok::minusequal) || Tok.Tok.is(tok::starequal) ||
> - Tok.Tok.is(tok::slashequal))
> + if (getBinOpPrecedence(Tok.Tok.getKind(), true, true) == prec::Assignment)
> AssignmentEncountered = true;
>
> + if (Annotation.Type != TokenAnnotation::TT_Unknown)
> + continue;
> +
> if (Tok.Tok.is(tok::star) || Tok.Tok.is(tok::amp)) {
> Annotation.Type = determineStarAmpUsage(i, AssignmentEncountered);
> } else if (Tok.Tok.is(tok::minus) || Tok.Tok.is(tok::plus)) {
> @@ -663,9 +665,9 @@
> Annotation.Type = determineIncrementUsage(i);
> } else if (Tok.Tok.is(tok::exclaim)) {
> Annotation.Type = TokenAnnotation::TT_UnaryOperator;
> - } else if (isBinaryOperator(Line.Tokens[i]))
> + } else if (isBinaryOperator(Line.Tokens[i])) {
> Annotation.Type = TokenAnnotation::TT_BinaryOperator;
> - else if (Tok.Tok.is(tok::comment)) {
> + } else if (Tok.Tok.is(tok::comment)) {
> StringRef Data(SourceMgr.getCharacterData(Tok.Tok.getLocation()),
> Tok.Tok.getLength());
> if (Data.startswith("//"))
> @@ -677,23 +679,8 @@
> }
>
> bool isBinaryOperator(const FormatToken &Tok) {
> - switch (Tok.Tok.getKind()) {
> - case tok::equal:
> - case tok::equalequal:
> - case tok::exclaimequal:
> - case tok::star:
> - //case tok::amp:
> - case tok::plus:
> - case tok::slash:
> - case tok::minus:
> - case tok::ampamp:
> - case tok::pipe:
> - case tok::pipepipe:
> - case tok::percent:
> - return true;
> - default:
> - return false;
> - }
> + // Comma is a binary operator, but does not behave a such wrt. formatting.
> + return getBinOpPrecedence(Tok.Tok.getKind(), true, true) > prec::Comma;
> }
>
> TokenAnnotation::TokenType determineStarAmpUsage(unsigned Index,
> @@ -796,12 +783,11 @@
> if (Right.Tok.is(tok::r_paren) || Right.Tok.is(tok::l_brace) ||
> Right.Tok.is(tok::comment) || Right.Tok.is(tok::greater))
> return false;
> - if (isBinaryOperator(Left) || Right.Tok.is(tok::lessless) ||
> - Right.Tok.is(tok::arrow) || Right.Tok.is(tok::period))
> - return true;
> - return Right.Tok.is(tok::colon) || Left.Tok.is(tok::comma) || Left.Tok.is(
> - tok::semi) || Left.Tok.is(tok::equal) || Left.Tok.is(tok::ampamp) ||
> - Left.Tok.is(tok::pipepipe) || Left.Tok.is(tok::l_brace) ||
> + return (isBinaryOperator(Left) && Left.Tok.isNot(tok::lessless)) ||
> + Left.Tok.is(tok::comma) || Right.Tok.is(tok::lessless) ||
> + Right.Tok.is(tok::arrow) || Right.Tok.is(tok::period) ||
> + Right.Tok.is(tok::colon) || Left.Tok.is(tok::semi) ||
> + Left.Tok.is(tok::l_brace) ||
> (Left.Tok.is(tok::l_paren) && !Right.Tok.is(tok::r_paren));
> }
>
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
More information about the cfe-commits
mailing list