[PATCH] D38327: [Sema] Put nullability fix-it after the end of the pointer.

Volodymyr Sapsai via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Sep 27 12:38:37 PDT 2017


vsapsai added a comment.

To preempt some of review feedback here are attempted and rejected approaches:

- Pass `pointerLoc` and `pointerEndLoc` as `pointerRange`. Such source range can be misleading as `pointerLoc` doesn't necesserily point at the beginning. For example, for `int *x` pointer range would be "*" and I would expect it to be "int *". So it's not really a range but 2 related locations.

- Use `D.getDeclSpec().getLocEnd()` instead of `D.getDeclSpec().getTypeSpecTypeLoc()`. In this case warning location points at the closing angle bracket and that can be confusing to developers. It looks like

  ./test.h:14:3: warning: pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified)
    id<SomeProtocol> thingies;
                   ^



- Use `pointerLoc` for insert note instead of `pointerEndLoc`. It looks like

  ./test.h:14:3: note: insert '_Nullable' if the pointer may be null
    id<SomeProtocol> thingies;
    ^
                     _Nullable

compared to suggested

  ./test.h:14:18: note: insert '_Nullable' if the pointer may be null
    id<SomeProtocol> thingies;
                   ^
                     _Nullable

I don't expect developers to know that they should match whitespace preceding _Nullable to calculate where in the line it should be inserted. And I think developers shouldn't care about it. So put the cursor where you expect the text to be inserted.


https://reviews.llvm.org/D38327





More information about the cfe-commits mailing list