summaryrefslogtreecommitdiffstats
path: root/clang/test/SemaCXX/literal-operators.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2011-08-30 22:40:35 +0000
committerDouglas Gregor <dgregor@apple.com>2011-08-30 22:40:35 +0000
commit86325ad2b52158ccd8b10185987a6bf9e59f823f (patch)
tree490794e9afec6bf25b3bd0e77b4d08fd6c63f9f5 /clang/test/SemaCXX/literal-operators.cpp
parent924255875e31f16a61084b1acd6536184343a372 (diff)
downloadbcm5719-llvm-86325ad2b52158ccd8b10185987a6bf9e59f823f.tar.gz
bcm5719-llvm-86325ad2b52158ccd8b10185987a6bf9e59f823f.zip
Allow C99 hexfloats in C++0x mode. This change resolves the standards
collision between C99 hexfloats and C++0x user-defined literals by giving C99 hexfloats precedence. Also, warning about user-defined literals that conflict with hexfloats and those that have names that are reserved by the implementation. Fixes <rdar://problem/9940194>. llvm-svn: 138839
Diffstat (limited to 'clang/test/SemaCXX/literal-operators.cpp')
-rw-r--r--clang/test/SemaCXX/literal-operators.cpp38
1 files changed, 19 insertions, 19 deletions
diff --git a/clang/test/SemaCXX/literal-operators.cpp b/clang/test/SemaCXX/literal-operators.cpp
index ec585a61da9..ab80c9a3d35 100644
--- a/clang/test/SemaCXX/literal-operators.cpp
+++ b/clang/test/SemaCXX/literal-operators.cpp
@@ -3,39 +3,39 @@
#include <stddef.h>
struct tag {
- void operator "" tag_bad (const char *); // expected-error {{literal operator 'operator "" tag_bad' must be in a namespace or global scope}}
- friend void operator "" tag_good (const char *);
+ void operator "" _tag_bad (const char *); // expected-error {{literal operator 'operator "" _tag_bad' must be in a namespace or global scope}}
+ friend void operator "" _tag_good (const char *);
};
-namespace ns { void operator "" ns_good (const char *); }
+namespace ns { void operator "" _ns_good (const char *); }
// Check extern "C++" declarations
-extern "C++" void operator "" extern_good (const char *);
-extern "C++" { void operator "" extern_good (const char *); }
+extern "C++" void operator "" _extern_good (const char *);
+extern "C++" { void operator "" _extern_good (const char *); }
-void fn () { void operator "" fn_bad (const char *); } // expected-error {{literal operator 'operator "" fn_bad' must be in a namespace or global scope}}
+void fn () { void operator "" _fn_bad (const char *); } // expected-error {{literal operator 'operator "" _fn_bad' must be in a namespace or global scope}}
// One-param declarations (const char * was already checked)
-void operator "" good (char);
-void operator "" good (wchar_t);
-void operator "" good (char16_t);
-void operator "" good (char32_t);
-void operator "" good (unsigned long long);
-void operator "" good (long double);
+void operator "" _good (char);
+void operator "" _good (wchar_t);
+void operator "" _good (char16_t);
+void operator "" _good (char32_t);
+void operator "" _good (unsigned long long);
+void operator "" _good (long double);
// Two-param declarations
-void operator "" good (const char *, size_t);
-void operator "" good (const wchar_t *, size_t);
-void operator "" good (const char16_t *, size_t);
-void operator "" good (const char32_t *, size_t);
+void operator "" _good (const char *, size_t);
+void operator "" _good (const wchar_t *, size_t);
+void operator "" _good (const char16_t *, size_t);
+void operator "" _good (const char32_t *, size_t);
// Check typedef and array equivalences
-void operator "" good (const char[]);
+void operator "" _good (const char[]);
typedef const char c;
-void operator "" good (c*);
+void operator "" _good (c*);
// Check extra cv-qualifiers
-void operator "" cv_good (volatile const char *, const size_t);
+void operator "" _cv_good (volatile const char *, const size_t);
// Template delcaration (not implemented yet)
// template <char...> void operator "" good ();
OpenPOWER on IntegriCloud