[PATCH] D41537: Optionally add code completion results for arrow instead of dot
Ivan Donchevskii via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon May 14 05:52:03 PDT 2018
yvvan added a comment.
In https://reviews.llvm.org/D41537#1097763, @ilya-biryukov wrote:
> I should've suggested splitting the change into two earlier.
Next time I will do that from the beginning :)
================
Comment at: tools/libclang/CIndexCodeCompletion.cpp:309
+ /// before that result for the corresponding completion item.
+ std::vector<std::vector<FixItHint>> FixItsVector;
};
----------------
ilya-biryukov wrote:
> Storing `vector<vector<>>` here makes looks like a hack. Even though it might seem more tricky, I suggest storing an opaque pointer to `vector<FixItHint>` in each `CXCompletionResult`. Managing the lifetime of vectors in the `AllocatedCXCodeCompleteResults` seems totally fine, but there should be a way to get to the fixits in a similar way we can get to the completion string.
> More concretely, I suggest the following API:
> ```
> // === Index.h
> typedef void* CXCompletionFixIts;
> typedef struct {
> // ...
> CXCompletionFixIts FixIts;
> };
>
> // Get the number of fix-its.
> unsigned clang_getCompletionNumFixIts(CXCompletionResult *Result);
> // ... Similar to getDiagnosticFixIt
> CXString clang_getCompletionFixIt((CXCompletionResult *Result, unsigned fixit_index, CXSourceRange *replacement_range);
>
>
>
> // === Impl.cpp
> struct AllocatedCXCodeCompleteResults : public CXCodeCompleteResults {
> // .....
> // Pool for allocating non-empty fixit vectors in the CXCompletionResult.
> std::vector<std::vector<FixItHint>> FixItsVector
> };
>
> unsigned clang_getCompletionNumFixIts(CXCompletionResult *Result) {
> auto* FixIts = static_cast<std::vector<FixItHint>*>(Result->FixIts);
> if (!FixIts)
> return 0;
> return FixIts->size();
> }
> ```
unsigned clang_getCompletionNumFixIts(CXCompletionResult *Result);
Do you mean appending CXCompletionResult struct with the "CXCompletionFixIts FixIts" member? Doesn't it break binary compatibility (changing the struct size)?
https://reviews.llvm.org/D41537
More information about the cfe-commits
mailing list