[clang-tools-extra] r358589 - [clang-tidy] Fix invalid location in readability-misleading-indentation diagnostic

Alexander Kornienko via cfe-commits cfe-commits at lists.llvm.org
Wed Apr 17 09:19:47 PDT 2019


Author: alexfh
Date: Wed Apr 17 09:19:47 2019
New Revision: 358589

URL: http://llvm.org/viewvc/llvm-project?rev=358589&view=rev
Log:
[clang-tidy] Fix invalid location in readability-misleading-indentation diagnostic

Before this patch readability-misleading-indentation could issue diagnostics
with an invalid location, which would lead to an assertion failure in
ClangTidyContext::diag()

Modified:
    clang-tools-extra/trunk/clang-tidy/readability/MisleadingIndentationCheck.cpp
    clang-tools-extra/trunk/test/clang-tidy/readability-misleading-indentation.cpp

Modified: clang-tools-extra/trunk/clang-tidy/readability/MisleadingIndentationCheck.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/readability/MisleadingIndentationCheck.cpp?rev=358589&r1=358588&r2=358589&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/readability/MisleadingIndentationCheck.cpp (original)
+++ clang-tools-extra/trunk/clang-tidy/readability/MisleadingIndentationCheck.cpp Wed Apr 17 09:19:47 2019
@@ -81,6 +81,10 @@ void MisleadingIndentationCheck::missing
     SourceLocation InnerLoc = Inner->getBeginLoc();
     SourceLocation OuterLoc = CurrentStmt->getBeginLoc();
 
+    if (InnerLoc.isInvalid() || InnerLoc.isMacroID() || OuterLoc.isInvalid() ||
+        OuterLoc.isMacroID())
+      continue;
+
     if (SM.getExpansionLineNumber(InnerLoc) ==
         SM.getExpansionLineNumber(OuterLoc))
       continue;
@@ -88,7 +92,7 @@ void MisleadingIndentationCheck::missing
     const Stmt *NextStmt = CStmt->body_begin()[i + 1];
     SourceLocation NextLoc = NextStmt->getBeginLoc();
 
-    if (InnerLoc.isMacroID() || OuterLoc.isMacroID() || NextLoc.isMacroID())
+    if (NextLoc.isInvalid() || NextLoc.isMacroID())
       continue;
 
     if (SM.getExpansionColumnNumber(InnerLoc) ==

Modified: clang-tools-extra/trunk/test/clang-tidy/readability-misleading-indentation.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/readability-misleading-indentation.cpp?rev=358589&r1=358588&r2=358589&view=diff
==============================================================================
--- clang-tools-extra/trunk/test/clang-tidy/readability-misleading-indentation.cpp (original)
+++ clang-tools-extra/trunk/test/clang-tidy/readability-misleading-indentation.cpp Wed Apr 17 09:19:47 2019
@@ -8,7 +8,7 @@ void foo2();
     foo1();   \
     foo2();
 
-int main()
+void f()
 {
   bool cond1 = true;
   bool cond2 = true;
@@ -90,7 +90,7 @@ int main()
        else {
   }
   // CHECK-MESSAGES: :[[@LINE-2]]:8: warning: different indentation for 'if' and corresponding 'else' [readability-misleading-indentation]
-  
+
   if (cond1) {
     if (cond1) {
     }
@@ -109,3 +109,12 @@ int main()
 
   BLOCK
 }
+
+void g(bool x) {
+  if (x)
+    #pragma unroll
+    for (int k = 0; k < 1; ++k) {}
+
+  #pragma unroll
+  for (int k = 0; k < 1; ++k) {}
+}




More information about the cfe-commits mailing list