void ObjCInterfaceDecl::getDesignatedInitializers(
llvm::SmallVectorImpl<const ObjCMethodDecl *> &Methods) const {
- assert(hasDefinition());
+ // Check for a complete definition and recover if not so.
+ if (!isThisDeclarationADefinition())
+ return;
if (data().ExternallyCompleted)
LoadExternalDefinition();
bool ObjCInterfaceDecl::isDesignatedInitializer(Selector Sel,
const ObjCMethodDecl **InitMethod) const {
- assert(hasDefinition());
+ // Check for a complete definition and recover if not so.
+ if (!isThisDeclarationADefinition())
+ return false;
if (data().ExternallyCompleted)
LoadExternalDefinition();
}
void ObjCInterfaceDecl::setHasDesignatedInitializers() {
- assert(hasDefinition() && "Forward declarations can't contain methods");
+ // Check for a complete definition and recover if not so.
+ if (!isThisDeclarationADefinition())
+ return;
data().HasDesignatedInitializers = true;
}
bool ObjCInterfaceDecl::hasDesignatedInitializers() const {
- assert(hasDefinition() && "Forward declarations can't contain methods");
+ // Check for a complete definition and recover if not so.
+ if (!isThisDeclarationADefinition())
+ return false;
if (data().ExternallyCompleted)
LoadExternalDefinition();