diff --git a/include/clang/Basic/DiagnosticKinds.def b/include/clang/Basic/DiagnosticKinds.def
index 89bf0ce..474beeb 100644
--- a/include/clang/Basic/DiagnosticKinds.def
+++ b/include/clang/Basic/DiagnosticKinds.def
@@ -422,6 +422,8 @@
      "property requires fields to be named")
 DIAG(err_objc_expected_property_attr, ERROR,
      "unknown property attribute '%0'")
+DIAG(err_objc_propertoes_require_objc2, ERROR,
+     "properties are an Objective-C 2 feature")
 DIAG(err_objc_unexpected_attr, ERROR,
      "prefix attribute must be followed by an interface or protocol")
 DIAG(err_objc_property_attr_mutually_exclusive, ERROR,
diff --git a/lib/Parse/ParseObjc.cpp b/lib/Parse/ParseObjc.cpp
index c854400..eee3cac 100644
--- a/lib/Parse/ParseObjc.cpp
+++ b/lib/Parse/ParseObjc.cpp
@@ -283,7 +283,7 @@
       // continue to eat up tons of stuff and spew lots of nonsense errors.  It
       // would probably be better to bail out if we saw an @class or @interface
       // or something like that.
-      Diag(Tok, diag::err_objc_illegal_interface_qual);
+      Diag(AtLoc, diag::err_objc_illegal_interface_qual);
       // Skip until we see an '@' or '}' or ';'.
       SkipUntil(tok::r_brace, tok::at);
       break;
@@ -299,10 +299,14 @@
       break;
         
     case tok::objc_property:
+      if (!getLang().ObjC2)
+        Diag(AtLoc, diag::err_objc_propertoes_require_objc2);
+
       ObjCDeclSpec OCDS;
       // Parse property attribute list, if any. 
-      if (Tok.is(tok::l_paren))
+      if (Tok.is(tok::l_paren)) {
         ParseObjCPropertyAttribute(OCDS);
+      }
         
       // Parse all the comma separated declarators.
       DeclSpec DS;
@@ -379,6 +383,13 @@
   
   while (1) {
     const IdentifierInfo *II = Tok.getIdentifierInfo();
+    
+    // If this is not an identifier at all, bail out early.
+    if (II == 0) {
+      MatchRHSPunctuation(tok::r_paren, LHSLoc);
+      return;
+    }
+    
     // getter/setter require extra treatment.
     if (II == ObjCPropertyAttrs[objc_getter] || 
         II == ObjCPropertyAttrs[objc_setter]) {
@@ -416,21 +427,18 @@
     else if (II == ObjCPropertyAttrs[objc_assign])
       DS.setPropertyAttributes(ObjCDeclSpec::DQ_PR_assign);
     else if (II == ObjCPropertyAttrs[objc_readwrite])
-        DS.setPropertyAttributes(ObjCDeclSpec::DQ_PR_readwrite);
+      DS.setPropertyAttributes(ObjCDeclSpec::DQ_PR_readwrite);
     else if (II == ObjCPropertyAttrs[objc_retain])
       DS.setPropertyAttributes(ObjCDeclSpec::DQ_PR_retain);
     else if (II == ObjCPropertyAttrs[objc_copy])
       DS.setPropertyAttributes(ObjCDeclSpec::DQ_PR_copy);
     else if (II == ObjCPropertyAttrs[objc_nonatomic])
       DS.setPropertyAttributes(ObjCDeclSpec::DQ_PR_nonatomic);
-    else if (II) {
+    else {
       Diag(Tok.getLocation(), diag::err_objc_expected_property_attr,
            II->getName());
       SkipUntil(tok::r_paren);
       return;
-    } else {
-      MatchRHSPunctuation(tok::r_paren, LHSLoc);
-      return;
     }
     
     ConsumeToken(); // consume last attribute token
