Author: dgregor
Date: Tue Jul  7 01:20:31 2015
New Revision: 241560

URL: http://llvm.org/viewvc/llvm-project?rev=241560&view=rev
Log:
[libclang] When inferring nonnull use the contextual keyword for the 
code-completion results,
when appropriate.

rdar://20742295

Modified:
    cfe/trunk/lib/Sema/SemaType.cpp
    cfe/trunk/test/Index/complete-method-decls.m

Modified: cfe/trunk/lib/Sema/SemaType.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaType.cpp?rev=241560&r1=241559&r2=241560&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaType.cpp (original)
+++ cfe/trunk/lib/Sema/SemaType.cpp Tue Jul  7 01:20:31 2015
@@ -3479,6 +3479,11 @@ static TypeSourceInfo *GetFullTypeForDec
 
       spliceAttrIntoList(*nullabilityAttr, attrs);
 
+      if (inferNullabilityCS) {
+        state.getDeclarator().getMutableDeclSpec().getObjCQualifiers()
+          ->setObjCDeclQualifier(ObjCDeclSpec::DQ_CSNullability);
+      }
+
       if (inferNullabilityInnerOnly)
         inferNullabilityInnerOnlyComplete = true;
       return nullabilityAttr;

Modified: cfe/trunk/test/Index/complete-method-decls.m
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/complete-method-decls.m?rev=241560&r1=241559&r2=241560&view=diff
==============================================================================
--- cfe/trunk/test/Index/complete-method-decls.m (original)
+++ cfe/trunk/test/Index/complete-method-decls.m Tue Jul  7 01:20:31 2015
@@ -90,7 +90,18 @@ typedef A *MyObjectRef;
 @end
 
 @implementation I2
--
+-(void)foo {}
+@end
+
+#pragma clang assume_nonnull begin
+@interface I3
+-(I3 *)produceI3:(I3 *)i3;
+-(instancetype)getI3;
+@end
+#pragma clang assume_nonnull end
+
+@implementation I3
+-(void)foo {}
 @end
 
 // RUN: c-index-test -code-completion-at=%s:17:3 %s | FileCheck 
-check-prefix=CHECK-CC1 %s
@@ -213,3 +224,7 @@ typedef A *MyObjectRef;
 
 // RUN: c-index-test -code-completion-at=%s:93:2 %s | FileCheck 
-check-prefix=CHECK-NULLABILITY %s
 // CHECK-NULLABILITY: ObjCInstanceMethodDecl:{LeftParen (}{Text nonnull }{Text 
I2 *}{RightParen )}{TypedText produceI2}{TypedText :}{LeftParen (}{Text 
nullable }{Text I2 *}{RightParen )}{Text i2} (40)
+
+// RUN: c-index-test -code-completion-at=%s:104:2 %s | FileCheck 
-check-prefix=CHECK-NULLABILITY2 %s
+// CHECK-NULLABILITY2: ObjCInstanceMethodDecl:{LeftParen (}{Text nonnull 
}{Text instancetype}{RightParen )}{TypedText getI3} (40)
+// CHECK-NULLABILITY2: ObjCInstanceMethodDecl:{LeftParen (}{Text nonnull 
}{Text I3 *}{RightParen )}{TypedText produceI3}{TypedText :}{LeftParen (}{Text 
nonnull }{Text I3 *}{RightParen )}{Text i3} (40)


_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to