From: Sebastian Redl Date: Tue, 15 Mar 2011 21:17:12 +0000 (+0000) Subject: Create __has_feature(cxx_noexcept) and mark it as working. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4561ecdf27b68d80b3cecc2d80ec32bea0ac2127;p=clang Create __has_feature(cxx_noexcept) and mark it as working. Find out that our C++0x status has only one field for noexcept expression and specification together, and that it was accidentally already marked as fully implemented. This completes noexcept specification work. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127701 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/docs/LanguageExtensions.html b/docs/LanguageExtensions.html index b0de13a91e..6bde981788 100644 --- a/docs/LanguageExtensions.html +++ b/docs/LanguageExtensions.html @@ -46,6 +46,7 @@ td {
  • C++0x inline namespaces
  • C++0x strongly-typed enumerations
  • C++0x trailing return type
  • +
  • C++0x noexcept specification
  • Checks for Type Traits
  • Blocks
  • @@ -436,6 +437,11 @@ inline namespaces is enabled.

    Use __has_feature(cxx_trailing_return) to determine if support for the alternate function declaration syntax with trailing return type is enabled.

    +

    C++0x noexcept

    + +

    Use __has_feature(cxx_noexcept) to determine if support for +noexcept exception specifications is enabled.

    +

    C++0x strongly typed enumerations

    Use __has_feature(cxx_strong_enums) to determine if support for diff --git a/lib/Lex/PPMacroExpansion.cpp b/lib/Lex/PPMacroExpansion.cpp index 10abfb4b83..858090acb8 100644 --- a/lib/Lex/PPMacroExpansion.cpp +++ b/lib/Lex/PPMacroExpansion.cpp @@ -560,6 +560,7 @@ static bool HasFeature(const Preprocessor &PP, const IdentifierInfo *II) { .Case("cxx_deleted_functions", LangOpts.CPlusPlus0x) .Case("cxx_inline_namespaces", LangOpts.CPlusPlus0x) //.Case("cxx_lambdas", false) + .Case("cxx_noexcept", LangOpts.CPlusPlus0x) //.Case("cxx_nullptr", false) .Case("cxx_reference_qualified_functions", LangOpts.CPlusPlus0x) .Case("cxx_rvalue_references", LangOpts.CPlusPlus0x) diff --git a/test/Lexer/has_feature_cxx0x.cpp b/test/Lexer/has_feature_cxx0x.cpp index 07a3ebd38d..ff0e85d33a 100644 --- a/test/Lexer/has_feature_cxx0x.cpp +++ b/test/Lexer/has_feature_cxx0x.cpp @@ -117,3 +117,12 @@ int no_default_function_template_args(); // CHECK-0X: has_default_function_template_args // CHECK-NO-0X: no_default_function_template_args +#if __has_feature(cxx_noexcept) +int has_noexcept(); +#else +int no_noexcept(); +#endif + +// CHECK-0X: has_noexcept +// CHECK-NO-0X: no_noexcept +