[PATCH] D53654: [clang] Improve ctor initializer completions.

Kadir Cetinkaya via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Oct 31 06:08:53 PDT 2018


kadircet added inline comments.


================
Comment at: lib/Sema/SemaCodeComplete.cpp:5136
+  auto AddDefaultCtorInit = [&](const char *TypedName,
+                                const char *TypeName,
+                                const NamedDecl* ND) {
----------------
ilya-biryukov wrote:
> kadircet wrote:
> > ilya-biryukov wrote:
> > > Maybe use StringRef?
> > Don't think this looks any better, since we need to use `.data()` at chunk additions than.
> > 
> > Even if we try to push allocations all the way down until we add those chunks, we still get bad looking code since types are returned as `std::string` and we need to make a copy in the stack to be able to pass it as `StringRef`.
> `char*` and `StringRef` have equivalent lifetime properties, so the set of cases you need to do extra copies is equivalent. Am I missing something?
> But yeah, since AddChunk methods accept a `char*`,  `StringRef` is not suitable because it's not guaranteed to be null-terminated. LG
Yes, but I store those strings inside allocator and pass pointers of those stored ones. If I were to defer the allocation, I would need to keep copies of the strings myself until I call allocate on them.


================
Comment at: test/CodeCompletion/ctor-initializer.cpp:69
 struct Base2 {
-  Base2(int);
+  Base2(int, float x = 3);
 };
----------------
ilya-biryukov wrote:
> Why do we want to change this test?
This was for something else I've been testing, nvm.

The change below is however, to get rid of the compile error.


Repository:
  rC Clang

https://reviews.llvm.org/D53654





More information about the cfe-commits mailing list