PiotrZSL added a comment.

Consider extending this check to suport also std::ends, maybe name it 
performance-avoid-endl-ends.



================
Comment at: clang-tools-extra/clang-tidy/performance/DontUseEndlCheck.cpp:26
+          callee(cxxMethodDecl(ofClass(
+              hasAnyName("::std::basic_ostream", "::std::basic_iostream")))),
+          hasDescendant(
----------------
unnecessary limit... (in my project we use custom stream class for logging).
```
  Finder->addMatcher(cxxOperatorCallExpr(unless(isExpansionInSystemHeader()),
                                         hasOverloadedOperatorName("<<"),
                                         unless(isMacroExpansion()),
                                         
hasRHS(ignoringImplicit(declRefExpr(to(namedDecl(hasAnyName("endl", 
"ends")).bind("decl"))).bind("expr")))
```

something like this should be sufficient...
If you do not plan to remove restriction for basic_ostream, make it 
configurable.

And other problem is that some << operators does not need to be methods, they 
can be functions, in such case you may run into issues, but you could just read 
of type from expr... instead processing argument, or class.

Like ```cxxOperatorCallExpr(hasType(references(cxxRecordDecl(....```


================
Comment at: clang-tools-extra/clang-tidy/performance/DontUseEndlCheck.cpp:44
+  Diag << FixItHint::CreateReplacement(
+      CharSourceRange::getCharRange(EndlCall->getSourceRange()), "'\\n'");
+}
----------------
AMS21 wrote:
> This doesn't quite work and I'm not sure why or what would work. Any help 
> would be appreciated.
> 
> Report for this like
> ```cpp
> std::cout << std::endl;
> ```
> looks like this:
> ```
>   std::cout << std::endl;
>                ^~~~~
>                '\n'
> ```
> 
> So the start location is correct but the end is not.
Use getTokenRange


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D148318

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

Reply via email to