From f4072ae44b70a7ac234c47c146157fee75437e38 Mon Sep 17 00:00:00 2001 From: Fariborz Jahanian Date: Tue, 18 Oct 2011 19:54:31 +0000 Subject: [PATCH] objc: more changes in use of IBOutletCollection attribute. 'Class' is disallowed as argument. If the argument is missing, NSObject is assumed. // rdar://10296078 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142409 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Sema/SemaDeclAttr.cpp | 5 ++--- test/SemaObjC/iboutletcollection-attr.m | 2 ++ 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/Sema/SemaDeclAttr.cpp b/lib/Sema/SemaDeclAttr.cpp index 69baf79ad0..b83b716fdf 100644 --- a/lib/Sema/SemaDeclAttr.cpp +++ b/lib/Sema/SemaDeclAttr.cpp @@ -805,7 +805,7 @@ static void handleIBOutletCollection(Sema &S, Decl *D, IdentifierInfo *II = Attr.getParameterName(); if (!II) - II = &S.Context.Idents.get("id"); + II = &S.Context.Idents.get("NSObject"); ParsedType TypeRep = S.getTypeName(*II, Attr.getLoc(), S.getScopeForContext(D->getDeclContext()->getParent())); @@ -818,8 +818,7 @@ static void handleIBOutletCollection(Sema &S, Decl *D, // FIXME. Gnu attribute extension ignores use of builtin types in // attributes. So, __attribute__((iboutletcollection(char))) will be // treated as __attribute__((iboutletcollection())). - if (!QT->isObjCIdType() && !QT->isObjCClassType() && - !QT->isObjCObjectType()) { + if (!QT->isObjCIdType() && !QT->isObjCObjectType()) { S.Diag(Attr.getLoc(), diag::err_iboutletcollection_type) << II; return; } diff --git a/test/SemaObjC/iboutletcollection-attr.m b/test/SemaObjC/iboutletcollection-attr.m index 052fe9fb00..1491b3292d 100644 --- a/test/SemaObjC/iboutletcollection-attr.m +++ b/test/SemaObjC/iboutletcollection-attr.m @@ -2,6 +2,8 @@ // RUN: %clang_cc1 -x objective-c++ -fsyntax-only -verify %s // rdar://8308053 +@class NSObject; + @interface I { __attribute__((iboutletcollection(I))) id ivar1; __attribute__((iboutletcollection(id))) id ivar2; -- 2.40.0