diff options
Diffstat (limited to 'test/SemaCXX/imaginary-constants.cpp')
-rw-r--r-- | test/SemaCXX/imaginary-constants.cpp | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/test/SemaCXX/imaginary-constants.cpp b/test/SemaCXX/imaginary-constants.cpp new file mode 100644 index 0000000000000..bbff92755a1fd --- /dev/null +++ b/test/SemaCXX/imaginary-constants.cpp @@ -0,0 +1,44 @@ +// RUN: %clang_cc1 -fsyntax-only -verify %s -include %s -std=gnu++98 +// RUN: %clang_cc1 -fsyntax-only -verify %s -include %s -std=c++11 +// RUN: %clang_cc1 -fsyntax-only -verify %s -include %s -std=c++14 -DCXX14=1 + +// expected-no-diagnostics + +#ifndef HEADER +#define HEADER + +_Complex int val1 = 2i; +_Complex long val2 = 2il; +_Complex long long val3 = 2ill; +_Complex float val4 = 2.0if; +_Complex double val5 = 2.0i; +_Complex long double val6 = 2.0il; + +#if CXX14 + +#pragma clang system_header + +namespace std { + template<typename T> struct complex {}; + complex<float> operator""if(unsigned long long); + complex<float> operator""if(long double); + + complex<double> operator"" i(unsigned long long); + complex<double> operator"" i(long double); + + complex<long double> operator"" il(unsigned long long); + complex<long double> operator"" il(long double); +} + +using namespace std; + +complex<float> f1 = 2.0if; +complex<float> f2 = 2if; +complex<double> d1 = 2.0i; +complex<double> d2 = 2i; +complex<long double> l1 = 2.0il; +complex<long double> l2 = 2il; + +#endif + +#endif |