llvm/clang/test/Misc/caret-diags-scratch-buffer.c

// RUN: not %clang_cc1 -fsyntax-only %s 2>&1 | not grep keyXXXX
// This should not show keyXXXX in the caret diag output.  This once
// happened because the two tokens ended up in the scratch buffer and
// the caret diag from the scratch buffer included the previous token.
#define M(name) \
    if (name ## XXXX != name ## _sb);

void foo() {
  int keyXXXX;
  M(key);
}