[clang] Add Clang attribute to ensure that fields are initialized explicitly (PR #102040)

Ilya Biryukov via cfe-commits cfe-commits at lists.llvm.org
Fri Sep 13 05:15:33 PDT 2024


================
@@ -743,6 +743,12 @@ void InitListChecker::FillInEmptyInitForField(unsigned Init, FieldDecl *Field,
         ILE->updateInit(SemaRef.Context, Init, Filler);
       return;
     }
+
+    if (Field->hasAttr<ExplicitInitAttr>()) {
+      SemaRef.Diag(ILE->getExprLoc(), diag::warn_field_requires_explicit_init)
+          << Field;
----------------
ilya-biryukov wrote:

Maybe we could also add the `note_entity_declared_at` pointing at field's location?

It will mostly be redundant, but can sometimes really come in handy if the field names happen to clash with base classes, e.g. https://gcc.godbolt.org/z/Pzx9PE3Mh

However, this also adds noise.


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


More information about the cfe-commits mailing list