[PATCH] D112773: Allow __attribute__((swift_attr)) in attribute push pragmas
Becca Royal-Gordon via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Oct 28 17:40:29 PDT 2021
beccadax created this revision.
beccadax added a reviewer: arphaman.
beccadax added a project: clang.
Herald added a reviewer: aaron.ballman.
Herald added a subscriber: jdoerfert.
beccadax requested review of this revision.
Herald added a subscriber: cfe-commits.
This change does what it says on the tin: it allows SwiftAttr to be used with #pragma clang attribute push to add Swift attributes to large regions of header files. We plan to use this to annotate headers with concurrency information.
rdar://83499885
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D112773
Files:
clang/include/clang/Basic/Attr.td
clang/test/AST/attr-swift_attr.m
clang/test/Misc/pragma-attribute-supported-attributes-list.test
Index: clang/test/Misc/pragma-attribute-supported-attributes-list.test
===================================================================
--- clang/test/Misc/pragma-attribute-supported-attributes-list.test
+++ clang/test/Misc/pragma-attribute-supported-attributes-list.test
@@ -161,6 +161,7 @@
// CHECK-NEXT: SwiftAsyncContext (SubjectMatchRule_variable_is_parameter)
// CHECK-NEXT: SwiftAsyncError (SubjectMatchRule_function, SubjectMatchRule_objc_method)
// CHECK-NEXT: SwiftAsyncName (SubjectMatchRule_objc_method, SubjectMatchRule_function)
+// CHECK-NEXT: SwiftAttr ()
// CHECK-NEXT: SwiftBridgedTypedef (SubjectMatchRule_type_alias)
// CHECK-NEXT: SwiftContext (SubjectMatchRule_variable_is_parameter)
// CHECK-NEXT: SwiftError (SubjectMatchRule_function, SubjectMatchRule_objc_method)
Index: clang/test/AST/attr-swift_attr.m
===================================================================
--- clang/test/AST/attr-swift_attr.m
+++ clang/test/AST/attr-swift_attr.m
@@ -4,5 +4,13 @@
@interface View
@end
-// CHECK: InterfaceDecl {{.*}} View
+// CHECK-LABEL: InterfaceDecl {{.*}} View
// CHECK-NEXT: SwiftAttrAttr {{.*}} "@actor"
+
+#pragma clang attribute push(__attribute__((swift_attr("@sendable"))), apply_to=objc_interface)
+ at interface Contact
+ at end
+#pragma clang attribute pop
+
+// CHECK-LABEL: InterfaceDecl {{.*}} Contact
+// CHECK-NEXT: SwiftAttrAttr {{.*}} "@sendable"
Index: clang/include/clang/Basic/Attr.td
===================================================================
--- clang/include/clang/Basic/Attr.td
+++ clang/include/clang/Basic/Attr.td
@@ -2347,6 +2347,7 @@
let Spellings = [GNU<"swift_attr">];
let Args = [StringArgument<"Attribute">];
let Documentation = [SwiftAttrDocs];
+ let PragmaAttributeSupport = 1;
}
def SwiftBridge : InheritableAttr {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D112773.383211.patch
Type: text/x-patch
Size: 1809 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20211029/798b00e7/attachment.bin>
More information about the cfe-commits
mailing list