r213185 - Objective-C. Changes per A. Ballman's comment
Aaron Ballman
aaron at aaronballman.com
Wed Jul 16 13:38:05 PDT 2014
On Wed, Jul 16, 2014 at 4:37 PM, jahanian <fjahanian at apple.com> wrote:
>
> On Jul 16, 2014, at 1:08 PM, Aaron Ballman <aaron at aaronballman.com> wrote:
>
> On Wed, Jul 16, 2014 at 3:44 PM, Fariborz Jahanian <fjahanian at apple.com>
> wrote:
>
> Author: fjahanian
> Date: Wed Jul 16 14:44:34 2014
> New Revision: 213185
>
> URL: http://llvm.org/viewvc/llvm-project?rev=213185&view=rev
> Log:
> Objective-C. Changes per A. Ballman's comment
> for my last patch. // rdar://17631257
>
> Added:
> cfe/trunk/test/SemaObjC/objc-asm-attribute-neg-test.m
> Modified:
> cfe/trunk/include/clang/AST/DeclObjC.h
> cfe/trunk/include/clang/Basic/Attr.td
> cfe/trunk/include/clang/Basic/AttrDocs.td
> cfe/trunk/lib/AST/DeclObjC.cpp
> cfe/trunk/lib/Sema/SemaDeclAttr.cpp
>
> Modified: cfe/trunk/include/clang/AST/DeclObjC.h
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/DeclObjC.h?rev=213185&r1=213184&r2=213185&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/AST/DeclObjC.h (original)
> +++ cfe/trunk/include/clang/AST/DeclObjC.h Wed Jul 16 14:44:34 2014
> @@ -955,6 +955,9 @@ public:
> void mergeClassExtensionProtocolList(ObjCProtocolDecl *const* List,
> unsigned Num,
> ASTContext &C);
> +
> + /// Produce a name to be used for class's metadata. It comes either via
> + /// objc_runtime_name attribute or class name.
> StringRef getObjCRuntimeNameAsString() const;
>
> /// Returns the designated initializers for the interface.
> @@ -1654,6 +1657,8 @@ public:
> /// \brief Starts the definition of this Objective-C protocol.
> void startDefinition();
>
> + /// Produce a name to be used for protocol's metadata. It comes either
> via
> + /// objc_runtime_name attribute or protocol name.
> StringRef getObjCRuntimeNameAsString() const;
>
> SourceRange getSourceRange() const override LLVM_READONLY {
> @@ -2104,6 +2109,8 @@ public:
> return getName();
> }
>
> + /// Produce a name to be used for class's metadata. It comes either via
> + /// class's objc_runtime_name attribute or class name.
> StringRef getObjCRuntimeNameAsString() const;
>
> const ObjCInterfaceDecl *getSuperClass() const { return SuperClass; }
>
> Modified: cfe/trunk/include/clang/Basic/Attr.td
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Attr.td?rev=213185&r1=213184&r2=213185&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/Basic/Attr.td (original)
> +++ cfe/trunk/include/clang/Basic/Attr.td Wed Jul 16 14:44:34 2014
> @@ -993,8 +993,8 @@ def ObjCRuntimeName : Attr {
> let Spellings = [GNU<"objc_runtime_name">];
> let Subjects = SubjectList<[ObjCInterface, ObjCProtocol], ErrorDiag,
> "ExpectedObjectiveCInterfaceOrProtocol">;
> - let Args = [StringArgument<"MetadataName", 1>];
> - let Documentation = [Undocumented];
> + let Args = [StringArgument<"MetadataName">];
> + let Documentation = [ObjCRuntimeNameDocs];
> }
>
> def OptimizeNone : InheritableAttr {
>
> Modified: cfe/trunk/include/clang/Basic/AttrDocs.td
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/AttrDocs.td?rev=213185&r1=213184&r2=213185&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/Basic/AttrDocs.td (original)
> +++ cfe/trunk/include/clang/Basic/AttrDocs.td Wed Jul 16 14:44:34 2014
> @@ -426,6 +426,25 @@ implementation of an override in a subcl
> }];
> }
>
> +def ObjCRuntimeNameDocs : Documentation {
> + let Category = DocCatFunction;
> + let Content = [{
> + Annotation of Objective-C classes and protocols with this attribute
> allow to
> + use an alternative name for metadata names which normally use class
> or protocol
> + names as part of their names.
>
>
> The phrasing here is a bit hard to understand. Would this capture the
> meaning sufficiently?
>
> By default, the Objective-C interface or protocol identifier is used
> as the metadata name for that object. The `objc_runtime_name`
> attribute allows annotated interfaces or protocols to use the
> specified string argument as the object's metadata name instead of the
> default name.
>
>
> Sounds much better. In r213192 with minor change “in the metadata name”
> instead of
> “as the metadata name” as the name has a fixed prefix as well.
> - Fariborz
Looks great, thank you!
~Aaron
More information about the llvm-commits
mailing list