[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.cpp b/llvm/tools/llvm-cov/SourceCoverageView.cpp
index 45684d7..0c2a887 100644
--- a/llvm/tools/llvm-cov/SourceCoverageView.cpp
+++ b/llvm/tools/llvm-cov/SourceCoverageView.cpp
@@ -129,14 +129,22 @@
     for (; NextESV != EndESV && NextESV->getLine() == LI.line_number();
          ++NextESV) {
       renderViewDivider(OS, ViewDepth + 1);
-      ExpansionColumn = renderExpansionView(
-          OS, *NextESV,
-          RenderedSubView ? Optional<LineRef>({*LI, LI.line_number()})
-                          : Optional<LineRef>(),
-          WrappedSegment, LineSegments, ExpansionColumn, ViewDepth);
+
+      // Re-render the current line and highlight the expansion range for
+      // this subview.
+      if (RenderedSubView) {
+        ExpansionColumn = NextESV->getStartCol();
+        renderExpansionSite(
+            OS, *NextESV, {*LI, LI.line_number()}, WrappedSegment, LineSegments,
+            ExpansionColumn, ViewDepth);
+        renderViewDivider(OS, ViewDepth + 1);
+      }
+
+      renderExpansionView(OS, *NextESV, ViewDepth + 1);
       RenderedSubView = true;
     }
     for (; NextISV != EndISV && NextISV->Line == LI.line_number(); ++NextISV) {
+      renderViewDivider(OS, ViewDepth + 1);
       renderInstantiationView(OS, *NextISV, ViewDepth + 1);
       RenderedSubView = true;
     }