hokein added a comment.

In D57739#1384844 <https://reviews.llvm.org/D57739#1384844>, @ilya-biryukov 
wrote:

> Could we move the code to the `Tweak` itself, so that all the callers would 
> get the formatting? I.e.
>
>   class Tweak {
>      Replacements apply() {  // This is now non-virtual.
>        auto Replacements = doApply();
>        return cleanupAndFormat(Replacements);
>      }
>  
>   protected:
>      virtual Replacements doApply() = 0; // inheritors should implement this 
> now. Note: the name is terrible, suggestions are welcome.
>   };
>
>
> This would ensure the callers don't need to deal with the formatting on their 
> own.


This seems introduce intrusive changes to the Tweak interface (Tweak will need 
to know the `FormatStyle` somehow), I think this might be done in another patch.



================
Comment at: clangd/ClangdServer.cpp:366
+  auto Style = getFormatStyle(Code, File);
+  if (!Style)
+    return;
----------------
ilya-biryukov wrote:
> ioeric wrote:
> > hokein wrote:
> > > not sure the err-handling strategy here -- maybe if this is failed, we 
> > > still apply replacements (without formatting), rather than stopping.
> > You should use `getFormatStyleForFile` from SourceCode.h
> > not sure the err-handling strategy here -- maybe if this is failed, we 
> > still apply replacements (without formatting), rather than stopping.
> Returning an error seems fine, this probably shouldn't happen under normal 
> conditions and failing early means we're more likely to find the root-cause 
> of the problem.
> You should use getFormatStyleForFile from SourceCode.h

Thanks for pointing it out! Didn't notice this method. I think we need to cache 
it somehow rather than calling this method every time.

> Returning an error seems fine, this probably shouldn't happen under normal 
> conditions and failing early means we're more likely to find the root-cause 
> of the problem.

I switched to use getFormatStyleForFile, it seems a reasonable API. 


================
Comment at: clangd/ClangdServer.h:267
+  /// slow. Think of a way to cache this.
+  llvm::Expected<format::FormatStyle> getFormatStyle(llvm::StringRef Code,
+                                                     PathRef File);
----------------
ilya-biryukov wrote:
> NIT: could we swap the parameters for consistency with the other functions in 
> this class (i.e. `File` goes first)
removed, not needed any more.


================
Comment at: unittests/clangd/TweakTests.cpp:82
+llvm::Expected<std::string> apply(StringRef ID, llvm::StringRef Input,
+                                  bool Format) {
   Annotations Code(Input);
----------------
ilya-biryukov wrote:
> NIT: remove the parameter, this should be the default.
> At least until we run into the checks that deliberately don't want the 
> formatting
I'm ok to make this change. I tempt to keep it because it would make writing 
test code easier -- if we always format the code, we might spend time on 
figuring out the format diff between `Before` and `After`, which is not worth.


================
Comment at: unittests/clangd/TweakTests.cpp:110
+        Code.code(), *Replacements,
+        clang::format::getGoogleStyle(::clang::format::FormatStyle::LK_Cpp));
+    if (!Replacements)
----------------
ilya-biryukov wrote:
> NIT: maybe prefer LLVM style? To avoid context-switching.
good catch.


Repository:
  rCTE Clang Tools Extra

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

https://reviews.llvm.org/D57739



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

Reply via email to