@@ -1411,11 +1411,17 @@ class ClassAncestryFlagsRequest :
14111411
14121412void simple_display (llvm::raw_ostream &out, AncestryFlags value);
14131413
1414+ // / AbstractGenericSignatureRequest and InferredGenericSignatureRequest
1415+ // / return this type, which stores a GenericSignature together with a bit
1416+ // / indicating if there were any errors detected in the original
1417+ // / requirements.
1418+ using GenericSignatureWithError = llvm::PointerIntPair<GenericSignature, 1 >;
1419+
14141420class AbstractGenericSignatureRequest :
14151421 public SimpleRequest<AbstractGenericSignatureRequest,
1416- GenericSignature (const GenericSignatureImpl *,
1417- SmallVector<GenericTypeParamType *, 2 >,
1418- SmallVector<Requirement, 2 >),
1422+ GenericSignatureWithError (const GenericSignatureImpl *,
1423+ SmallVector<GenericTypeParamType *, 2 >,
1424+ SmallVector<Requirement, 2 >),
14191425 RequestFlags::Cached> {
14201426public:
14211427 using SimpleRequest::SimpleRequest;
@@ -1424,7 +1430,7 @@ class AbstractGenericSignatureRequest :
14241430 friend SimpleRequest;
14251431
14261432 // Evaluation.
1427- GenericSignature
1433+ GenericSignatureWithError
14281434 evaluate (Evaluator &evaluator,
14291435 const GenericSignatureImpl *baseSignature,
14301436 SmallVector<GenericTypeParamType *, 2 > addedParameters,
@@ -1442,13 +1448,13 @@ class AbstractGenericSignatureRequest :
14421448
14431449class InferredGenericSignatureRequest :
14441450 public SimpleRequest<InferredGenericSignatureRequest,
1445- GenericSignature (ModuleDecl *,
1446- const GenericSignatureImpl *,
1447- GenericParamList *,
1448- WhereClauseOwner,
1449- SmallVector<Requirement, 2 >,
1450- SmallVector<TypeLoc, 2 >,
1451- bool ),
1451+ GenericSignatureWithError (ModuleDecl *,
1452+ const GenericSignatureImpl *,
1453+ GenericParamList *,
1454+ WhereClauseOwner,
1455+ SmallVector<Requirement, 2 >,
1456+ SmallVector<TypeLoc, 2 >,
1457+ bool ),
14521458 RequestFlags::Cached> {
14531459public:
14541460 using SimpleRequest::SimpleRequest;
@@ -1457,7 +1463,7 @@ class InferredGenericSignatureRequest :
14571463 friend SimpleRequest;
14581464
14591465 // Evaluation.
1460- GenericSignature
1466+ GenericSignatureWithError
14611467 evaluate (Evaluator &evaluator,
14621468 ModuleDecl *parentModule,
14631469 const GenericSignatureImpl *baseSignature,
0 commit comments