ymandel added inline comments.

================
Comment at: clang-tools-extra/clang-tidy/bugprone/StringviewNullptrCheck.cpp:75
 
-  auto HandleTemporaryCXXStaticCastExpr = makeRule(
-      cxxStaticCastExpr(
-          hasSourceExpression(StringViewConstructingFromNullExpr)),
-      changeTo(node("null_argument_expr"), cat("\"\"")), construction_warning);
+  auto HandleTemporaryReturnValue = makeRule(
+      returnStmt(
----------------
In these cases, what is special about `return`? I'd guess the AST has various 
implicit nodes inserted, but then might it make  more sense to focus on those 
as the pattern? Or, is the edit different based on the return context? Might be 
worth explaining this more in a comment?


================
Comment at: clang-tools-extra/clang-tidy/bugprone/StringviewNullptrCheck.cpp:77
+      returnStmt(
+          
hasReturnValue(ignoringImpCasts(StringViewConstructingFromNullExpr))),
+      changeTo(node("construct_expr"), cat("{}")), construction_warning);
----------------
Is it possible for this rule to overlap with any of the others, but not at the 
`returnStmt` level? Specifically, might the `ignoringImpCasts` overlap with any 
of the other expression patterns above? I think not, but am not quite sure 
where `cxxTemporaryObjectExpr` can show up. 


================
Comment at: 
clang-tools-extra/test/clang-tidy/checkers/bugprone-stringview-nullptr.cpp:94
+
+// TODO: Handle cases where types, such as Class and Struct below, are
+//       constructed with null arguments.
----------------
CJ-Johnson wrote:
> I attempted to address this TODO but it is quite the rabbit hole. If I just 
> add a basic fallback matcher, `applyFirst(...)` does not have the behavior I 
> desire. It was stomping on other, better fixes.



================
Comment at: 
clang-tools-extra/test/clang-tidy/checkers/bugprone-stringview-nullptr.cpp:94-95
+
+// TODO: Handle cases where types, such as Class and Struct below, are
+//       constructed with null arguments.
+class Class {
----------------
ymandel wrote:
> CJ-Johnson wrote:
> > I attempted to address this TODO but it is quite the rabbit hole. If I just 
> > add a basic fallback matcher, `applyFirst(...)` does not have the behavior 
> > I desire. It was stomping on other, better fixes.
> 
I'm not sure I understand the code you're trying to catch. Is it constructions 
of `Class` and `Struct`? If so, can you show me some example code 
snippets/transformations?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D115121

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

Reply via email to