summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST
diff options
context:
space:
mode:
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>2014-04-26 21:28:41 +0000
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>2014-04-26 21:28:41 +0000
commit357b36a2c00c3337fb7011dc3f91e072f0ab81ea (patch)
tree9a3de7f5b56da6b6cd86a9883e5f5062cace4339 /clang/lib/AST
parentccf45ebc243f560fe7f311999b7d6ead08ccbffb (diff)
downloadbcm5719-llvm-357b36a2c00c3337fb7011dc3f91e072f0ab81ea.tar.gz
bcm5719-llvm-357b36a2c00c3337fb7011dc3f91e072f0ab81ea.zip
[SemaObjC] Fix ObjCInterfaceDecl::inheritsDesignatedInitializers(), if there are no
designated initializers in the super class hierarchy then it should return false. rdar://16692535 llvm-svn: 207332
Diffstat (limited to 'clang/lib/AST')
-rw-r--r--clang/lib/AST/DeclObjC.cpp16
1 files changed, 13 insertions, 3 deletions
diff --git a/clang/lib/AST/DeclObjC.cpp b/clang/lib/AST/DeclObjC.cpp
index 357c1ec5292..aedb097beef 100644
--- a/clang/lib/AST/DeclObjC.cpp
+++ b/clang/lib/AST/DeclObjC.cpp
@@ -385,11 +385,21 @@ bool ObjCInterfaceDecl::inheritsDesignatedInitializers() const {
// misleading warnings.
if (isIntroducingInitializers(this)) {
data().InheritedDesignatedInitializers = DefinitionData::IDI_NotInherited;
- return false;
} else {
- data().InheritedDesignatedInitializers = DefinitionData::IDI_Inherited;
- return true;
+ if (auto SuperD = getSuperClass()) {
+ data().InheritedDesignatedInitializers =
+ SuperD->declaresOrInheritsDesignatedInitializers() ?
+ DefinitionData::IDI_Inherited :
+ DefinitionData::IDI_NotInherited;
+ } else {
+ data().InheritedDesignatedInitializers =
+ DefinitionData::IDI_NotInherited;
+ }
}
+ assert(data().InheritedDesignatedInitializers
+ != DefinitionData::IDI_Unknown);
+ return data().InheritedDesignatedInitializers ==
+ DefinitionData::IDI_Inherited;
}
}
OpenPOWER on IntegriCloud