[clang] Improve clarity of the implicit declaration diagnostic (PR #149314)
Corentin Jabot via cfe-commits
cfe-commits at lists.llvm.org
Thu Jul 17 07:47:04 PDT 2025
================
@@ -376,6 +376,33 @@ class Context {
return getInfo(ID).Header.getName();
}
+ /// Returns true if a library function is declared within a C or C++ standard
+ /// header (like stdio.h) or POSIX header (like malloc.h), false if the
+ /// function is not declared within a header or is declared in a non-standard
+ /// header (like Microsoft or Objective-C headers).
+ bool isDeclaredInStandardHeader(unsigned ID) const {
+ switch (getInfo(ID).Header.ID) {
+ default:
+ return false;
+ case HeaderDesc::COMPLEX_H: // C99
+ case HeaderDesc::CTYPE_H: // C89
+ case HeaderDesc::MATH_H: // C89
+ case HeaderDesc::MALLOC_H: // POSIX
+ case HeaderDesc::MEMORY: // C++98
+ case HeaderDesc::PTHREAD_H: // POSIX
+ case HeaderDesc::SETJMP_H: // C89
+ case HeaderDesc::STDARG_H: // C89
+ case HeaderDesc::STDIO_H: // C89
+ case HeaderDesc::STDLIB_H: // C89
+ case HeaderDesc::STRING_H: // C89
+ case HeaderDesc::STRINGS_H: // POSIX
+ case HeaderDesc::UNISTD_H: // POSIX
+ case HeaderDesc::UTILITY: // C++98
+ case HeaderDesc::WCHAR_H: // C99
+ return true;
+ }
+ }
----------------
cor3ntin wrote:
Can we modify the HEADER macro in BuiltinHeaders.def to generate that automatically?
https://github.com/llvm/llvm-project/pull/149314
More information about the cfe-commits
mailing list