From: Douglas Gregor Date: Tue, 7 Jul 2015 06:20:31 +0000 (+0000) Subject: [libclang] When inferring nonnull use the contextual keyword for the code-completion... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=daa9bed1ab64423d72910ee5a4e2861fbd68a399;p=clang [libclang] When inferring nonnull use the contextual keyword for the code-completion results, when appropriate. rdar://20742295 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@241560 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/SemaType.cpp b/lib/Sema/SemaType.cpp index 768efeb64a..1360c2cf28 100644 --- a/lib/Sema/SemaType.cpp +++ b/lib/Sema/SemaType.cpp @@ -3479,6 +3479,11 @@ static TypeSourceInfo *GetFullTypeForDeclarator(TypeProcessingState &state, spliceAttrIntoList(*nullabilityAttr, attrs); + if (inferNullabilityCS) { + state.getDeclarator().getMutableDeclSpec().getObjCQualifiers() + ->setObjCDeclQualifier(ObjCDeclSpec::DQ_CSNullability); + } + if (inferNullabilityInnerOnly) inferNullabilityInnerOnlyComplete = true; return nullabilityAttr; diff --git a/test/Index/complete-method-decls.m b/test/Index/complete-method-decls.m index a74020a5ed..e45d68f970 100644 --- a/test/Index/complete-method-decls.m +++ b/test/Index/complete-method-decls.m @@ -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)