diff options
-rw-r--r-- | include/clang/Analysis/PathDiagnostic.h | 2 | ||||
-rw-r--r-- | lib/Analysis/PathDiagnostic.cpp | 15 |
2 files changed, 16 insertions, 1 deletions
diff --git a/include/clang/Analysis/PathDiagnostic.h b/include/clang/Analysis/PathDiagnostic.h index f647be9d6d..1481e25bbd 100644 --- a/include/clang/Analysis/PathDiagnostic.h +++ b/include/clang/Analysis/PathDiagnostic.h @@ -67,7 +67,7 @@ public: FullSourceLoc asLocation() const; SourceRange asRange() const; - const Stmt *asStmt() const; + const Stmt *asStmt() const { return S ? S : 0; } }; class PathDiagnostic { diff --git a/lib/Analysis/PathDiagnostic.cpp b/lib/Analysis/PathDiagnostic.cpp index 1441088e54..dd9a0a8f46 100644 --- a/lib/Analysis/PathDiagnostic.cpp +++ b/lib/Analysis/PathDiagnostic.cpp @@ -152,3 +152,18 @@ FullSourceLoc PathDiagnosticLocation::asLocation() const { return FullSourceLoc(R.getBegin(), const_cast<SourceManager&>(SM)); } + +SourceRange PathDiagnosticLocation::asRange() const { + // Note that we want a 'switch' here so that the compiler can warn us in + // case we add more cases. + switch (K) { + case SingleLoc: + case Range: + break; + case Statement: + return S->getSourceRange(); + } + + return R; +} + |