[clang-tools-extra] [clang-tidy] comment braced-init list arguments (PR #180408)
Baranov Victor via cfe-commits
cfe-commits at lists.llvm.org
Sun Mar 15 14:46:57 PDT 2026
================
@@ -199,15 +204,62 @@ static const FunctionDecl *resolveMocks(const FunctionDecl *Func) {
return Func;
}
+namespace {
+
+enum class InitListKind {
+ None,
+ Anonymous,
+ Typed,
+};
+
+} // namespace
+
+static InitListKind getInitListKind(const Expr *Arg) {
+ Arg = Arg->IgnoreImplicit();
+
+ // Peel std::initializer_list wrappers until we reach the underlying
+ // list-initialization expression.
+ while (const auto *StdInit = dyn_cast<CXXStdInitializerListExpr>(Arg))
+ Arg = StdInit->getSubExpr()->IgnoreImplicit();
+
+ if (isa<InitListExpr>(Arg))
+ return InitListKind::Anonymous;
+
+ if (const auto *Ctor = dyn_cast<CXXConstructExpr>(Arg)) {
+ if (!Ctor->isListInitialization())
+ return InitListKind::None;
+ // CXXTemporaryObjectExpr corresponds to explicit Type{...} syntax.
+ if (isa<CXXTemporaryObjectExpr>(Ctor))
+ return InitListKind::Typed;
+ // Other list-initialized constructions (for example '{}') have no
+ // explicit type at the call site.
+ return InitListKind::Anonymous;
+ }
+
+ if (const auto *FuncCast = dyn_cast<CXXFunctionalCastExpr>(Arg)) {
+ if (FuncCast->isListInitialization())
+ return InitListKind::Typed;
+ }
----------------
vbvictor wrote:
```suggestion
if (const auto *FuncCast = dyn_cast<CXXFunctionalCastExpr>(Arg); FuncCast && FuncCast->isListInitialization())
return InitListKind::Typed;
```
https://github.com/llvm/llvm-project/pull/180408
More information about the cfe-commits
mailing list