]> granicus.if.org Git - clang/commitdiff
Do not traverse the break-state when we know we cannot break anyway.
authorManuel Klimek <klimek@google.com>
Tue, 15 Jan 2013 16:41:02 +0000 (16:41 +0000)
committerManuel Klimek <klimek@google.com>
Tue, 15 Jan 2013 16:41:02 +0000 (16:41 +0000)
This is an optimization that djasper spottet. For now, we do not format
anything after the first token that belongs to such an implicit string
literal. All our state is not made for handling that anyway, so we'll
revisit this if we find a problem.

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

lib/Format/Format.cpp

index a6b9e2031d3c8fe726ecb12077def68f9570545e..445a4064b46d2d3cabf394ca6368d01e4371a251 100644 (file)
@@ -253,6 +253,12 @@ public:
 
     // Start iterating at 1 as we have correctly formatted of Token #0 above.
     while (State.NextToken != NULL) {
+      if (State.NextToken->Type == TT_ImplicitStringLiteral)
+        // We will not touch the rest of the white space in this
+        // \c UnwrappedLine. The returned value can also not matter, as we
+        // cannot continue an top-level implicit string literal on the next
+        // line.
+        return 0;
       if (FitsOnALine) {
         addTokenToState(false, false, State);
       } else {
@@ -374,11 +380,6 @@ private:
     assert(State.Stack.size());
     unsigned ParenLevel = State.Stack.size() - 1;
 
-    if (Current.Type == TT_ImplicitStringLiteral) {
-      moveStateToNextToken(State);
-      return;
-    }
-
     if (Newline) {
       unsigned WhitespaceStartColumn = State.Column;
       if (Current.is(tok::r_brace)) {