Index: clang-tools-extra/clang-tidy/cppcoreguidelines/InitVariablesCheck.cpp =================================================================== --- clang-tools-extra/clang-tidy/cppcoreguidelines/InitVariablesCheck.cpp +++ clang-tools-extra/clang-tidy/cppcoreguidelines/InitVariablesCheck.cpp @@ -60,6 +60,8 @@ const ASTContext &Context = *Result.Context; const SourceManager &Source = Context.getSourceManager(); + if (MatchedDecl->isInvalidDecl()) + return; // We want to warn about cases where the type name // comes from a macro like this: // Index: clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/init-variables-clang-diagnostic-error.cpp =================================================================== --- /dev/null +++ clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines/init-variables-clang-diagnostic-error.cpp @@ -0,0 +1,17 @@ +// RUN: %check_clang_tidy %s cppcoreguidelines-init-variables %t -fix-errors -- + +#include "unknown.h" +// CHECK-MESSAGES: :[[@LINE-1]]:10: error: 'unknown.h' file not found [clang-diagnostic-error] + +namespace std { +template +struct vector { + vector(); +}; + +void test() { + int a; + // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: variable 'a' is not initialized [cppcoreguidelines-init-variables] + // CHECK-FIXES: {{^}} int a = 0;{{$}} + std::vector arr; +}