RFC: [PragmaHandler] Break HandlePragma API to fix location problem?


# Problem #

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.

# Proposed Solution #

As a first step in addressing this issue, I have proposed a patch to
make `#pragma` locations available to any `PragmaHandler` [1]. I have
also proposed a patch to make use of those locations to fix the start
locations of OpenMP AST nodes [2]. Other pragmas can be adjusted in a
similar manner in later patches.

# Question #

The first patch makes a backward-incompatible change in the
`PragmaHandler` API: it alters the parameter list of the
`HandlePragma` callback function. While the patch also adjusts all
upstream callers, any external plugins using `HandlePragma` would
break, as suggested by documentation for `HandlePragma` in

Is that a real concern? Are there external projects that would not
easily be adjusted? If so, there are ways we can support both
interfaces [3], but we shouldn't complicate the code otherwise.



[1]: ⚙ D61643 [PragmaHandler] Expose `#pragma` location
[2]: ⚙ D61509 [OpenMP] Set pragma start loc to `#pragma` loc
[3]: ⚙ D61643 [PragmaHandler] Expose `#pragma` location