[PATCH] Don't remove unknown tokens that are not whitespace (PR17215).

Daniel Jasper djasper at google.com
Tue Oct 8 08:48:23 PDT 2013



================
Comment at: lib/Format/TokenAnnotator.cpp:575
@@ +574,3 @@
+      Current.Type = TT_ImplicitStringLiteral;
+    if (Current.Type != TT_Unknown)
+      return;
----------------
This change is not a no-op!! Move to line 608 and add:

// FIXME: Add tests that break if this gets moved up.

if no tests are failing now...

================
Comment at: lib/Format/TokenAnnotator.cpp:573
@@ -571,1 +572,3 @@
   void determineTokenType(FormatToken &Current) {
+    if (Current.Previous && Current.Previous->Tok.is(tok::unknown))
+      Current.Type = TT_ImplicitStringLiteral;
----------------
Can this actually make a difference? If yes, how? It seems like we convert tok::unknown to tok::string_literal or set Type = TT_ImplicitStringLiteral earlier or merge this into another token's whitespace..

================
Comment at: lib/Format/Format.cpp:685
@@ -679,3 +684,3 @@
     unsigned WhitespaceLength = TrailingWhitespace;
-    while (FormatTok->Tok.is(tok::unknown)) {
+    while (isWhitespaceToken(*FormatTok)) {
       for (int i = 0, e = FormatTok->TokenText.size(); i != e; ++i) {
----------------
I'd probably inline this function. It is used only once and I find it important at this point to know that it does not look into FormatTok's content. Not quite sure whether it is better, though.


http://llvm-reviews.chandlerc.com/D1858



More information about the cfe-commits mailing list