@@ -301,8 +301,12 @@ StoredPropertiesAndMissingMembersRequest::evaluate(Evaluator &evaluator,
301301 return decl->getASTContext ().AllocateCopy (results);
302302}
303303
304- // / Determine whether the given variable has an init accessor.
305- static bool hasInitAccessor (VarDecl *var) {
304+ bool HasInitAccessorRequest::evaluate (Evaluator &evaluator,
305+ AbstractStorageDecl *decl) const {
306+ auto *var = dyn_cast<VarDecl>(decl);
307+ if (!var)
308+ return false ;
309+
306310 if (var->getAccessor (AccessorKind::Init))
307311 return true ;
308312
@@ -340,7 +344,7 @@ InitAccessorPropertiesRequest::evaluate(Evaluator &evaluator,
340344 SmallVector<VarDecl *, 4 > results;
341345 for (auto *member : decl->getMembers ()) {
342346 auto *var = dyn_cast<VarDecl>(member);
343- if (!var || var->isStatic () || !hasInitAccessor (var )) {
347+ if (!var || var->isStatic () || !var-> hasInitAccessor ()) {
344348 continue ;
345349 }
346350
@@ -3362,7 +3366,7 @@ static void finishStorageImplInfo(AbstractStorageDecl *storage,
33623366 auto dc = storage->getDeclContext ();
33633367
33643368 if (auto var = dyn_cast<VarDecl>(storage)) {
3365- if (!info.hasStorage ()) {
3369+ if (!info.hasStorage () && !var-> hasInitAccessor () ) {
33663370 if (auto *init = var->getParentExecutableInitializer ()) {
33673371 auto &Diags = var->getASTContext ().Diags ;
33683372 Diags.diagnose (init->getLoc (), diag::getset_init)
0 commit comments