[cfe-commits] r69812 - /cfe/trunk/lib/Analysis/PathDiagnostic.cpp

Ted Kremenek kremenek at apple.com
Wed Apr 22 11:03:01 PDT 2009


Author: kremenek
Date: Wed Apr 22 13:03:00 2009
New Revision: 69812

URL: http://llvm.org/viewvc/llvm-project?rev=69812&view=rev
Log:
PathDiagnosticLocation: ranges for terminators now only include the first
character instead of the entire range for the IfStmt, ForStmt, etc. We may
gradually refine these ranges later, but basically terminator ranges just refer
to the first keyword.

Modified:
    cfe/trunk/lib/Analysis/PathDiagnostic.cpp

Modified: cfe/trunk/lib/Analysis/PathDiagnostic.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Analysis/PathDiagnostic.cpp?rev=69812&r1=69811&r2=69812&view=diff

==============================================================================
--- cfe/trunk/lib/Analysis/PathDiagnostic.cpp (original)
+++ cfe/trunk/lib/Analysis/PathDiagnostic.cpp Wed Apr 22 13:03:00 2009
@@ -166,8 +166,29 @@
     case SingleLocK:
     case RangeK:
       break;
-    case StmtK:
+    case StmtK: {
+      const Stmt *S = asStmt();
+      switch (S->getStmtClass()) {
+        default:
+          break;
+          // FIXME: Provide better range information for different
+          //  terminators.
+        case Stmt::IfStmtClass:
+        case Stmt::WhileStmtClass:
+        case Stmt::DoStmtClass:
+        case Stmt::ForStmtClass:
+        case Stmt::ChooseExprClass:
+        case Stmt::IndirectGotoStmtClass:
+        case Stmt::SwitchStmtClass:
+        case Stmt::ConditionalOperatorClass:
+        case Stmt::ObjCForCollectionStmtClass: {
+          SourceLocation L = S->getLocStart();
+          return SourceRange(L, L);
+        }
+      }
+      
       return S->getSourceRange();
+    }
     case DeclK:
       if (const ObjCMethodDecl *MD = dyn_cast<ObjCMethodDecl>(D))
         return MD->getSourceRange();





More information about the cfe-commits mailing list