@@ -493,6 +493,27 @@ class RequirementSignatureRequestRQM :
493493 bool isCached () const { return true ; }
494494};
495495
496+ // / Compute a protocol's requirement signature using the GenericSignatureBuilder.
497+ // / This is temporary; once the GenericSignatureBuilder goes away this will
498+ // / be removed.
499+ class RequirementSignatureRequestGSB :
500+ public SimpleRequest<RequirementSignatureRequestGSB,
501+ RequirementSignature (ProtocolDecl *),
502+ RequestFlags::Cached> {
503+ public:
504+ using SimpleRequest::SimpleRequest;
505+
506+ private:
507+ friend SimpleRequest;
508+
509+ // Evaluation.
510+ RequirementSignature
511+ evaluate (Evaluator &evaluator, ProtocolDecl *proto) const ;
512+
513+ public:
514+ bool isCached () const { return true ; }
515+ };
516+
496517// / Compute the requirements that describe a protocol.
497518class RequirementSignatureRequest :
498519 public SimpleRequest<RequirementSignatureRequest,
@@ -1793,6 +1814,37 @@ class AbstractGenericSignatureRequestRQM :
17931814 }
17941815};
17951816
1817+ // / Build a generic signature using the GenericSignatureBuilder. This is temporary;
1818+ // / once the GenericSignatureBuilder goes away this will be removed.
1819+ class AbstractGenericSignatureRequestGSB :
1820+ public SimpleRequest<AbstractGenericSignatureRequestGSB,
1821+ GenericSignatureWithError (const GenericSignatureImpl *,
1822+ SmallVector<GenericTypeParamType *, 2 >,
1823+ SmallVector<Requirement, 2 >),
1824+ RequestFlags::Cached> {
1825+ public:
1826+ using SimpleRequest::SimpleRequest;
1827+
1828+ private:
1829+ friend SimpleRequest;
1830+
1831+ // Evaluation.
1832+ GenericSignatureWithError
1833+ evaluate (Evaluator &evaluator,
1834+ const GenericSignatureImpl *baseSignature,
1835+ SmallVector<GenericTypeParamType *, 2 > addedParameters,
1836+ SmallVector<Requirement, 2 > addedRequirements) const ;
1837+
1838+ public:
1839+ // Separate caching.
1840+ bool isCached () const { return true ; }
1841+
1842+ // / Abstract generic signature requests never have source-location info.
1843+ SourceLoc getNearestLoc () const {
1844+ return SourceLoc ();
1845+ }
1846+ };
1847+
17961848class InferredGenericSignatureRequest :
17971849 public SimpleRequest<InferredGenericSignatureRequest,
17981850 GenericSignatureWithError (ModuleDecl *,
@@ -1876,6 +1928,48 @@ class InferredGenericSignatureRequestRQM :
18761928 void noteCycleStep (DiagnosticEngine &diags) const ;
18771929};
18781930
1931+ // / Build a generic signature using the GenericSignatureBuilder. This is temporary;
1932+ // / once the GenericSignatureBuilder goes away this will be removed.
1933+ class InferredGenericSignatureRequestGSB :
1934+ public SimpleRequest<InferredGenericSignatureRequestGSB,
1935+ GenericSignatureWithError (ModuleDecl *,
1936+ const GenericSignatureImpl *,
1937+ GenericParamList *,
1938+ WhereClauseOwner,
1939+ SmallVector<Requirement, 2 >,
1940+ SmallVector<TypeLoc, 2 >,
1941+ bool ),
1942+ RequestFlags::Cached> {
1943+ public:
1944+ using SimpleRequest::SimpleRequest;
1945+
1946+ private:
1947+ friend SimpleRequest;
1948+
1949+ // Evaluation.
1950+ GenericSignatureWithError
1951+ evaluate (Evaluator &evaluator,
1952+ ModuleDecl *parentModule,
1953+ const GenericSignatureImpl *baseSignature,
1954+ GenericParamList *genericParams,
1955+ WhereClauseOwner whereClause,
1956+ SmallVector<Requirement, 2 > addedRequirements,
1957+ SmallVector<TypeLoc, 2 > inferenceSources,
1958+ bool allowConcreteGenericParams) const ;
1959+
1960+ public:
1961+ // Separate caching.
1962+ bool isCached () const { return true ; }
1963+
1964+ // / Inferred generic signature requests don't have source-location info.
1965+ SourceLoc getNearestLoc () const {
1966+ return SourceLoc ();
1967+ }
1968+
1969+ // Cycle handling.
1970+ void noteCycleStep (DiagnosticEngine &diags) const ;
1971+ };
1972+
18791973void simple_display (llvm::raw_ostream &out, const TypeLoc source);
18801974
18811975class ExtendedTypeRequest
0 commit comments