summaryrefslogtreecommitdiffstats
path: root/clang/lib/Frontend/TextDiagnosticPrinter.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2010-02-12 18:52:52 +0000
committerChris Lattner <sabre@nondot.org>2010-02-12 18:52:52 +0000
commitfc38aa7091bd977cc82fa9f1497bffab865a2a31 (patch)
treeb34898e9ba262cd63b922a715ddf99dd0676f1fb /clang/lib/Frontend/TextDiagnosticPrinter.cpp
parent30d99f4b9b6aeab0235d6b523ab5d32e47bf7013 (diff)
downloadbcm5719-llvm-fc38aa7091bd977cc82fa9f1497bffab865a2a31.tar.gz
bcm5719-llvm-fc38aa7091bd977cc82fa9f1497bffab865a2a31.zip
restructure code a bit: there are two potential issues
worth asserting about in this code: 1) if the source range is bogus (begin loc after end loc), and 2) if the client is trying to highlight a range that is purely whitespace. It is possible to just silently ignore #2, but it seems like it is always a bug, so lets keep asserting on this condition, but with a better assert message. llvm-svn: 95998
Diffstat (limited to 'clang/lib/Frontend/TextDiagnosticPrinter.cpp')
-rw-r--r--clang/lib/Frontend/TextDiagnosticPrinter.cpp26
1 files changed, 15 insertions, 11 deletions
diff --git a/clang/lib/Frontend/TextDiagnosticPrinter.cpp b/clang/lib/Frontend/TextDiagnosticPrinter.cpp
index 83b4542caa2..9ec5ffe1c35 100644
--- a/clang/lib/Frontend/TextDiagnosticPrinter.cpp
+++ b/clang/lib/Frontend/TextDiagnosticPrinter.cpp
@@ -104,11 +104,6 @@ void TextDiagnosticPrinter::HighlightRange(const SourceRange &R,
if (StartColNo) --StartColNo; // Zero base the col #.
}
- // Pick the first non-whitespace column.
- while (StartColNo < SourceLine.size() &&
- (SourceLine[StartColNo] == ' ' || SourceLine[StartColNo] == '\t'))
- ++StartColNo;
-
// Compute the column number of the end.
unsigned EndColNo = CaretLine.size();
if (EndLineNo == LineNo) {
@@ -123,16 +118,25 @@ void TextDiagnosticPrinter::HighlightRange(const SourceRange &R,
}
}
+ assert(StartColNo <= EndColNo && "Invalid range!");
+
+ // Pick the first non-whitespace column.
+ while (StartColNo < SourceLine.size() &&
+ (SourceLine[StartColNo] == ' ' || SourceLine[StartColNo] == '\t'))
+ ++StartColNo;
+
// Pick the last non-whitespace column.
- if (EndColNo <= SourceLine.size())
- while (EndColNo-1 &&
- (SourceLine[EndColNo-1] == ' ' || SourceLine[EndColNo-1] == '\t'))
- --EndColNo;
- else
+ if (EndColNo > SourceLine.size())
EndColNo = SourceLine.size();
+ while (EndColNo-1 &&
+ (SourceLine[EndColNo-1] == ' ' || SourceLine[EndColNo-1] == '\t'))
+ --EndColNo;
+
+ // If the start/end passed each other, then we are trying to highlight a range
+ // that just exists in whitespace, which must be some sort of other bug.
+ assert(StartColNo <= EndColNo && "Trying to highlight whitespace??");
// Fill the range with ~'s.
- assert(StartColNo <= EndColNo && "Invalid range!");
for (unsigned i = StartColNo; i < EndColNo; ++i)
CaretLine[i] = '~';
}
OpenPOWER on IntegriCloud