kadircet marked 4 inline comments as done.
kadircet added inline comments.

================
Comment at: clang-tools-extra/clangd/FindTarget.h:96
+};
+llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, ReferenceLoc R);
+
----------------
ilya-biryukov wrote:
> kadircet wrote:
> > Is this for testing purposes? maybe move it into `findtargettests.cpp` or 
> > make it a member helper like `Print(SourceManager&)` so that it can also 
> > print locations etc.?
> Yes, this is for output in the test. Moving to `findTargetTests.cpp`, we risk 
> ODR violations in the future.
> In any case, it's useful to have debug output and `operator<<` is common for 
> that purpose: it enables `llvm::toString` and, consecutively, 
> `llvm::formatv("{0}", R)`.
> 
> What are the downsides of having it?
> 
I wasn't happy about it because it actually needs a `SourceManager` to print 
completely, and I believe that's also necessary for debugging.

But feel free to ignore if you're OK with that.


================
Comment at: clang-tools-extra/clangd/unittests/FindTargetTests.cpp:498
+    std::string AnnotatedCode;
+    unsigned NextOffset = 0;
+    for (unsigned I = 0; I < Refs.size(); ++I) {
----------------
ilya-biryukov wrote:
> kadircet wrote:
> > this sounds more like `LastOffset` or `PrevOffset`
> That's the next character in `Code` we need to process, renamed to 
> `NextCodeChar` to specifically mention what string we're referring to.
well, this looked more like "beginning of the last token we processed" to me. 
but now I see your point of view as well. Feel free to use whichever you want.


================
Comment at: clang-tools-extra/clangd/unittests/FindTargetTests.cpp:600
+           "5: targets = {a::b::S}\n"
+           "6: targets = {a::b::S::type}, qualifier = 'struct S::'\n"},
+          // Simple templates.
----------------
ilya-biryukov wrote:
> kadircet wrote:
> > Is it OK for this case to be different than `X::a` above?
> > 
> > also shouldn't this be `a::b::struct S` or `None` ?(my preference would be 
> > towards None)
> Qualifier captures exactly what's written in the source code, so it seems 
> correct: `S::` is what written down.
> `struct` comes from the printing function in clang and I don't think it's 
> worth changing. I believe this comes from the fact that qualifier is a type 
> in this case.
> 
> Why would the qualifier be `None`? Maybe the purpose of this field is unclear?
ah sorry, I missed the fact that this was written as `S::type` in the code, now 
it makes sense. just ignore this one.


================
Comment at: clang-tools-extra/clangd/unittests/FindTargetTests.cpp:638
+           "0: targets = {y}\n"
+           "1: targets = {Y::foo}\n"},
+      };
----------------
ilya-biryukov wrote:
> kadircet wrote:
> > again qualifiers seems to be inconsistent with the rest of the cases.
> There are no qualifiers written in the source code in any of the two 
> references, therefore both qualifiers are empty.
> Again, please let me know if the purpose of `Qualifier` is unclear. Happy to 
> comment or change to make its purpose clear.
> 
yeah it totally makes sense now, the problem started with me missing the `S::` 
in the previous example :D, nvm..


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D67826/new/

https://reviews.llvm.org/D67826



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to