[clang-format] Fix misformatted macro definitions after D86959
After D86959 the code #define lambda [](const decltype(x) &ptr) {}
was formatted as #define lambda [](const decltype(x) & ptr) {} due to
now parsing the '&' token as a BinaryOperator. The problem was caused by
the condition Line.InPPDirective && (!Left->Previous || !Left->Previous->is(tok::identifier))) {
being matched and therefore not performing the checks for "previous token
is one of decltype/_Atomic/etc.". This patch moves those checks after the
existing if/else chain to ensure the left-parent token classification is
always run after checking whether the contents of the parens is an
expression or not.
This change also introduces a new TokenAnnotatorTest that checks the
token kind and Role of Tokens after analyzing them. This is used to check
for TT_PointerOrReference, in addition to indirectly testing this based
on the resulting formatting.
I'd put this into a new test file that specifically tests annotations, perhaps AnnotationTest.cpp?
Also, the test name seems misleading, as not all of these are macro definitions?