blob: 5ff401bde9c8e294d07b7e37d7656513ab3fe282 [file] [edit]
// RUN: %clang_cc1 %s -fsyntax-only -pedantic -verify
// RUN: %clang_cc1 %s -fsyntax-only -x c++ -pedantic -verify
// GH101342
// We should not form identifiers by concatenating invalid UCNs.
#define DOT
#define CONCAT_IMPL(Left, Separator, Right) Left##Separator##Right
#define CONCAT(Left, Separator, Right) CONCAT_IMPL(Left, Separator, Right)
#define MAKE_CLASS_NAME(A, B) CONCAT(A, DOT, B)
// struct foo•bar {} x;
struct MAKE_CLASS_NAME(foo, bar);
// expected-error@-1 {{pasting formed 'foo•', an invalid preprocessing token}} \
// expected-error@-1 {{pasting formed '•bar', an invalid preprocessing token}}
#ifdef __cplusplus
// expected-error@-4 {{expected unqualified-id}}
#else
// expected-error@-6 {{expected identifier or '('}}
#endif