diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2011-04-15 15:14:40 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2011-04-15 15:14:40 +0000 |
commit | a391a4642c5eb98aae606f2a2b7219b1a3619d11 (patch) | |
tree | 5ffd8d173f9f65e763c2f4192e793ed9acf26c13 | |
parent | 408d5d1a3c578e59b457ba2065e866f9d71ffec5 (diff) |
Add __has_feature(cxx_range_for) check for C++11 range-based for loop.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129573 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | docs/LanguageExtensions.html | 6 | ||||
-rw-r--r-- | lib/Lex/PPMacroExpansion.cpp | 1 | ||||
-rw-r--r-- | test/Lexer/has_feature_cxx0x.cpp | 11 |
3 files changed, 18 insertions, 0 deletions
diff --git a/docs/LanguageExtensions.html b/docs/LanguageExtensions.html index 70c0ff2834..f86835a9d1 100644 --- a/docs/LanguageExtensions.html +++ b/docs/LanguageExtensions.html @@ -39,6 +39,7 @@ td { <li><a href="#cxx_lambdas">C++0x lambdas</a></li> <li><a href="#cxx_nullptr">C++0x nullptr</a></li> <li><a href="#cxx_override_control">C++0x override control</a></li> + <li><a href="#cxx_range_for">C++0x range-based for loop</a></li> <li><a href="#cxx_rvalue_references">C++0x rvalue references</a></li> <li><a href="#cxx_reference_qualified_functions">C++0x reference-qualified functions</a></li> <li><a href="#cxx_static_assert">C++0x <tt>static_assert()</tt></a></li> @@ -410,6 +411,11 @@ the override control keywords is enabled.</p> <h3 id="cxx_reference_qualified_functions">C++0x reference-qualified functions</h3> <p>Use <tt>__has_feature(cxx_reference_qualified_functions)</tt> to determine if support for reference-qualified functions (e.g., member functions with <code>&</code> or <code>&&</code> applied to <code>*this</code>) is enabled.</p> +<h3 id="cxx_range_for">C++0x range-based for loop</tt></h3> + +<p>Use <tt>__has_feature(cxx_range_for)</tt> to determine if support for +the range-based for loop is enabled. </p> + <h3 id="cxx_rvalue_references">C++0x rvalue references</tt></h3> <p>Use <tt>__has_feature(cxx_rvalue_references)</tt> to determine if support for diff --git a/lib/Lex/PPMacroExpansion.cpp b/lib/Lex/PPMacroExpansion.cpp index 6e9f598f1f..b078bc8577 100644 --- a/lib/Lex/PPMacroExpansion.cpp +++ b/lib/Lex/PPMacroExpansion.cpp @@ -565,6 +565,7 @@ static bool HasFeature(const Preprocessor &PP, const IdentifierInfo *II) { .Case("cxx_noexcept", LangOpts.CPlusPlus0x) //.Case("cxx_nullptr", false) .Case("cxx_override_control", LangOpts.CPlusPlus0x) + .Case("cxx_range_for", LangOpts.CPlusPlus0x) .Case("cxx_reference_qualified_functions", LangOpts.CPlusPlus0x) .Case("cxx_rvalue_references", LangOpts.CPlusPlus0x) .Case("cxx_strong_enums", LangOpts.CPlusPlus0x) diff --git a/test/Lexer/has_feature_cxx0x.cpp b/test/Lexer/has_feature_cxx0x.cpp index 27ea1062bb..57949e3017 100644 --- a/test/Lexer/has_feature_cxx0x.cpp +++ b/test/Lexer/has_feature_cxx0x.cpp @@ -109,6 +109,17 @@ int no_inline_namespaces(); // CHECK-0X: has_inline_namespaces // CHECK-NO-0X: no_inline_namespaces + +#if __has_feature(cxx_range_for) +int has_range_for(); +#else +int no_range_for(); +#endif + +// CHECK-0X: has_range_for +// CHECK-NO-0X: no_range_for + + #if __has_feature(cxx_reference_qualified_functions) int has_reference_qualified_functions(); #else |