ymandel added inline comments.

================
Comment at: clang-tidy/readability/ConstValueReturnCheck.cpp:25
+
+// Finds the location of the relevant "const" token in `Def`.
+llvm::Optional<SourceLocation> findConstToRemove(
----------------
JonasToth wrote:
> ymandel wrote:
> > JonasToth wrote:
> > > s/"const"/`const`
> > here and throughout.  All comments mention const without quotes.
> I meant that you use the  \` thingie to mark const :)
> Its better to mark language constructs in the comments as well for better 
> clarity whats meant. Comments need to be full sentences and super clear, 
> otherwise the comment does more harm then helping :)
> I meant that you use the \` thingie to mark const :)
Ah. :)  Done now for real.

> Its better to mark language constructs in the comments as well for better 
> clarity whats meant. Comments need to be full sentences and super clear, 
> otherwise the comment does more harm then helping :)

Is there a specific issue w/ this comment, or are you remarking in general?  
I've rewritten with the goal or better clarity, but wasn't sure of your intent 
wrt full sentences.  




================
Comment at: clang-tidy/readability/ConstValueReturnCheck.cpp:79
+       Decl = Decl->getPreviousDecl()) {
+    if (const llvm::Optional<SourceLocation> PrevLoc =
+            findConstToRemove(Decl, Result)) {
----------------
JonasToth wrote:
> ymandel wrote:
> > JonasToth wrote:
> > > The `const` is not common in llvm-code. Please use it only for references 
> > > and pointers.
> > > 
> > > What do you think about emitting a `note` if this transformation can not 
> > > be done? It is relevant for the user as he might need to do manual 
> > > fix-up. It would complicate the code as there can only be one(?) 
> > > diagnostic at the same time (90% sure only tbh).
> > Not the most elegant, but I don't see any other way to display multiple 
> > diagnoses. Let me know what you think.
> What do you want to achieve? I think you just want to append the `FixItHint` 
> do you?
> 
> you can do this with saving the diagnostic object in a variable.
> 
> ```
> auto Diag = diag(Loc, "Warning Message");
> 
> // Foo
> 
> if (HaveFix)
>     Diag << FixItHint::CreateRemove();
> ```
> 
> When `Diag` goes out of scope the diagnostic is actually issued, calling just 
> `diag` produces a temporary that gets immediately destroyed. 
I was responding to your original suggestion to emit a `note` if the 
transformation can not be done; I changed the code to allow multiple 
diagnostics via scoping, but found it less than elegant.


================
Comment at: clang-tidy/readability/ConstValueReturnCheck.cpp:93
+        Diagnostics << FixItHint::CreateRemoval(
+            CharSourceRange::getTokenRange(*PrevLoc, *PrevLoc));
+      } else {
----------------
JonasToth wrote:
> Twice `*PrevLoc`?
Is there a better alternative? I thought that, since token ranges closed on 
both ends,  this constructs a SourceRange that spans the single token at 
PrevLoc.  Instead, I could rework `getConstTokLocations` to return the actual 
tokens instead, and then create CharSourceRanges from Tok.getLocation(), 
Tok.getLastLocation().


================
Comment at: clang-tidy/readability/ConstValueReturnCheck.cpp:95
+      } else {
+        UnfixabledDecls.emplace_back(
+            Decl->getInnerLocStart(),
----------------
JonasToth wrote:
> Did you consider `diag(Loc, "could not transform this declaration", 
> DiagnosticIDs::Note)` which emits a `note` instead of `warning`.
> You dont need to store these in between.
Yes, not sure what I was thinking there (storing the same string repeatedly).  
Done, thanks.


================
Comment at: test/clang-tidy/Inputs/readability-const-value-return/macro-def.h:1
+#ifndef MACRO_DEF_H
+#define MACRO_DEF_H
----------------
JonasToth wrote:
> ymandel wrote:
> > JonasToth wrote:
> > > You can define these macros directly in the test-case, or do you intend 
> > > something special? Self-contained tests are prefered.
> > I added a comment explaining. Does that justify its existence? If not, I'm 
> > fine getting rid of this header.
> This test is not necessary. If that would not work, the unit tests for the 
> frontend need to fail. The inclusions and everything are assumed to be 
> correctly done. clang-tidy itself only works on the translation units 
> (meaning the .cpp file and all included headers in one blob). You can remove 
> this test safely.
Sure.  Will do.  Just to explain a bit: my concern was whether my code properly 
recognizes that the source location at the macro use comes from a macro and I 
thought that the cross-file case might be reflected differently in source locs 
than the in-file case.  But, now that I think about it, I can't see any 
interesting difference.


================
Comment at: test/clang-tidy/readability-const-value-return.cpp:53
+  const Strukt* const p7();
+  // CHECK-FIXES: const Strukt* p7();
+
----------------
JonasToth wrote:
> ymandel wrote:
> > JonasToth wrote:
> > > Missing warning?
> > No, but this is subtle, so added a comment.
> I was searching for it, but i overlooked the definition obviously! Do you 
> have a test-case where the definition in not part of the translation unit?
> 
> One could split the implementation of a class into mutliple .cpp files and 
> then link them together.
> For such a case it might be reasonable to not emit the warning for the 
> declaration as there needs to be a definition in the project somewhere. And 
> not emitting the warning removes noise from third party libraries that are 
> just used where only the headers are included.
Yes, `n14`, below (https://reviews.llvm.org/D53025?id=169290 line 183). I also 
added a comment there explaining its purpose.

Sorry, I don't follow.  Currently, we *don't* warn on declarations unless a) 
the definition is in the TU and b) something gets in the way of removing the 
`const`.  So, in the situation you're describing (multiple .cpp files), the 
declaration will be ignored.  Are you explaining why you *agree* with current 
behavior or are you suggesting a change?


Repository:
  rCTE Clang Tools Extra

https://reviews.llvm.org/D53025



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

Reply via email to