@@ -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,
@@ -1726,12 +1747,6 @@ class ClassAncestryFlagsRequest :
17261747
17271748void simple_display (llvm::raw_ostream &out, AncestryFlags value);
17281749
1729- // / AbstractGenericSignatureRequest and InferredGenericSignatureRequest
1730- // / return this type, which stores a GenericSignature together with a bit
1731- // / indicating if there were any errors detected in the original
1732- // / requirements.
1733- using GenericSignatureWithError = llvm::PointerIntPair<GenericSignature, 1 >;
1734-
17351750class AbstractGenericSignatureRequest :
17361751 public SimpleRequest<AbstractGenericSignatureRequest,
17371752 GenericSignatureWithError (const GenericSignatureImpl *,
@@ -1793,6 +1808,37 @@ class AbstractGenericSignatureRequestRQM :
17931808 }
17941809};
17951810
1811+ // / Build a generic signature using the GenericSignatureBuilder. This is temporary;
1812+ // / once the GenericSignatureBuilder goes away this will be removed.
1813+ class AbstractGenericSignatureRequestGSB :
1814+ public SimpleRequest<AbstractGenericSignatureRequestGSB,
1815+ GenericSignatureWithError (const GenericSignatureImpl *,
1816+ SmallVector<GenericTypeParamType *, 2 >,
1817+ SmallVector<Requirement, 2 >),
1818+ RequestFlags::Cached> {
1819+ public:
1820+ using SimpleRequest::SimpleRequest;
1821+
1822+ private:
1823+ friend SimpleRequest;
1824+
1825+ // Evaluation.
1826+ GenericSignatureWithError
1827+ evaluate (Evaluator &evaluator,
1828+ const GenericSignatureImpl *baseSignature,
1829+ SmallVector<GenericTypeParamType *, 2 > addedParameters,
1830+ SmallVector<Requirement, 2 > addedRequirements) const ;
1831+
1832+ public:
1833+ // Separate caching.
1834+ bool isCached () const { return true ; }
1835+
1836+ // / Abstract generic signature requests never have source-location info.
1837+ SourceLoc getNearestLoc () const {
1838+ return SourceLoc ();
1839+ }
1840+ };
1841+
17961842class InferredGenericSignatureRequest :
17971843 public SimpleRequest<InferredGenericSignatureRequest,
17981844 GenericSignatureWithError (ModuleDecl *,
@@ -1876,6 +1922,48 @@ class InferredGenericSignatureRequestRQM :
18761922 void noteCycleStep (DiagnosticEngine &diags) const ;
18771923};
18781924
1925+ // / Build a generic signature using the GenericSignatureBuilder. This is temporary;
1926+ // / once the GenericSignatureBuilder goes away this will be removed.
1927+ class InferredGenericSignatureRequestGSB :
1928+ public SimpleRequest<InferredGenericSignatureRequestGSB,
1929+ GenericSignatureWithError (ModuleDecl *,
1930+ const GenericSignatureImpl *,
1931+ GenericParamList *,
1932+ WhereClauseOwner,
1933+ SmallVector<Requirement, 2 >,
1934+ SmallVector<TypeLoc, 2 >,
1935+ bool ),
1936+ RequestFlags::Cached> {
1937+ public:
1938+ using SimpleRequest::SimpleRequest;
1939+
1940+ private:
1941+ friend SimpleRequest;
1942+
1943+ // Evaluation.
1944+ GenericSignatureWithError
1945+ evaluate (Evaluator &evaluator,
1946+ ModuleDecl *parentModule,
1947+ const GenericSignatureImpl *baseSignature,
1948+ GenericParamList *genericParams,
1949+ WhereClauseOwner whereClause,
1950+ SmallVector<Requirement, 2 > addedRequirements,
1951+ SmallVector<TypeLoc, 2 > inferenceSources,
1952+ bool allowConcreteGenericParams) const ;
1953+
1954+ public:
1955+ // Separate caching.
1956+ bool isCached () const { return true ; }
1957+
1958+ // / Inferred generic signature requests don't have source-location info.
1959+ SourceLoc getNearestLoc () const {
1960+ return SourceLoc ();
1961+ }
1962+
1963+ // Cycle handling.
1964+ void noteCycleStep (DiagnosticEngine &diags) const ;
1965+ };
1966+
18791967void simple_display (llvm::raw_ostream &out, const TypeLoc source);
18801968
18811969class ExtendedTypeRequest
0 commit comments