[clang-tools-extra] [clang-tidy] Add support for in-class initializers in readability-redundant-member-init (PR #77206)

Piotr Zegar via cfe-commits cfe-commits at lists.llvm.org
Sun Jan 14 04:02:50 PST 2024


================
@@ -18,52 +19,80 @@ using namespace clang::tidy::matchers;
 
 namespace clang::tidy::readability {
 
+static SourceRange
+getFullInitRangeInclWhitespaces(SourceRange Range, const SourceManager &SM,
+                                const LangOptions &LangOpts) {
+  const Token PrevToken =
+      utils::lexer::getPreviousToken(Range.getBegin(), SM, LangOpts, false);
+  if (PrevToken.is(tok::unknown))
+    return Range;
+
+  if (PrevToken.isNot(tok::equal))
+    return {PrevToken.getEndLoc(), Range.getEnd()};
----------------
PiotrZSL wrote:

No it would look ugly:
```
if (PrevToken.is(tok::unknown) || PrevToken.isNot(tok::equal))
   return {(PrevToken.is(tok::unknown) ? Range.getBegin() : PrevToken.getEndLoc()), Range.getEnd()};
```

It would require duplicating an condition. and those 2 conditions are not +- same.
First one is: we get invalid token, then let just return what we can (error case), second we found something else than =, so lets get that range.

https://github.com/llvm/llvm-project/pull/77206


More information about the cfe-commits mailing list