]> granicus.if.org Git - clang/commitdiff
clang-format: Don't confuse operator[] with lambdas.
authorDaniel Jasper <djasper@google.com>
Fri, 6 Sep 2013 21:25:51 +0000 (21:25 +0000)
committerDaniel Jasper <djasper@google.com>
Fri, 6 Sep 2013 21:25:51 +0000 (21:25 +0000)
Before:
  double &operator[](int i) { return 0; } int i;

After:
  double &operator[](int i) { return 0; }
  int i;

This fixes llvm.org/PR17134.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190207 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Format/UnwrappedLineParser.cpp
unittests/Format/FormatTest.cpp

index 814ccf42a88314c5039122e9d8cea0dfe3805d25..521df8f02852f7ad5925e0615ee8bd52dc9412b0 100644 (file)
@@ -676,7 +676,8 @@ void UnwrappedLineParser::parseStructuralElement() {
 void UnwrappedLineParser::tryToParseLambda() {
   // FIXME: This is a dirty way to access the previous token. Find a better
   // solution.
-  if (!Line->Tokens.empty() && Line->Tokens.back().Tok->is(tok::identifier)) {
+  if (!Line->Tokens.empty() &&
+      Line->Tokens.back().Tok->isOneOf(tok::identifier, tok::kw_operator)) {
     nextToken();
     return;
   }
index 57aa9ca40143e42063bd4025ad74f687e072e2cf..ae35cccc4348b2b076ead378496946569bfbb920 100644 (file)
@@ -6399,6 +6399,8 @@ TEST_F(FormatTest, FormatsLambdas) {
 
   // Not lambdas.
   verifyFormat("constexpr char hello[]{ \"hello\" };");
+  verifyFormat("double &operator[](int i) { return 0; }\n"
+               "int i;");
 }
 
 TEST_F(FormatTest, FormatsBlocks) {