"pasting formed '%0', an invalid preprocessing token">, DefaultError,
InGroup<DiagGroup<"invalid-token-paste">>;
def err_pp_operator_used_as_macro_name : Error<
- "C++ operator '%0' cannot be used as a macro name">;
+ "C++ operator '%0' (aka %1) cannot be used as a macro name">;
def err_pp_illegal_floating_literal : Error<
"floating point literal in preprocessor expression">;
def err_pp_line_requires_integer : Error<
// C++ 2.5p2: Alternative tokens behave the same as its primary token
// except for their spellings.
return Diag(MacroNameTok, diag::err_pp_operator_used_as_macro_name)
- << Spelling;
+ << Spelling << MacroNameTok.getKind();
return Diag(MacroNameTok, diag::err_pp_macro_not_identifier);
}
// Not valid in C++ unless -fno-operator-names is passed:
#ifdef OPERATOR_NAMES
-//expected-error@+2 {{C++ operator 'and' cannot be used as a macro name}}
+//expected-error@+2 {{C++ operator 'and' (aka '&&') cannot be used as a macro name}}
#endif
#define and foo
#ifdef OPERATOR_NAMES
-//expected-error@+2 {{C++ operator 'and' cannot be used as a macro name}}
+//expected-error@+2 {{C++ operator 'xor' (aka '^') cannot be used as a macro name}}
#endif
-#if defined and
+#if defined xor
#endif