Hello, I started using clangd to get better static analysis and code refactoring tooling with the R sources (using eglot-mode in Emacs, it just works once you've generated a `compile_commands.json` file with `bear make all`). I noticed that the static analyser can't understand several header files because these are not self-contained. So I went through all .h files and inserted the missing includes, cf the attached patch.
Making the headers self-contained has consequences for the .c or .cpp files that include them. In the case of C files, the only downside I see is that it might cause users to accidentally rely on indirect inclusion of standard headers, instead of directly including the header to make the dependency explicit as would be good practice. This doesn't seem like a big deal compared to the benefits of enabling static analysis. However in the case of C++ that's more problematic. We don't want to include the C headers because that would pollute the global namespace and users might prefer to import the missing symbols (`size_t` and `FILE`) selectively. Also that wouldn't help static analysis within the header files since the analysers use the C path. So I have guarded inclusion of standard C headers behing a `__cplusplus` check. If that makes sense, would R core consider applying the attached patch to the R sources? Best, Lionel ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel