carlosgalvezp added inline comments.

================
Comment at: clang-tools-extra/clang-tidy/bugprone/EnumToIntCheck.cpp:31
+  const auto *MatchedExpr = Result.Nodes.getNodeAs<Expr>("x");
+  diag(MatchedExpr->getBeginLoc(), "enum is implictly converted to an 
integral")
+      << MatchedExpr->getSourceRange();
----------------
Check that this pointer is not nullptr, before dereferencing it. Typically we 
do it like this in all other checks:

  if (const auto* MatchedExpr = Result.Nodes.getNodeAs<Expr>("x")) {
    ...
  }

If you don't like the extra nesting you can return early.

  if (!MatchedExpr)
    return;  


================
Comment at: clang-tools-extra/clang-tidy/bugprone/EnumToIntCheck.cpp:34
+  auto Note = diag(MatchedExpr->getBeginLoc(),
+                   "insert an explicit cast to silence this warning",
+                   DiagnosticIDs::Note);
----------------
I think this text is redundant given the fix-it note. Also, I find "silence 
this warning" a bit confusing, since in order to do that one would use 
`NOLINT`. By adding the cast one is not just "silencing the warning", one is 
fixing the code to be explicit.


================
Comment at: clang-tools-extra/clang-tidy/bugprone/EnumToIntCheck.cpp:45
+  } else {
+    Note << FixItHint::CreateInsertion(MatchedExpr->getBeginLoc(), "(int)");
+  }
----------------
I don't think we can assume the type of the enum is `int`, see for example:

```
enum Foo : unsigned int
{
    a,
    b
};


void f(unsigned int);

int main()
{
    f(a);
}

```

Even if there is no explicit underlying type, isn't the underlying type 
implementation-defined?


================
Comment at: 
clang-tools-extra/test/clang-tidy/checkers/bugprone/enum-to-int.cpp:1
+// RUN: %check_clang_tidy -std=c++11-or-later --fix-notes %s 
bugprone-enum-to-int %t
+
----------------
Please add a test using an enum with fixed underlying type that is not "int".


================
Comment at: 
clang-tools-extra/test/clang-tidy/checkers/bugprone/enum-to-int.cpp:3
+
+enum A { e1,
+         e2 };
----------------
carlosgalvezp wrote:
> Please use a consistent style
> 
>   enum A {
>     e1,
>     e2,
>   };
Please add a test to verify the C-style cast fix.


================
Comment at: 
clang-tools-extra/test/clang-tidy/checkers/bugprone/enum-to-int.cpp:3-4
+
+enum A { e1,
+         e2 };
+
----------------
Please use a consistent style

  enum A {
    e1,
    e2,
  };


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D129570

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

Reply via email to