mwyman updated this revision to Diff 440390.

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D128031/new/

https://reviews.llvm.org/D128031

Files:
  clang/lib/Sema/SemaType.cpp
  clang/test/SemaObjCXX/Inputs/nullability-consistency-2.h


Index: clang/test/SemaObjCXX/Inputs/nullability-consistency-2.h
===================================================================
--- clang/test/SemaObjCXX/Inputs/nullability-consistency-2.h
+++ clang/test/SemaObjCXX/Inputs/nullability-consistency-2.h
@@ -19,13 +19,9 @@
 @property (retain,nullable) SomeClass *property2;
 - (nullable SomeClass *)method1;
 - (void)method2:(nonnull SomeClass *)param;
-@property (readonly, weak) SomeClass *property3; // expected-warning{{missing 
a nullability type specifier}}
-// expected-note@-1 {{insert '_Nullable' if the pointer may be null}}
-// expected-note@-2 {{insert '_Nonnull' if the pointer should never be null}}
+@property (readonly, weak) SomeClass *property3;
 @end
 
 @interface SomeClass ()
-@property (readonly, weak) SomeClass *property4; // expected-warning{{missing 
a nullability type specifier}}
-// expected-note@-1 {{insert '_Nullable' if the pointer may be null}}
-// expected-note@-2 {{insert '_Nonnull' if the pointer should never be null}}
+@property (readonly, weak) SomeClass *property4;
 @end
Index: clang/lib/Sema/SemaType.cpp
===================================================================
--- clang/lib/Sema/SemaType.cpp
+++ clang/lib/Sema/SemaType.cpp
@@ -4683,8 +4683,13 @@
       }
 
       // Weak properties are inferred to be nullable.
-      if (state.getDeclarator().isObjCWeakProperty() && inAssumeNonNullRegion) 
{
-        inferNullability = NullabilityKind::Nullable;
+      if (state.getDeclarator().isObjCWeakProperty()) {
+        // Weak properties cannot be nonnull, and should not complain about
+        // missing nullable attributes during completeness checks.
+        complainAboutMissingNullability = CAMN_No;
+        if (inAssumeNonNullRegion) {
+          inferNullability = NullabilityKind::Nullable;
+        }
         break;
       }
 


Index: clang/test/SemaObjCXX/Inputs/nullability-consistency-2.h
===================================================================
--- clang/test/SemaObjCXX/Inputs/nullability-consistency-2.h
+++ clang/test/SemaObjCXX/Inputs/nullability-consistency-2.h
@@ -19,13 +19,9 @@
 @property (retain,nullable) SomeClass *property2;
 - (nullable SomeClass *)method1;
 - (void)method2:(nonnull SomeClass *)param;
-@property (readonly, weak) SomeClass *property3; // expected-warning{{missing a nullability type specifier}}
-// expected-note@-1 {{insert '_Nullable' if the pointer may be null}}
-// expected-note@-2 {{insert '_Nonnull' if the pointer should never be null}}
+@property (readonly, weak) SomeClass *property3;
 @end
 
 @interface SomeClass ()
-@property (readonly, weak) SomeClass *property4; // expected-warning{{missing a nullability type specifier}}
-// expected-note@-1 {{insert '_Nullable' if the pointer may be null}}
-// expected-note@-2 {{insert '_Nonnull' if the pointer should never be null}}
+@property (readonly, weak) SomeClass *property4;
 @end
Index: clang/lib/Sema/SemaType.cpp
===================================================================
--- clang/lib/Sema/SemaType.cpp
+++ clang/lib/Sema/SemaType.cpp
@@ -4683,8 +4683,13 @@
       }
 
       // Weak properties are inferred to be nullable.
-      if (state.getDeclarator().isObjCWeakProperty() && inAssumeNonNullRegion) {
-        inferNullability = NullabilityKind::Nullable;
+      if (state.getDeclarator().isObjCWeakProperty()) {
+        // Weak properties cannot be nonnull, and should not complain about
+        // missing nullable attributes during completeness checks.
+        complainAboutMissingNullability = CAMN_No;
+        if (inAssumeNonNullRegion) {
+          inferNullability = NullabilityKind::Nullable;
+        }
         break;
       }
 
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to