@@ -1802,7 +1802,7 @@ class swift::MultiConformanceChecker {
1802
1802
llvm::SmallVector<ValueDecl*, 16 > UnsatisfiedReqs;
1803
1803
llvm::SmallVector<ConformanceChecker, 4 > AllUsedCheckers;
1804
1804
llvm::SmallVector<NormalProtocolConformance*, 4 > AllConformances;
1805
- llvm::SetVector<MissingWitness> MissingWitnesses;
1805
+ llvm::SetVector<ASTContext:: MissingWitness> MissingWitnesses;
1806
1806
llvm::SmallPtrSet<ValueDecl *, 8 > CoveredMembers;
1807
1807
1808
1808
// / Check one conformance.
@@ -2068,17 +2068,13 @@ checkIndividualConformance(NormalProtocolConformance *conformance,
2068
2068
bool issueFixit) {
2069
2069
PrettyStackTraceConformance trace (" type-checking" , conformance);
2070
2070
2071
- std::vector<MissingWitness> revivedMissingWitnesses;
2071
+ std::vector<ASTContext:: MissingWitness> revivedMissingWitnesses;
2072
2072
switch (conformance->getState ()) {
2073
2073
case ProtocolConformanceState::Incomplete:
2074
2074
if (conformance->isInvalid ()) {
2075
2075
// Revive registered missing witnesses to handle it below.
2076
- if (auto delayed = getASTContext ().takeDelayedMissingWitnesses (
2077
- conformance)) {
2078
- revivedMissingWitnesses = std::move (
2079
- static_cast <DelayedMissingWitnesses *>(
2080
- delayed.get ())->missingWitnesses );
2081
- }
2076
+ revivedMissingWitnesses = getASTContext ().takeDelayedMissingWitnesses (
2077
+ conformance);
2082
2078
2083
2079
// If we have no missing witnesses for this invalid conformance, the
2084
2080
// conformance is invalid for other reasons, so emit diagnosis now.
@@ -2875,7 +2871,7 @@ diagnoseMatch(ModuleDecl *module, NormalProtocolConformance *conformance,
2875
2871
2876
2872
ConformanceChecker::ConformanceChecker (
2877
2873
ASTContext &ctx, NormalProtocolConformance *conformance,
2878
- llvm::SetVector<MissingWitness> &GlobalMissingWitnesses)
2874
+ llvm::SetVector<ASTContext:: MissingWitness> &GlobalMissingWitnesses)
2879
2875
: WitnessChecker(ctx, conformance->getProtocol (), conformance->getType(),
2880
2876
conformance->getDeclContext()),
2881
2877
Conformance(conformance), Loc(conformance->getLoc ()),
@@ -3662,12 +3658,12 @@ printRequirementStub(ValueDecl *Requirement, DeclContext *Adopter,
3662
3658
// / NoStubRequirements.
3663
3659
static void
3664
3660
printProtocolStubFixitString (SourceLoc TypeLoc, ProtocolConformance *Conf,
3665
- ArrayRef<MissingWitness> MissingWitnesses,
3661
+ ArrayRef<ASTContext:: MissingWitness> MissingWitnesses,
3666
3662
std::string &FixitString,
3667
3663
llvm::SetVector<ValueDecl*> &NoStubRequirements) {
3668
3664
llvm::raw_string_ostream FixitStream (FixitString);
3669
3665
std::for_each (MissingWitnesses.begin (), MissingWitnesses.end (),
3670
- [&](const MissingWitness &Missing) {
3666
+ [&](const ASTContext:: MissingWitness &Missing) {
3671
3667
if (!printRequirementStub (
3672
3668
Missing.requirement , Conf->getDeclContext (), Conf->getType (),
3673
3669
TypeLoc, FixitStream)) {
@@ -3679,10 +3675,10 @@ printProtocolStubFixitString(SourceLoc TypeLoc, ProtocolConformance *Conf,
3679
3675
// / Filter the given array of protocol requirements and produce a new vector
3680
3676
// / containing the non-conflicting requirements to be implemented by the given
3681
3677
// / \c Adoptee type.
3682
- static llvm::SmallVector<MissingWitness, 4 >
3678
+ static llvm::SmallVector<ASTContext:: MissingWitness, 4 >
3683
3679
filterProtocolRequirements (
3684
- ArrayRef<MissingWitness> MissingWitnesses, Type Adoptee) {
3685
- llvm::SmallVector<MissingWitness, 4 > Filtered;
3680
+ ArrayRef<ASTContext:: MissingWitness> MissingWitnesses, Type Adoptee) {
3681
+ llvm::SmallVector<ASTContext:: MissingWitness, 4 > Filtered;
3686
3682
if (MissingWitnesses.empty ()) {
3687
3683
return Filtered;
3688
3684
}
@@ -3733,12 +3729,12 @@ filterProtocolRequirements(
3733
3729
3734
3730
// / Prune the set of missing witnesses for the given conformance, eliminating
3735
3731
// / any requirements that do not actually need to satisfied.
3736
- static ArrayRef<MissingWitness> pruneMissingWitnesses (
3732
+ static ArrayRef<ASTContext:: MissingWitness> pruneMissingWitnesses (
3737
3733
ConformanceChecker &checker,
3738
3734
ProtocolDecl *proto,
3739
3735
NormalProtocolConformance *conformance,
3740
- ArrayRef<MissingWitness> missingWitnesses,
3741
- SmallVectorImpl<MissingWitness> &scratch) {
3736
+ ArrayRef<ASTContext:: MissingWitness> missingWitnesses,
3737
+ SmallVectorImpl<ASTContext:: MissingWitness> &scratch) {
3742
3738
if (missingWitnesses.empty ()) {
3743
3739
return missingWitnesses;
3744
3740
}
@@ -3831,7 +3827,7 @@ bool ConformanceChecker::
3831
3827
diagnoseMissingWitnesses (MissingWitnessDiagnosisKind Kind, bool Delayed) {
3832
3828
auto LocalMissing = getLocalMissingWitness ();
3833
3829
3834
- SmallVector<MissingWitness, 4 > MissingWitnessScratch;
3830
+ SmallVector<ASTContext:: MissingWitness, 4 > MissingWitnessScratch;
3835
3831
LocalMissing = pruneMissingWitnesses (
3836
3832
*this , Proto, Conformance, LocalMissing, MissingWitnessScratch);
3837
3833
@@ -3860,7 +3856,7 @@ diagnoseMissingWitnesses(MissingWitnessDiagnosisKind Kind, bool Delayed) {
3860
3856
3861
3857
const auto InsertFixit = [](
3862
3858
NormalProtocolConformance *Conf, SourceLoc ComplainLoc, bool EditorMode,
3863
- llvm::SmallVector<MissingWitness, 4 > MissingWitnesses) {
3859
+ llvm::SmallVector<ASTContext:: MissingWitness, 4 > MissingWitnesses) {
3864
3860
DeclContext *DC = Conf->getDeclContext ();
3865
3861
// The location where to insert stubs.
3866
3862
SourceLoc FixitLocation;
@@ -3974,9 +3970,9 @@ diagnoseMissingWitnesses(MissingWitnessDiagnosisKind Kind, bool Delayed) {
3974
3970
// If the diagnostics are suppressed, we register these missing witnesses
3975
3971
// for later revisiting.
3976
3972
Conformance->setInvalid ();
3977
- getASTContext (). addDelayedMissingWitnesses (
3978
- Conformance,
3979
- std::make_unique<DelayedMissingWitnesses>(MissingWitnesses));
3973
+ for ( auto Missing : MissingWitnesses) {
3974
+ getASTContext (). addDelayedMissingWitness ( Conformance, Missing);
3975
+ }
3980
3976
} else {
3981
3977
auto Loc = this ->Loc ;
3982
3978
getASTContext ().addDelayedConformanceDiag (Conformance, true ,
@@ -6914,7 +6910,7 @@ TypeWitnessAndDecl
6914
6910
TypeWitnessRequest::evaluate (Evaluator &eval,
6915
6911
NormalProtocolConformance *conformance,
6916
6912
AssociatedTypeDecl *requirement) const {
6917
- llvm::SetVector<MissingWitness> MissingWitnesses;
6913
+ llvm::SetVector<ASTContext:: MissingWitness> MissingWitnesses;
6918
6914
ConformanceChecker checker (requirement->getASTContext (), conformance,
6919
6915
MissingWitnesses);
6920
6916
checker.resolveSingleTypeWitness (requirement);
@@ -6933,7 +6929,7 @@ Witness
6933
6929
ValueWitnessRequest::evaluate (Evaluator &eval,
6934
6930
NormalProtocolConformance *conformance,
6935
6931
ValueDecl *requirement) const {
6936
- llvm::SetVector<MissingWitness> MissingWitnesses;
6932
+ llvm::SetVector<ASTContext:: MissingWitness> MissingWitnesses;
6937
6933
ConformanceChecker checker (requirement->getASTContext (), conformance,
6938
6934
MissingWitnesses);
6939
6935
checker.resolveSingleWitness (requirement);
0 commit comments