[PATCH] D106431: [clang-tidy] Fix cppcoreguidelines-init-variables with enum judgement

Whisperity via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Jul 22 06:12:55 PDT 2021


whisperity added a comment.

The problem with enums is that translating //zero// (0, 0.0, nullptr, etc...) to the enum case is not always apparent. A warning **should** always be given. And //if// you can find a zero member in the enum, we can report an automated suggestion for that.

To give an example

  enum class BaseColour { BLACK, RED, GREEN, BLUE, WHITE };

`BLACK` is the `0`, so we can fix-it. If the `0` is the first member (usually in enums that have a well-defined "default" or "None" case...), then, it is alright to use that as the automated fix.

However, if there isn't a "zero case" in the enum, for example:

  enum class Something {
    FOO = -2,
    BAR, // This will be -1
    BAZ = 84,
    QUX  // This will be 85
  };

then simply using the first member might not be the best fitting action, so in such case, I would opt for //no FixIt//. But, obviously, yes for giving a warning.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D106431



More information about the cfe-commits mailing list