]> granicus.if.org Git - clang/commitdiff
__has_feature(pragma_clang_attribute_namespaces) should be __has_extension
authorErik Pilkington <erik.pilkington@gmail.com>
Tue, 8 Jan 2019 18:24:39 +0000 (18:24 +0000)
committerErik Pilkington <erik.pilkington@gmail.com>
Tue, 8 Jan 2019 18:24:39 +0000 (18:24 +0000)
Thanks to Richard Smith for pointing this out.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@350642 91177308-0d34-0410-b5e6-96231b3b80d8

docs/LanguageExtensions.rst
include/clang/Basic/Features.def
test/Sema/pragma-attribute-namespace.c

index 574bb77345a80115064f13fe5a7601fdd11b0a70..e155cefb7890d8377355ef296c9c6bdd1513baca 100644 (file)
@@ -2727,7 +2727,7 @@ Without the namespaces on the macros, ``other_function`` will be annotated with
 a contrived example, but its very possible for this kind of situation to appear
 in real code if the pragmas are spread out across a large file. You can test if
 your version of clang supports namespaces on ``#pragma clang attribute`` with
-``__has_feature(pragma_clang_attribute_namespaces)``.
+``__has_extension(pragma_clang_attribute_namespaces)``.
 
 Subject Match Rules
 -------------------
index e3b97fd078e400ac31468fb8af90c4c2b74c1cec..05464ed85f13609f87ceefece8afcabe72a46b18 100644 (file)
 //
 // The Predicate field dictates the conditions under which the feature or
 // extension will be made available.
+//
+// FEATURE(...) should be used to advertise support for standard language
+// features, whereas EXTENSION(...) should be used for clang extensions. Note
+// that many of the identifiers in this file don't follow this rule for backward
+// compatibility reasons.
+//
 //===----------------------------------------------------------------------===//
 
 #if !defined(FEATURE) && !defined(EXTENSION)
@@ -69,7 +75,6 @@ FEATURE(attribute_overloadable, true)
 FEATURE(attribute_unavailable_with_message, true)
 FEATURE(attribute_unused_on_fields, true)
 FEATURE(attribute_diagnose_if_objc, true)
-FEATURE(pragma_clang_attribute_namespaces, true)
 FEATURE(blocks, LangOpts.Blocks)
 FEATURE(c_thread_safety_attributes, true)
 FEATURE(cxx_exceptions, LangOpts.CXXExceptions)
@@ -241,6 +246,7 @@ EXTENSION(cxx_init_captures, LangOpts.CPlusPlus11)
 EXTENSION(cxx_variable_templates, LangOpts.CPlusPlus)
 // Miscellaneous language extensions
 EXTENSION(overloadable_unmarked, true)
+EXTENSION(pragma_clang_attribute_namespaces, true)
 
 #undef EXTENSION
 #undef FEATURE
index 2db788865b26eeed988b6fbaf434745f64af3132..e7a36afcdc23d80dc28bdde71531f0fecfa8ba25 100644 (file)
@@ -1,6 +1,6 @@
 // RUN: %clang_cc1 -fsyntax-only -verify %s
 
-#if !__has_feature(pragma_clang_attribute_namespaces)
+#if !__has_extension(pragma_clang_attribute_namespaces)
 #error
 #endif