@@ -4251,12 +4251,29 @@ GetDestructorRequest::evaluate(Evaluator &evaluator, ClassDecl *CD) const {
42514251}
42524252
42534253bool ClassDecl::isDefaultActor () const {
4254+ return isDefaultActor (getModuleContext (), ResilienceExpansion::Minimal);
4255+ }
4256+
4257+ bool ClassDecl::isDefaultActor (ModuleDecl *M,
4258+ ResilienceExpansion expansion) const {
42544259 auto mutableThis = const_cast <ClassDecl *>(this );
42554260 return evaluateOrDefault (getASTContext ().evaluator ,
4256- IsDefaultActorRequest{mutableThis},
4261+ IsDefaultActorRequest{mutableThis, M,
4262+ expansion},
42574263 false );
42584264}
42594265
4266+ const ClassDecl *ClassDecl::getRootActorClass () const {
4267+ if (!isActor ()) return nullptr ;
4268+ auto cur = this ;
4269+ while (true ) {
4270+ auto super = cur->getSuperclassDecl ();
4271+ if (!super || !super->isActor ())
4272+ return cur;
4273+ cur = super;
4274+ }
4275+ }
4276+
42604277bool ClassDecl::hasMissingDesignatedInitializers () const {
42614278 return evaluateOrDefault (
42624279 getASTContext ().evaluator ,
@@ -8056,7 +8073,12 @@ bool ClassDecl::hasExplicitCustomActorMethods() const {
80568073}
80578074
80588075bool ClassDecl::isRootDefaultActor () const {
8059- if (!isDefaultActor ()) return false ;
8076+ return isRootDefaultActor (getModuleContext (), ResilienceExpansion::Minimal);
8077+ }
8078+
8079+ bool ClassDecl::isRootDefaultActor (ModuleDecl *M,
8080+ ResilienceExpansion expansion) const {
8081+ if (!isDefaultActor (M, expansion)) return false ;
80608082 auto superclass = getSuperclassDecl ();
80618083 return (!superclass || superclass->isNSObject ());
80628084}
0 commit comments