Extend type nullability qualifiers for Objective-C.

Introduce context-sensitive, non-underscored nullability specifiers
(nonnull, nullable, null_unspecified) for Objective-C method return
types, method parameter types, and properties.

Introduce Objective-C-specific semantics, including computation of the
nullability of the result of a message send, merging of nullability
information from the @interface of a class into its @implementation,
etc .

This is the Objective-C part of rdar://problem/18868820.

llvm-svn: 240154
diff --git a/clang/test/Index/comment-objc-decls.m b/clang/test/Index/comment-objc-decls.m
index ae3b0bb..d53757c 100644
--- a/clang/test/Index/comment-objc-decls.m
+++ b/clang/test/Index/comment-objc-decls.m
@@ -20,19 +20,19 @@
  * \param[in] range output value is unsigned int
  * \result return index
  */
-- (unsigned int)MethodMyProto:(id)anObject inRange:(unsigned int)range;
+- (unsigned int)MethodMyProto:(nullable id)anObject inRange:(unsigned int)range;
 /**
  * \brief PropertyMyProto - This is protocol's property.
 */
-@property (copy) id PropertyMyProto;
+@property (copy, nonnull) id PropertyMyProto;
 /**
  * \brief ClassMethodMyProto
 */
 + ClassMethodMyProto;
 @end
 // CHECK: <Declaration>@protocol MyProto\n@end</Declaration>
-// CHECK: <Declaration>- (unsigned int)MethodMyProto:(id)anObject inRange:(unsigned int)range;</Declaration>
-// CHECK: <Declaration>@optional\n@property(readwrite, copy, atomic) id PropertyMyProto;</Declaration>
+// CHECK: <Declaration>- (unsigned int)MethodMyProto:(nullable id)anObject inRange:(unsigned int)range;</Declaration>
+// CHECK: <Declaration>@optional\n@property(readwrite, copy, atomic, nonnull) id PropertyMyProto;</Declaration>
 // CHECK: <Declaration>+ (id)ClassMethodMyProto;</Declaration>
 
 /**