summaryrefslogtreecommitdiff
path: root/tools/llvm-cov/SourceCoverageView.cpp
diff options
context:
space:
mode:
authorVedant Kumar <vsk@apple.com>2016-06-29 00:38:21 +0000
committerVedant Kumar <vsk@apple.com>2016-06-29 00:38:21 +0000
commitcd29c6b37b62025661f4b34457218e71cd907322 (patch)
tree74f0307500565790a2b89afdc313ad0a42ea46eb /tools/llvm-cov/SourceCoverageView.cpp
parent3cb7bf59521affd2160f21433c24cfa32ec2f1ca (diff)
[llvm-cov] Minor cleanups to prepare for the html format patch
- Add renderView{Header,Footer}, renderLineSuffix, and hasSubViews to support creating tables with nested views. - Move the 'Format' cl::opt to make it easier to extend. - Just create one function view file, instead of overwriting the same file for every new function. Add a regression test for this. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274086 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/llvm-cov/SourceCoverageView.cpp')
-rw-r--r--tools/llvm-cov/SourceCoverageView.cpp26
1 files changed, 18 insertions, 8 deletions
diff --git a/tools/llvm-cov/SourceCoverageView.cpp b/tools/llvm-cov/SourceCoverageView.cpp
index ca2203d21cc..b09d7de5016 100644
--- a/tools/llvm-cov/SourceCoverageView.cpp
+++ b/tools/llvm-cov/SourceCoverageView.cpp
@@ -88,6 +88,16 @@ std::string SourceCoverageView::formatCount(uint64_t N) {
return Result;
}
+bool SourceCoverageView::shouldRenderRegionMarkers(
+ bool LineHasMultipleRegions) const {
+ return getOptions().ShowRegionMarkers &&
+ (!getOptions().ShowLineStatsOrRegionMarkers || LineHasMultipleRegions);
+}
+
+bool SourceCoverageView::hasSubViews() const {
+ return !ExpansionSubViews.empty() || !InstantiationSubViews.empty();
+}
+
std::unique_ptr<SourceCoverageView>
SourceCoverageView::create(StringRef SourceName, const MemoryBuffer &File,
const CoverageViewOptions &Options,
@@ -117,6 +127,8 @@ void SourceCoverageView::print(raw_ostream &OS, bool WholeFile,
if (ShowSourceName)
renderSourceName(OS);
+ renderViewHeader(OS);
+
// We need the expansions and instantiations sorted so we can go through them
// while we iterate lines.
std::sort(ExpansionSubViews.begin(), ExpansionSubViews.end());
@@ -175,12 +187,8 @@ void SourceCoverageView::print(raw_ostream &OS, bool WholeFile,
ExpansionColumn, ViewDepth);
// Show the region markers.
- if (getOptions().ShowRegionMarkers &&
- (!getOptions().ShowLineStatsOrRegionMarkers ||
- LineCount.hasMultipleRegions()) &&
- !LineSegments.empty()) {
+ if (shouldRenderRegionMarkers(LineCount.hasMultipleRegions()))
renderRegionMarkers(OS, LineSegments, ViewDepth);
- }
// Show the expansions and instantiations for this line.
bool RenderedSubView = false;
@@ -192,9 +200,8 @@ void SourceCoverageView::print(raw_ostream &OS, bool WholeFile,
// this subview.
if (RenderedSubView) {
ExpansionColumn = NextESV->getStartCol();
- renderExpansionSite(
- OS, *NextESV, {*LI, LI.line_number()}, WrappedSegment, LineSegments,
- ExpansionColumn, ViewDepth);
+ renderExpansionSite(OS, {*LI, LI.line_number()}, WrappedSegment,
+ LineSegments, ExpansionColumn, ViewDepth);
renderViewDivider(OS, ViewDepth + 1);
}
@@ -208,5 +215,8 @@ void SourceCoverageView::print(raw_ostream &OS, bool WholeFile,
}
if (RenderedSubView)
renderViewDivider(OS, ViewDepth + 1);
+ renderLineSuffix(OS, ViewDepth);
}
+
+ renderViewFooter(OS);
}