Sockke added a comment.

Any thoughts? : )



================
Comment at: 
clang-tools-extra/test/clang-tidy/checkers/performance-move-const-arg.cpp:263
+  forwardToShowInt(std::move(a));
+  // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: std::move of the variable 'a' 
of the trivially-copyable type 'int' has no effect; consider changing 
forwardToShowInt's parameter from 'int'&& to 'int'&
+}
----------------
Quuxplusone wrote:
> `forwardToShowInt` takes `T&&`, not `int&&`, and so it can't be changed in 
> the way the diagnostic is suggesting. I think the right answer here is not to 
> emit the diagnostic at all, when the offending function is a template.
> 
> (Relatively minor nits, all moot because this diagnostic should not be 
> emitted at all: `'int'&&` should be `'int&&'`, `trivially copyable` should 
> not be hyphenated, and `int&` is a strictly worse suggestion than either 
> `const int&` or plain `int`.  IMVHO it would be reasonable to land a very 
> trivial patch to remove the hyphen from `trivially copyable` and update the 
> tests, and then rebase this PR on top of that.)
Keep the original diagnostic behavior, but without "remove std::move" message.


================
Comment at: 
clang-tools-extra/test/clang-tidy/checkers/performance-move-const-arg.cpp:263
+  forwardToShowInt(std::move(a));
+  // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: std::move of the variable 'a' 
of the trivially-copyable type 'int' has no effect; consider changing 
forwardToShowInt's parameter from 'int'&& to 'int'&
+}
----------------
Quuxplusone wrote:
> Sockke wrote:
> > Quuxplusone wrote:
> > > `forwardToShowInt` takes `T&&`, not `int&&`, and so it can't be changed 
> > > in the way the diagnostic is suggesting. I think the right answer here is 
> > > not to emit the diagnostic at all, when the offending function is a 
> > > template.
> > > 
> > > (Relatively minor nits, all moot because this diagnostic should not be 
> > > emitted at all: `'int'&&` should be `'int&&'`, `trivially copyable` 
> > > should not be hyphenated, and `int&` is a strictly worse suggestion than 
> > > either `const int&` or plain `int`.  IMVHO it would be reasonable to land 
> > > a very trivial patch to remove the hyphen from `trivially copyable` and 
> > > update the tests, and then rebase this PR on top of that.)
> > Keep the original diagnostic behavior, but without "remove std::move" 
> > message.
> Okay, I have no //complaints// about the diagnostics being tested by these 
> tests anymore.
> I am //puzzled// about why the tool is suggesting to rewrite `int&&` as 
> `int`, but not suggesting to rewrite `Tmp&&` as `Tmp`; those cases should be 
> exactly isomorphic, right?
> But the goal of this PR is now to //eliminate wrong fixits//, and I believe 
> you've succeeded at that.
> Btw, I'm not qualified to review the actual code change in 
> `MoveConstArgCheck.cpp`; I'll let someone else do that.
Thank you for your reply! Yes, they should be exactly isomorphic when Tmp is a 
trivially copyable type.


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

https://reviews.llvm.org/D107450

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

Reply via email to