[Sema] Factor out InitializablePropertiesRequest

This serves as the backing request for both InitAccessorPropertiesRequest
and MemberwiseInitPropertiesRequest, ensuring the former does not
care about the init accessor is included in the memberwise initializer.
This commit is contained in:
Hamish Knight
2025-11-13 11:54:26 +00:00
parent 302e803b2f
commit 17af03d622
3 changed files with 71 additions and 23 deletions

View File

@@ -1949,6 +1949,25 @@ public:
bool isCached() const { return true; }
};
/// Request to obtain a list of properties that can be initalized.
class InitializablePropertiesRequest
: public SimpleRequest<InitializablePropertiesRequest,
ArrayRef<VarDecl *>(NominalTypeDecl *),
RequestFlags::Cached> {
public:
using SimpleRequest::SimpleRequest;
private:
friend SimpleRequest;
// Evaluation.
ArrayRef<VarDecl *> evaluate(Evaluator &evaluator,
NominalTypeDecl *decl) const;
public:
bool isCached() const { return true; }
};
/// Request to obtain a list of computed properties with init accesors
/// in the given nominal type.
class InitAccessorPropertiesRequest :

View File

@@ -336,6 +336,8 @@ SWIFT_REQUEST(TypeChecker, StoredPropertiesAndMissingMembersRequest,
ArrayRef<Decl *>(NominalTypeDecl *), Cached, NoLocationInfo)
SWIFT_REQUEST(TypeChecker, StoredPropertiesRequest,
ArrayRef<VarDecl *>(NominalTypeDecl *), Cached, NoLocationInfo)
SWIFT_REQUEST(TypeChecker, InitializablePropertiesRequest,
ArrayRef<VarDecl *>(NominalTypeDecl *), Cached, NoLocationInfo)
SWIFT_REQUEST(TypeChecker, InitAccessorPropertiesRequest,
ArrayRef<VarDecl *>(NominalTypeDecl *),
Cached, NoLocationInfo)