[llvm-cov] Simplify the way expansion views are rendered (NFC)

If a sub-view has already been rendered, it's helpful to re-render the
expansion site before rendering the next expansion view. Make this fact
explicit in the rendering interface, instead of hiding it behind an
awkward Optional<LineRef> parameter.

llvm-svn: 273789
diff --git a/llvm/tools/llvm-cov/SourceCoverageView.h b/llvm/tools/llvm-cov/SourceCoverageView.h
index 763529a..03c0742 100644
--- a/llvm/tools/llvm-cov/SourceCoverageView.h
+++ b/llvm/tools/llvm-cov/SourceCoverageView.h
@@ -16,7 +16,6 @@
 
 #include "CoverageViewOptions.h"
 #include "llvm/ProfileData/Coverage/CoverageMapping.h"
-#include "llvm/ADT/Optional.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include <vector>
 
@@ -163,16 +162,18 @@
                                    CoverageSegmentArray Segments,
                                    unsigned ViewDepth) = 0;
 
-  /// \brief Render an expansion view. If the expansion site must be re-rendered
-  /// for clarity, it is passed in via \p FirstLine.
-  virtual unsigned
-  renderExpansionView(raw_ostream &OS, ExpansionView &ESV,
-                      Optional<LineRef> FirstLine,
+  /// \brief Render the site of an expansion.
+  virtual void
+  renderExpansionSite(raw_ostream &OS, ExpansionView &ESV, LineRef L,
                       const coverage::CoverageSegment *WrappedSegment,
                       CoverageSegmentArray Segments, unsigned ExpansionCol,
                       unsigned ViewDepth) = 0;
 
-  /// \brief Render an instantiation view.
+  /// \brief Render an expansion view and any nested views.
+  virtual void renderExpansionView(raw_ostream &OS, ExpansionView &ESV,
+                                   unsigned ViewDepth) = 0;
+
+  /// \brief Render an instantiation view and any nested views.
   virtual void renderInstantiationView(raw_ostream &OS, InstantiationView &ISV,
                                        unsigned ViewDepth) = 0;