blob: 138451f8a49c6f0bf13dbb6678f7415c66ca00f7 [file] [edit]
// RUN: %clang_cc1 -std=c++11 -Wno-user-defined-literals -verify %s
// RUN: %clang_cc1 -std=c++11 -Wno-user-defined-literals -verify=no_dollar -fno-dollars-in-identifiers %s
int $; // no_dollar-error {{expected unqualified-id}}
int $$; // no_dollar-error {{expected unqualified-id}}
int Σ$; // no_dollar-error {{expected ';' after top level declarator}}
int $Σ; // no_dollar-error {{expected unqualified-id}}
using size_t = decltype(sizeof(void *));
namespace UDL {
int operator"" $(const char *p, size_t n); // no_dollar-error {{expected identifier}}
int operator"" $$(const char *p, size_t n); // no_dollar-error {{expected identifier}}
int operator"" Σ$(const char *p, size_t n); // no_dollar-error {{'operator""Σ' cannot be the name of a variable or data member}} \
// no_dollar-error {{expected ';' after top level declarator}}
int operator"" $Σ(const char *p, size_t n); // no_dollar-error {{expected identifier}}
int operator"" Σ(const char *p, size_t n);
}
namespace UDL2 {
int operator"" _$(unsigned long long); // expected-warning {{identifier '_$' preceded by whitespace in a literal operator declaration is deprecated}} \
// no_dollar-error {{'operator""_' cannot be the name of a variable or data member}} \
// no_dollar-error {{expected ';' after top level declarator}} \
// no_dollar-warning {{identifier '_' preceded by whitespace in a literal operator declaration is deprecated}}
int a = 1_$; // no_dollar-error {{no matching literal operator for call}}
int operator"" _a$(unsigned long long); // expected-warning {{identifier '_a$' preceded by whitespace in a literal operator declaration is deprecated}} \
// no_dollar-error {{expected ';' after top level declarator}} \
// no_dollar-error {{'operator""_a' cannot be the name of a variable or data member}} \
// no_dollar-warning {{identifier '_a' preceded by whitespace in a literal operator declaration is deprecated}}
int b = 1_a$; // no_dollar-error {{no matching literal operator for call}}
int operator""_c$(unsigned long long); // no_dollar-error {{'operator""_c' cannot be the name of a variable or data member}} \
// no_dollar-error {{expected ';' after top level declarator}}
int c = 1_c$; // no_dollar-error {{no matching literal operator for call}}
}
#define CAT(X,Y,Z)CAT_(X,Y##Z)
#define CAT_(X,Y)X##Y
void GH171190(){
int CAT(X,0,$); // no_dollar-error {{pasting formed '0$', an invalid preprocessing token}} \
// no_dollar-error {{expected ';' at end of declaration}}
}