diff options
| author | Richard Smith <richard-llvm@metafoo.co.uk> | 2011-09-06 18:03:41 +0000 |
|---|---|---|
| committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2011-09-06 18:03:41 +0000 |
| commit | a8a5c402bb3bc81a90ebe3950aab4cb63911d1f6 (patch) | |
| tree | 4ede3bd41cff9e5fef6e2ebb9975196413e15ab5 | |
| parent | 50ef7611aa711c2c5a0cf6150442199b320b86c5 (diff) | |
| download | bcm5719-llvm-a8a5c402bb3bc81a90ebe3950aab4cb63911d1f6.tar.gz bcm5719-llvm-a8a5c402bb3bc81a90ebe3950aab4cb63911d1f6.zip | |
Advertise support for cxx_range_for as an extension in C++98 mode. Patch by Jean-Daniel Dupas!
Also provide a modicum of test coverage for ranged for in C++98.
llvm-svn: 139149
| -rw-r--r-- | clang/lib/Lex/PPMacroExpansion.cpp | 1 | ||||
| -rw-r--r-- | clang/test/Lexer/has_extension_cxx.cpp | 5 | ||||
| -rw-r--r-- | clang/test/SemaCXX/for-range-no-std.cpp | 1 |
3 files changed, 7 insertions, 0 deletions
diff --git a/clang/lib/Lex/PPMacroExpansion.cpp b/clang/lib/Lex/PPMacroExpansion.cpp index d0828d0d5d5..fce593fe9e9 100644 --- a/clang/lib/Lex/PPMacroExpansion.cpp +++ b/clang/lib/Lex/PPMacroExpansion.cpp @@ -705,6 +705,7 @@ static bool HasExtension(const Preprocessor &PP, const IdentifierInfo *II) { .Case("cxx_inline_namespaces", LangOpts.CPlusPlus) .Case("cxx_nonstatic_member_init", LangOpts.CPlusPlus) .Case("cxx_override_control", LangOpts.CPlusPlus) + .Case("cxx_range_for", LangOpts.CPlusPlus) .Case("cxx_reference_qualified_functions", LangOpts.CPlusPlus) .Case("cxx_rvalue_references", LangOpts.CPlusPlus) .Default(false); diff --git a/clang/test/Lexer/has_extension_cxx.cpp b/clang/test/Lexer/has_extension_cxx.cpp index 77efa357938..5481b596cc4 100644 --- a/clang/test/Lexer/has_extension_cxx.cpp +++ b/clang/test/Lexer/has_extension_cxx.cpp @@ -25,6 +25,11 @@ int has_inline_namespaces(); int has_override_control(); #endif +// CHECK: has_range_for +#if __has_extension(cxx_range_for) +int has_range_for(); +#endif + // CHECK: has_reference_qualified_functions #if __has_extension(cxx_reference_qualified_functions) int has_reference_qualified_functions(); diff --git a/clang/test/SemaCXX/for-range-no-std.cpp b/clang/test/SemaCXX/for-range-no-std.cpp index 8cc71e5111a..31b3581d1cf 100644 --- a/clang/test/SemaCXX/for-range-no-std.cpp +++ b/clang/test/SemaCXX/for-range-no-std.cpp @@ -1,4 +1,5 @@ // RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++0x +// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++98 -Wno-c++0x-extensions struct S { int *begin(); |

