aboutsummaryrefslogtreecommitdiff
path: root/lib/Format/Format.cpp
diff options
context:
space:
mode:
authorDaniel Jasper <djasper@google.com>2012-12-05 07:51:39 +0000
committerDaniel Jasper <djasper@google.com>2012-12-05 07:51:39 +0000
commit112fb27ab48ae3256173806a073ba7b88aa6531a (patch)
tree18c48bfe7063c6b9709739a5e0332a0dbd403189 /lib/Format/Format.cpp
parentac31c8346f1ce3628b5a7fb862fefab5b94f8e82 (diff)
Small tweaks to automatic formatting.
Recognize '!=' as a binary operator and assume that there are no type definitions on the RHS of an assignment. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169363 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Format/Format.cpp')
-rw-r--r--lib/Format/Format.cpp15
1 files changed, 13 insertions, 2 deletions
diff --git a/lib/Format/Format.cpp b/lib/Format/Format.cpp
index d928aa9580..22805f691e 100644
--- a/lib/Format/Format.cpp
+++ b/lib/Format/Format.cpp
@@ -547,12 +547,16 @@ public:
private:
void determineTokenTypes() {
+ bool EqualEncountered = false;
for (int i = 0, e = Line.Tokens.size(); i != e; ++i) {
TokenAnnotation &Annotation = Annotations[i];
const FormatToken &Tok = Line.Tokens[i];
+ if (Tok.Tok.is(tok::equal))
+ EqualEncountered = true;
+
if (Tok.Tok.is(tok::star) || Tok.Tok.is(tok::amp))
- Annotation.Type = determineStarAmpUsage(i);
+ Annotation.Type = determineStarAmpUsage(i, EqualEncountered);
else if (isUnaryOperator(i))
Annotation.Type = TokenAnnotation::TT_UnaryOperator;
else if (isBinaryOperator(Line.Tokens[i]))
@@ -583,6 +587,7 @@ private:
switch (Tok.Tok.getKind()) {
case tok::equal:
case tok::equalequal:
+ case tok::exclaimequal:
case tok::star:
//case tok::amp:
case tok::plus:
@@ -598,7 +603,8 @@ private:
}
}
- TokenAnnotation::TokenType determineStarAmpUsage(unsigned Index) {
+ TokenAnnotation::TokenType determineStarAmpUsage(unsigned Index,
+ bool EqualEncountered) {
if (Index == Annotations.size())
return TokenAnnotation::TT_Unknown;
@@ -611,6 +617,11 @@ private:
Line.Tokens[Index + 1].Tok.isLiteral())
return TokenAnnotation::TT_BinaryOperator;
+ // It is very unlikely that we are going to find a pointer or reference type
+ // definition on the RHS of an assignment.
+ if (EqualEncountered)
+ return TokenAnnotation::TT_BinaryOperator;
+
return TokenAnnotation::TT_PointerOrReference;
}