@@ -1804,6 +1804,11 @@ namespace {
1804
1804
GlobalMissingWitnesses.size () - LocalMissingWitnessesStartIndex);
1805
1805
}
1806
1806
1807
+ void clearGlobalMissingWitnesses () {
1808
+ GlobalMissingWitnesses.clear ();
1809
+ LocalMissingWitnessesStartIndex = GlobalMissingWitnesses.size ();
1810
+ }
1811
+
1807
1812
public:
1808
1813
// / Call this to diagnose currently known missing witnesses.
1809
1814
void diagnoseMissingWitnesses (MissingWitnessDiagnosisKind Kind);
@@ -2713,7 +2718,7 @@ diagnoseMissingWitnesses(MissingWitnessDiagnosisKind Kind) {
2713
2718
switch (Kind) {
2714
2719
case MissingWitnessDiagnosisKind::ErrorFixIt: {
2715
2720
diagnoseOrDefer (LocalMissing[0 ], true , InsertFixitCallback);
2716
- GlobalMissingWitnesses. clear ();
2721
+ clearGlobalMissingWitnesses ();
2717
2722
return ;
2718
2723
}
2719
2724
case MissingWitnessDiagnosisKind::ErrorOnly: {
@@ -2723,7 +2728,7 @@ diagnoseMissingWitnesses(MissingWitnessDiagnosisKind Kind) {
2723
2728
}
2724
2729
case MissingWitnessDiagnosisKind::FixItOnly:
2725
2730
InsertFixitCallback (Conformance);
2726
- GlobalMissingWitnesses. clear ();
2731
+ clearGlobalMissingWitnesses ();
2727
2732
return ;
2728
2733
}
2729
2734
}
@@ -4868,8 +4873,6 @@ void ConformanceChecker::checkConformance(MissingWitnessDiagnosisKind Kind) {
4868
4873
4869
4874
// Diagnose missing type witnesses for now.
4870
4875
diagnoseMissingWitnesses (Kind);
4871
- // Diagnose missing value witnesses later.
4872
- SWIFT_DEFER { diagnoseMissingWitnesses (Kind); };
4873
4876
4874
4877
// Resolution attempts to have the witnesses be correct by construction, but
4875
4878
// this isn't guaranteed, so let's double check.
@@ -4889,6 +4892,9 @@ void ConformanceChecker::checkConformance(MissingWitnessDiagnosisKind Kind) {
4889
4892
return ;
4890
4893
}
4891
4894
4895
+ // Diagnose missing value witnesses later.
4896
+ SWIFT_DEFER { diagnoseMissingWitnesses (Kind); };
4897
+
4892
4898
// Ensure the associated type conformances are used.
4893
4899
addUsedConformances (Conformance);
4894
4900
0 commit comments