@@ -1118,9 +1118,8 @@ void CXXRecordDecl::addedMember(Decl *D) {
11181118 } else if (!T.isCXX98PODType (Context))
11191119 data ().PlainOldData = false ;
11201120
1121- if (Field->hasAttr <ExplicitInitAttr>() && !Field->hasInClassInitializer ()) {
1121+ if (Field->hasAttr <ExplicitInitAttr>() && !Field->hasInClassInitializer ())
11221122 setHasUninitializedExplicitInitFields (true );
1123- }
11241123
11251124 if (T->isReferenceType ()) {
11261125 if (!Field->hasInClassInitializer ())
@@ -2202,26 +2201,24 @@ void CXXRecordDecl::completeDefinition(CXXFinalOverriderMap *FinalOverriders) {
22022201 if (isAggregate () && hasUserDeclaredConstructor () &&
22032202 !Context.getLangOpts ().CPlusPlus20 ) {
22042203 // Diagnose any aggregate behavior changes in C++20
2205- for (field_iterator I = field_begin (), E = field_end (); I != E; ++I ) {
2206- if (const auto *attr = I ->getAttr <ExplicitInitAttr>()) {
2204+ for (const FieldDecl *FD : RD-> fields () ) {
2205+ if (const auto *AT = FD ->getAttr <ExplicitInitAttr>())
22072206 Context.getDiagnostics ().Report (
2208- attr ->getLocation (),
2207+ AT ->getLocation (),
22092208 diag::warn_cxx20_compat_requires_explicit_init_non_aggregate)
2210- << attr << Context.getRecordType (this );
2211- }
2209+ << AT << Context.getRecordType (this );
22122210 }
22132211 }
22142212
22152213 if (!isAggregate () && hasUninitializedExplicitInitFields ()) {
22162214 // Diagnose any fields that required explicit initialization in a
22172215 // non-aggregate type. (Note that the fields may not be directly in this
22182216 // type, but in a subobject. In such cases we don't emit diagnoses here.)
2219- for (field_iterator I = field_begin (), E = field_end (); I != E; ++I ) {
2220- if (const auto *attr = I ->getAttr <ExplicitInitAttr>()) {
2221- Context.getDiagnostics ().Report (attr ->getLocation (),
2217+ for (const FieldDecl *FD : RD-> fields () ) {
2218+ if (const auto *AT = FD ->getAttr <ExplicitInitAttr>())
2219+ Context.getDiagnostics ().Report (AT ->getLocation (),
22222220 diag::warn_attribute_needs_aggregate)
2223- << attr << Context.getRecordType (this );
2224- }
2221+ << AT << Context.getRecordType (this );
22252222 }
22262223 setHasUninitializedExplicitInitFields (false );
22272224 }
0 commit comments