BugReporter (extensive diagnostics): Ignore parentheses when added control-flow
pieces for location contexts. llvm-svn: 69895
This commit is contained in:
parent
0cbba990d7
commit
e60809c31d
|
|
@ -789,6 +789,22 @@ class VISIBILITY_HIDDEN EdgeBuilder {
|
||||||
void popLocation() {
|
void popLocation() {
|
||||||
PathDiagnosticLocation L = CLocs.back();
|
PathDiagnosticLocation L = CLocs.back();
|
||||||
if (L.asLocation().isFileID()) {
|
if (L.asLocation().isFileID()) {
|
||||||
|
|
||||||
|
if (const Stmt *S = L.asStmt()) {
|
||||||
|
// Adjust the location for some expressions that are best referenced
|
||||||
|
// by one of their subexpressions.
|
||||||
|
if (const ConditionalOperator *CO = dyn_cast<ConditionalOperator>(S))
|
||||||
|
S = CO->getCond();
|
||||||
|
else if (const ChooseExpr *CE = dyn_cast<ChooseExpr>(S))
|
||||||
|
S = CE->getCond();
|
||||||
|
|
||||||
|
// Ignore parentheses.
|
||||||
|
if (const ParenExpr *PE = dyn_cast<ParenExpr>(S))
|
||||||
|
S = PE->IgnoreParens();
|
||||||
|
|
||||||
|
L = PathDiagnosticLocation(S, L.getManager());
|
||||||
|
}
|
||||||
|
|
||||||
// For contexts, we only one the first character as the range.
|
// For contexts, we only one the first character as the range.
|
||||||
L = PathDiagnosticLocation(L.asLocation(), L.getManager());
|
L = PathDiagnosticLocation(L.asLocation(), L.getManager());
|
||||||
rawAddEdge(L);
|
rawAddEdge(L);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue