@@ -1411,11 +1411,17 @@ class ClassAncestryFlagsRequest :
1411
1411
1412
1412
void simple_display (llvm::raw_ostream &out, AncestryFlags value);
1413
1413
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
+
1414
1420
class AbstractGenericSignatureRequest :
1415
1421
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 >),
1419
1425
RequestFlags::Cached> {
1420
1426
public:
1421
1427
using SimpleRequest::SimpleRequest;
@@ -1424,7 +1430,7 @@ class AbstractGenericSignatureRequest :
1424
1430
friend SimpleRequest;
1425
1431
1426
1432
// Evaluation.
1427
- GenericSignature
1433
+ GenericSignatureWithError
1428
1434
evaluate (Evaluator &evaluator,
1429
1435
const GenericSignatureImpl *baseSignature,
1430
1436
SmallVector<GenericTypeParamType *, 2 > addedParameters,
@@ -1442,13 +1448,13 @@ class AbstractGenericSignatureRequest :
1442
1448
1443
1449
class InferredGenericSignatureRequest :
1444
1450
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 ),
1452
1458
RequestFlags::Cached> {
1453
1459
public:
1454
1460
using SimpleRequest::SimpleRequest;
@@ -1457,7 +1463,7 @@ class InferredGenericSignatureRequest :
1457
1463
friend SimpleRequest;
1458
1464
1459
1465
// Evaluation.
1460
- GenericSignature
1466
+ GenericSignatureWithError
1461
1467
evaluate (Evaluator &evaluator,
1462
1468
ModuleDecl *parentModule,
1463
1469
const GenericSignatureImpl *baseSignature,
0 commit comments