fix a crash on unnamed properties like:
@property (readonly) int : 4;



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57805 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Parse/ParseObjc.cpp b/lib/Parse/ParseObjc.cpp
index cc5a74d..80de1b0 100644
--- a/lib/Parse/ParseObjc.cpp
+++ b/lib/Parse/ParseObjc.cpp
@@ -316,21 +316,27 @@
       // Convert them all to property declarations.
       for (unsigned i = 0, e = FieldDeclarators.size(); i != e; ++i) {
         FieldDeclarator &FD = FieldDeclarators[i];
+        if (FD.D.getIdentifier() == 0) {
+          Diag(AtLoc, diag::err_objc_property_requires_field_name,
+               FD.D.getSourceRange());
+          continue;
+        }
+        
         // Install the property declarator into interfaceDecl.
+        IdentifierInfo *SelName =
+          OCDS.getGetterName() ? OCDS.getGetterName() : FD.D.getIdentifier();
+        
         Selector GetterSel = 
-          PP.getSelectorTable().getNullarySelector(OCDS.getGetterName() 
-                                                   ? OCDS.getGetterName() 
-                                                   : FD.D.getIdentifier());
+          PP.getSelectorTable().getNullarySelector(SelName);
         IdentifierInfo *SetterName = OCDS.getSetterName();
         if (!SetterName)
           SetterName = constructSetterName(PP.getIdentifierTable(),
                                            FD.D.getIdentifier());
         Selector SetterSel = 
           PP.getSelectorTable().getUnarySelector(SetterName);
-        DeclTy *Property = Actions.ActOnProperty(CurScope,
-                             AtLoc, FD, OCDS,
-                             GetterSel, SetterSel,
-                             MethodImplKind);
+        DeclTy *Property = Actions.ActOnProperty(CurScope, AtLoc, FD, OCDS,
+                                                 GetterSel, SetterSel,
+                                                 MethodImplKind);
         allProperties.push_back(Property);
       }
       break;