Currently, a pragma AST node's recorded location starts at the
namespace token (such as omp in the case of OpenMP) after the
#pragma token, and the #pragma location isn't available. However,
the #pragma location can be useful when, for example, rewriting a
directive using Clang's Rewrite facility.
This patch makes #pragma locations available in any PragmaHandler
but it doesn't yet make use of them.
This patch also uses the new struct PragmaIntroducer to simplify
Preprocessor::HandlePragmaDirective. It doesn't do the same for
PPCallbacks::PragmaDirective because that changes the API documented
in clang-tools-extra/docs/pp-trace.rst, and I'm not sure about
backward compatibility guarantees there.
This patch was forked from D61509.