Implemented tab usage only for indentation (http://llvm.org/PR17363)

Summary:
Changed UseTab to be a enum with three options: Never, Always,
ForIndentation (true/false are still supported when reading .clang-format).
IndentLevel should currently be propagated correctly for all tokens, except for
block comments. Please take a look at the general idea before I start dealing
with block comments.

Reviewers: klimek, djasper

Reviewed By: klimek

CC: cfe-commits

Differential Revision: http://llvm-reviews.chandlerc.com/D1770

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191527 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Format/ContinuationIndenter.cpp b/lib/Format/ContinuationIndenter.cpp
index 8b0baea..b3888c1 100644
--- a/lib/Format/ContinuationIndenter.cpp
+++ b/lib/Format/ContinuationIndenter.cpp
@@ -303,12 +303,13 @@
       State.Stack.back().BreakBeforeParameter = false;
 
     if (!DryRun) {
-      unsigned NewLines = 1;
+      unsigned Newlines = 1;
       if (Current.is(tok::comment))
-        NewLines = std::max(NewLines, std::min(Current.NewlinesBefore,
+        Newlines = std::max(Newlines, std::min(Current.NewlinesBefore,
                                                Style.MaxEmptyLinesToKeep + 1));
-      Whitespaces.replaceWhitespace(Current, NewLines, State.Column,
-                                    State.Column, State.Line->InPPDirective);
+      Whitespaces.replaceWhitespace(Current, Newlines, State.Line->Level,
+                                    State.Column, State.Column,
+                                    State.Line->InPPDirective);
     }
 
     if (!Current.isTrailingComment())
@@ -363,7 +364,8 @@
     unsigned Spaces = State.NextToken->SpacesRequiredBefore + ExtraSpaces;
 
     if (!DryRun)
-      Whitespaces.replaceWhitespace(Current, 0, Spaces, State.Column + Spaces);
+      Whitespaces.replaceWhitespace(Current, /*Newlines=*/0, /*IndentLevel=*/0,
+                                    Spaces, State.Column + Spaces);
 
     if (Current.Type == TT_ObjCSelectorName &&
         State.Stack.back().ColonPos == 0) {
@@ -693,21 +695,22 @@
           Text.startswith(Prefix = "L\""))) ||
         (Text.startswith(Prefix = "_T(\"") && Text.endswith(Postfix = "\")")) ||
         getRawStringLiteralPrefixPostfix(Text, Prefix, Postfix)) {
-      Token.reset(new BreakableStringLiteral(Current, StartColumn, Prefix,
-                                             Postfix, State.Line->InPPDirective,
-                                             Encoding, Style));
+      Token.reset(new BreakableStringLiteral(
+          Current, State.Line->Level, StartColumn, Prefix, Postfix,
+          State.Line->InPPDirective, Encoding, Style));
     } else {
       return 0;
     }
   } else if (Current.Type == TT_BlockComment && Current.isTrailingComment()) {
     Token.reset(new BreakableBlockComment(
-        Current, StartColumn, Current.OriginalColumn, !Current.Previous,
-        State.Line->InPPDirective, Encoding, Style));
+        Current, State.Line->Level, StartColumn, Current.OriginalColumn,
+        !Current.Previous, State.Line->InPPDirective, Encoding, Style));
   } else if (Current.Type == TT_LineComment &&
              (Current.Previous == NULL ||
               Current.Previous->Type != TT_ImplicitStringLiteral)) {
-    Token.reset(new BreakableLineComment(
-        Current, StartColumn, State.Line->InPPDirective, Encoding, Style));
+    Token.reset(new BreakableLineComment(Current, State.Line->Level,
+                                         StartColumn, State.Line->InPPDirective,
+                                         Encoding, Style));
   } else {
     return 0;
   }