njames93 marked an inline comment as done.
njames93 added inline comments.

================
Comment at: clang-tools-extra/clangd/SourceCode.cpp:555
+    auto Insert = Lexer::getSourceText(FixIt.InsertFromRange, M, L, &Invalid);
+    if (!Invalid)
+      Result.newText = Insert.str();
----------------
kadircet wrote:
> njames93 wrote:
> > kadircet wrote:
> > > it feels like correct semantics would be to make this function fail now. 
> > > as the resulting value will likely be used for editing the source code 
> > > and we don't want to propagate some garbage.
> > While I agree with this in principal. We currently don't handle the case 
> > where RemoveRange doesn't correspond to a FileCharRange which would likely 
> > need propagating. Though likely in a separate patch. 
> i discussed the situation with sam offline (as you've also noticed most of 
> the sourcelocation -> lsp conversations within this file doesn't really check 
> for errors), and it looks like this was intentional. we are trying to cover 
> as much ground as possible in diagnostics.cpp, especially in 
> https://github.com/llvm/llvm-project/blob/main/clang-tools-extra/clangd/Diagnostics.cpp#L677.
>  we should do the same for `InsertFromRange`. all the macroarg logic isn't 
> necessary (until we notice it is), so just bailing out when the 
> `InsertFromRange` is a macroid or outside mainfile in `AddFix` should be 
> enough.
> 
> as for testing it, looks like you can invoke a fixit with `InsertFromRange` 
> via:
> ```
> struct Foo {};
> struct Bar : public [[noreturn]] Foo {};
> ```
> 
> it would be nice to also check with an attribute coming from a macro 
> expansions.
Can you elaborate on why we should disregard `InsertFromRange` if it points 
outside the main file. That seems like an unnecessary restriction. It's 
probably also safe if its a macro ID, though there's more likely to be some 
edge case there.

As for the diagnostic. I don't think there's any value testing that. The test 
in `SourceCodeTests` covers inserting from range pretty well. It would be nice 
to test the synthetic messages, but I don't think any diagnostic in 
clang/clang-tidy contains just 1 fix-it that's an InsertFromRange.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D97123

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

Reply via email to