This patch depends on https://reviews.llvm.org/D25519.
This patch changes the way that Objective-C block properties are code complete: clang now suggests completion with an additional '=' and the block literal placeholder when providing member access completions for appropriate readwrite block properties. This patch uses a simple heuristic to determine if it's appropriate to suggest a setter completion for block properties: if we are completing member access that is a standalone statement, we provide setter completion. Otherwise we fallback to the default property completion.
The following example illustrates when the setter completion is triggered:
@interface Test : Obj @property (readonly, nonatomic, copy) void (^onReadonly)(int *someParameter); @end @implementation Test - foo { self.<COMPLETION> // will complete with ‘=‘ and block } - fooNot { // These will code complete normally: (self.<COMPLETION>) return self.<COMPLETION> [self foo: self.<COMPLETION>] if (self.<COMPLETION>) { } } @end