]> granicus.if.org Git - clang/commitdiff
BugReporter (extensive diagnostics): always add an edge if there is no location
authorTed Kremenek <kremenek@apple.com>
Wed, 22 Apr 2009 20:36:26 +0000 (20:36 +0000)
committerTed Kremenek <kremenek@apple.com>
Wed, 22 Apr 2009 20:36:26 +0000 (20:36 +0000)
context.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69823 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Analysis/BugReporter.cpp

index d27ead442e963ebe639a4721320ce1351d60f159..6872ab622ea8740ce1cd17d409d349458709c8de 100644 (file)
@@ -788,7 +788,11 @@ class VISIBILITY_HIDDEN EdgeBuilder {
   
   void popLocation() {
     PathDiagnosticLocation L = CLocs.back();
-    if (L.asLocation().isFileID()) rawAddEdge(CLocs.back());
+    if (L.asLocation().isFileID()) {
+      // For contexts, we only one the first character as the range.
+      L = PathDiagnosticLocation(L.asLocation(), L.getManager());      
+      rawAddEdge(CLocs.back());
+    }
     CLocs.pop_back();
   }
   
@@ -946,6 +950,9 @@ void EdgeBuilder::addEdge(PathDiagnosticLocation NewLoc, bool alwaysAdd) {
     // Context does not contain the location.  Flush it.
     popLocation();
   }
+  
+  // If we reach here, there is no enclosing context.  Just add the edge.
+  rawAddEdge(NewLoc);
 }
 
 void EdgeBuilder::addContext(const Stmt *S) {