summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaDeclAttr.cpp
diff options
context:
space:
mode:
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>2013-12-07 06:08:04 +0000
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>2013-12-07 06:08:04 +0000
commite818681c889361f23a0ce565dfbe2fdda1846c02 (patch)
treebc594e2eb8a46531f9273bde28876f96f4fb98df /clang/lib/Sema/SemaDeclAttr.cpp
parentfc127d11971372123b80e492af28e91b1d03efeb (diff)
downloadbcm5719-llvm-e818681c889361f23a0ce565dfbe2fdda1846c02.tar.gz
bcm5719-llvm-e818681c889361f23a0ce565dfbe2fdda1846c02.zip
Add a SubsetSubject in Attr.td to automate checking of where the objc_designated_initializer
attribute is acceptable. llvm-svn: 196644
Diffstat (limited to 'clang/lib/Sema/SemaDeclAttr.cpp')
-rw-r--r--clang/lib/Sema/SemaDeclAttr.cpp19
1 files changed, 2 insertions, 17 deletions
diff --git a/clang/lib/Sema/SemaDeclAttr.cpp b/clang/lib/Sema/SemaDeclAttr.cpp
index f5a36542185..6d7bc034658 100644
--- a/clang/lib/Sema/SemaDeclAttr.cpp
+++ b/clang/lib/Sema/SemaDeclAttr.cpp
@@ -3733,24 +3733,9 @@ static void handleObjCBridgeRelatedAttr(Sema &S, Scope *Sc, Decl *D,
static void handleObjCDesignatedInitializer(Sema &S, Decl *D,
const AttributeList &Attr) {
- SourceLocation Loc = Attr.getLoc();
- ObjCMethodDecl *Method = cast<ObjCMethodDecl>(D);
-
- if (Method->getMethodFamily() != OMF_init) {
- S.Diag(D->getLocStart(), diag::err_attr_objc_designated_not_init_family)
- << SourceRange(Loc, Loc);
- return;
- }
- ObjCInterfaceDecl *IFace =
- dyn_cast<ObjCInterfaceDecl>(Method->getDeclContext());
- if (!IFace) {
- S.Diag(D->getLocStart(), diag::err_attr_objc_designated_not_interface)
- << SourceRange(Loc, Loc);
- return;
- }
-
+ ObjCInterfaceDecl *IFace = cast<ObjCInterfaceDecl>(D->getDeclContext());
IFace->setHasDesignatedInitializers();
- Method->addAttr(::new (S.Context)
+ D->addAttr(::new (S.Context)
ObjCDesignatedInitializerAttr(Attr.getRange(), S.Context,
Attr.getAttributeSpellingListIndex()));
}
OpenPOWER on IntegriCloud