simplify this code and make it use highlight range.  This
makes -emit-html do nice things for code like:

#define FOO(X) y

int FOO(4
);

highlighting the FOO instance as well as the ) on the next line properly.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64710 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Rewrite/HTMLRewrite.cpp b/lib/Rewrite/HTMLRewrite.cpp
index 8942cec..cf49701 100644
--- a/lib/Rewrite/HTMLRewrite.cpp
+++ b/lib/Rewrite/HTMLRewrite.cpp
@@ -420,9 +420,6 @@
 /// macro expansions.  This won't be perfectly perfect, but it will be
 /// reasonably close.
 void html::HighlightMacros(Rewriter &R, FileID FID, Preprocessor& PP) {
-  
-  RewriteBuffer &RB = R.getEditBuffer(FID);
-  
   // Re-lex the raw token stream into a token buffer.
   const SourceManager &SM = PP.getSourceManager();
   std::vector<Token> TokenStream;
@@ -486,21 +483,9 @@
       continue;
     }
 
-    unsigned StartOffs = SM.getFileOffset(LLoc.first);
-
-    // Highlight the macro invocation itself.
-    RB.InsertTextAfter(StartOffs, "<span class='macro'>",
-                       strlen("<span class='macro'>"));
-
     assert(SM.getFileID(LLoc.second) == FID &&
            "Start and end of expansion must be in the same ultimate file!");
-    unsigned EndOffs = SM.getFileOffset(LLoc.second);
-    
-    // Get the size of current macro call itself.
-    unsigned TokLen = Lexer::MeasureTokenLength(LLoc.second, SM);
-    RB.InsertTextBefore(EndOffs+TokLen, "</span>", strlen("</span>"));
-    
-    
+
     std::string Expansion = PP.getSpelling(Tok);
     unsigned LineLen = Expansion.size();
     
@@ -535,9 +520,13 @@
       PP.Lex(Tok);
     }
     
-    // Insert the information about the expansion inside the macro span.
-    Expansion = "<span class='expansion'>" + Expansion + "</span>";
-    RB.InsertTextBefore(EndOffs+TokLen, Expansion.c_str(), Expansion.size());
+
+    // Insert the expansion as the end tag, so that multi-line macros all get
+    // highlighted.
+    Expansion = "<span class='expansion'>" + Expansion + "</span></span>";
+
+    HighlightRange(R, LLoc.first, LLoc.second,
+                   "<span class='macro'>", Expansion.c_str());
   }
 }