From 172b221147ab56e60968d3f7ffdb42256622fa4c Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Tue, 1 Nov 2011 01:23:44 +0000 Subject: [PATCH] Add __has_feature(cxx_raw_string_literals) and __has_feature(cxx_unicode_literals), from Michel Morin! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143412 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Lex/PPMacroExpansion.cpp | 4 ++-- test/Lexer/has_feature_cxx0x.cpp | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/lib/Lex/PPMacroExpansion.cpp b/lib/Lex/PPMacroExpansion.cpp index fd04b8a379..5ef91be219 100644 --- a/lib/Lex/PPMacroExpansion.cpp +++ b/lib/Lex/PPMacroExpansion.cpp @@ -642,13 +642,13 @@ static bool HasFeature(const Preprocessor &PP, const IdentifierInfo *II) { .Case("cxx_nullptr", LangOpts.CPlusPlus0x) .Case("cxx_override_control", LangOpts.CPlusPlus0x) .Case("cxx_range_for", LangOpts.CPlusPlus0x) - //.Case("cxx_raw_string_literals", false) + .Case("cxx_raw_string_literals", LangOpts.CPlusPlus0x) .Case("cxx_reference_qualified_functions", LangOpts.CPlusPlus0x) .Case("cxx_rvalue_references", LangOpts.CPlusPlus0x) .Case("cxx_strong_enums", LangOpts.CPlusPlus0x) .Case("cxx_static_assert", LangOpts.CPlusPlus0x) .Case("cxx_trailing_return", LangOpts.CPlusPlus0x) - //.Case("cxx_unicode_literals", false) + .Case("cxx_unicode_literals", LangOpts.CPlusPlus0x) //.Case("cxx_unrestricted_unions", false) //.Case("cxx_user_literals", false) .Case("cxx_variadic_templates", LangOpts.CPlusPlus0x) diff --git a/test/Lexer/has_feature_cxx0x.cpp b/test/Lexer/has_feature_cxx0x.cpp index eff9cfb892..a22cf64c20 100644 --- a/test/Lexer/has_feature_cxx0x.cpp +++ b/test/Lexer/has_feature_cxx0x.cpp @@ -190,3 +190,21 @@ int no_alignas(); // CHECK-0X: has_alignas // CHECK-NO-0X: no_alignas + +#if __has_feature(cxx_raw_string_literals) +int has_raw_string_literals(); +#else +int no_raw_string_literals(); +#endif + +// CHECK-0X: has_raw_string_literals +// CHECK-NO-0X: no_raw_string_literals + +#if __has_feature(cxx_unicode_literals) +int has_unicode_literals(); +#else +int no_unicode_literals(); +#endif + +// CHECK-0X: has_unicode_literals +// CHECK-NO-0X: no_unicode_literals -- 2.40.0