diff --git a/clang/Sema/SemaDecl.cpp b/clang/Sema/SemaDecl.cpp index f00ed7f51ebe..226d33773f3c 100644 --- a/clang/Sema/SemaDecl.cpp +++ b/clang/Sema/SemaDecl.cpp @@ -1463,14 +1463,11 @@ void Sema::ActOnFields(Scope* S, if (Record) Record->defineBody(&RecFields[0], RecFields.size()); else { - ObjCIvarDecl **ClsFields = - reinterpret_cast(&RecFields[0]); - if (isa(static_cast(RecDecl))) - cast(static_cast(RecDecl))-> - addInstanceVariablesToClass(ClsFields, RecFields.size(), RBrac); - else if (isa(static_cast(RecDecl))) { - ObjCImplementationDecl* IMPDecl = - cast(static_cast(RecDecl)); + ObjCIvarDecl **ClsFields = reinterpret_cast(&RecFields[0]); + if (ObjCInterfaceDecl *ID = dyn_cast(EnclosingDecl)) + ID->addInstanceVariablesToClass(ClsFields, RecFields.size(), RBrac); + else if (ObjCImplementationDecl *IMPDecl = + dyn_cast(EnclosingDecl)) { assert(IMPDecl && "ActOnFields - missing ObjCImplementationDecl"); IMPDecl->ObjCAddInstanceVariablesToClassImpl(ClsFields, RecFields.size()); CheckImplementationIvars(IMPDecl, ClsFields, RecFields.size(), RBrac);