@@ -493,6 +493,27 @@ class RequirementSignatureRequestRQM :
493
493
bool isCached () const { return true ; }
494
494
};
495
495
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
+
496
517
// / Compute the requirements that describe a protocol.
497
518
class RequirementSignatureRequest :
498
519
public SimpleRequest<RequirementSignatureRequest,
@@ -1793,6 +1814,37 @@ class AbstractGenericSignatureRequestRQM :
1793
1814
}
1794
1815
};
1795
1816
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
+
1796
1848
class InferredGenericSignatureRequest :
1797
1849
public SimpleRequest<InferredGenericSignatureRequest,
1798
1850
GenericSignatureWithError (ModuleDecl *,
@@ -1876,6 +1928,48 @@ class InferredGenericSignatureRequestRQM :
1876
1928
void noteCycleStep (DiagnosticEngine &diags) const ;
1877
1929
};
1878
1930
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
+
1879
1973
void simple_display (llvm::raw_ostream &out, const TypeLoc source);
1880
1974
1881
1975
class ExtendedTypeRequest
0 commit comments