14ac537b0f07f2efb9fcf081f60d54e6cfb1cf2d5Richard Smith// RUN: %clang_cc1 -std=c++1y %s -include %s -verify
24ac537b0f07f2efb9fcf081f60d54e6cfb1cf2d5Richard Smith
34ac537b0f07f2efb9fcf081f60d54e6cfb1cf2d5Richard Smith#ifndef INCLUDED
44ac537b0f07f2efb9fcf081f60d54e6cfb1cf2d5Richard Smith#define INCLUDED
54ac537b0f07f2efb9fcf081f60d54e6cfb1cf2d5Richard Smith
64ac537b0f07f2efb9fcf081f60d54e6cfb1cf2d5Richard Smith#pragma clang system_header
74ac537b0f07f2efb9fcf081f60d54e6cfb1cf2d5Richard Smithnamespace std {
84ac537b0f07f2efb9fcf081f60d54e6cfb1cf2d5Richard Smith  using size_t = decltype(sizeof(0));
94ac537b0f07f2efb9fcf081f60d54e6cfb1cf2d5Richard Smith
104ac537b0f07f2efb9fcf081f60d54e6cfb1cf2d5Richard Smith  struct duration {};
1106dd2b317a4bf282f3ac526b5cc4d74c39ed7cedRichard Smith  duration operator""ns(unsigned long long);
1206dd2b317a4bf282f3ac526b5cc4d74c39ed7cedRichard Smith  duration operator""us(unsigned long long);
1306dd2b317a4bf282f3ac526b5cc4d74c39ed7cedRichard Smith  duration operator""ms(unsigned long long);
1406dd2b317a4bf282f3ac526b5cc4d74c39ed7cedRichard Smith  duration operator""s(unsigned long long);
1506dd2b317a4bf282f3ac526b5cc4d74c39ed7cedRichard Smith  duration operator""min(unsigned long long);
1606dd2b317a4bf282f3ac526b5cc4d74c39ed7cedRichard Smith  duration operator""h(unsigned long long);
174ac537b0f07f2efb9fcf081f60d54e6cfb1cf2d5Richard Smith
184ac537b0f07f2efb9fcf081f60d54e6cfb1cf2d5Richard Smith  struct string {};
1906dd2b317a4bf282f3ac526b5cc4d74c39ed7cedRichard Smith  string operator""s(const char*, size_t);
2006dd2b317a4bf282f3ac526b5cc4d74c39ed7cedRichard Smith
2106dd2b317a4bf282f3ac526b5cc4d74c39ed7cedRichard Smith  template<typename T> struct complex {};
2206dd2b317a4bf282f3ac526b5cc4d74c39ed7cedRichard Smith  complex<float> operator""if(long double);
2306dd2b317a4bf282f3ac526b5cc4d74c39ed7cedRichard Smith  complex<float> operator""if(unsigned long long);
2406dd2b317a4bf282f3ac526b5cc4d74c39ed7cedRichard Smith  complex<double> operator""i(long double);
2506dd2b317a4bf282f3ac526b5cc4d74c39ed7cedRichard Smith  complex<double> operator""i(unsigned long long);
2606dd2b317a4bf282f3ac526b5cc4d74c39ed7cedRichard Smith  complex<long double> operator""il(long double);
2706dd2b317a4bf282f3ac526b5cc4d74c39ed7cedRichard Smith  complex<long double> operator""il(unsigned long long);
284ac537b0f07f2efb9fcf081f60d54e6cfb1cf2d5Richard Smith}
294ac537b0f07f2efb9fcf081f60d54e6cfb1cf2d5Richard Smith
304ac537b0f07f2efb9fcf081f60d54e6cfb1cf2d5Richard Smith#else
314ac537b0f07f2efb9fcf081f60d54e6cfb1cf2d5Richard Smith
324ac537b0f07f2efb9fcf081f60d54e6cfb1cf2d5Richard Smithusing namespace std;
334ac537b0f07f2efb9fcf081f60d54e6cfb1cf2d5Richard Smithduration a = 1ns, b = 1us, c = 1ms, d = 1s, e = 1min, f = 1h;
344ac537b0f07f2efb9fcf081f60d54e6cfb1cf2d5Richard Smithstring s = "foo"s;
354ac537b0f07f2efb9fcf081f60d54e6cfb1cf2d5Richard Smithchar error = 'x's; // expected-error {{invalid suffix}} expected-error {{expected ';'}}
364ac537b0f07f2efb9fcf081f60d54e6cfb1cf2d5Richard Smith
374ac537b0f07f2efb9fcf081f60d54e6cfb1cf2d5Richard Smithint _1z = 1z; // expected-error {{invalid suffix}}
384ac537b0f07f2efb9fcf081f60d54e6cfb1cf2d5Richard Smithint _1b = 1b; // expected-error {{invalid digit}}
394ac537b0f07f2efb9fcf081f60d54e6cfb1cf2d5Richard Smith
4006dd2b317a4bf282f3ac526b5cc4d74c39ed7cedRichard Smithcomplex<float> cf1 = 1if, cf2 = 2.if, cf3 = 0x3if;
4106dd2b317a4bf282f3ac526b5cc4d74c39ed7cedRichard Smithcomplex<double> cd1 = 1i, cd2 = 2.i, cd3 = 0b0110101i;
4206dd2b317a4bf282f3ac526b5cc4d74c39ed7cedRichard Smithcomplex<long double> cld1 = 1il, cld2 = 2.il, cld3 = 0047il;
4306dd2b317a4bf282f3ac526b5cc4d74c39ed7cedRichard Smith
444ac537b0f07f2efb9fcf081f60d54e6cfb1cf2d5Richard Smith#endif
45