@@ -4260,10 +4260,10 @@ class DeclChecker : public DeclVisitor<DeclChecker> {
4260
4260
});
4261
4261
}
4262
4262
4263
- if (!IsFirstPass)
4264
- checkAccessControl (TC, PBD);
4265
-
4266
4263
TC.checkDeclAttributes (PBD);
4264
+
4265
+ if (IsFirstPass)
4266
+ checkAccessControl (TC, PBD);
4267
4267
}
4268
4268
4269
4269
void visitSubscriptDecl (SubscriptDecl *SD) {
@@ -4289,17 +4289,22 @@ class DeclChecker : public DeclVisitor<DeclChecker> {
4289
4289
checkAccessControl (TC, TAD);
4290
4290
}
4291
4291
4292
- void visitAssociatedTypeDecl (AssociatedTypeDecl *assocType) {
4293
- if (!assocType->hasValidationStarted ())
4294
- TC.validateDecl (assocType);
4292
+ void visitAssociatedTypeDecl (AssociatedTypeDecl *AT) {
4293
+ if (!IsFirstPass) {
4294
+ return ;
4295
+ }
4296
+
4297
+ TC.validateDecl (AT);
4295
4298
4296
- auto *proto = assocType ->getProtocol ();
4299
+ auto *proto = AT ->getProtocol ();
4297
4300
if (proto->isObjC ()) {
4298
- TC.diagnose (assocType ->getLoc (),
4301
+ TC.diagnose (AT ->getLoc (),
4299
4302
diag::associated_type_objc,
4300
- assocType ->getName (),
4303
+ AT ->getName (),
4301
4304
proto->getName ());
4302
4305
}
4306
+
4307
+ checkAccessControl (TC, AT);
4303
4308
}
4304
4309
4305
4310
void checkUnsupportedNestedType (NominalTypeDecl *NTD) {
@@ -4651,26 +4656,15 @@ class DeclChecker : public DeclVisitor<DeclChecker> {
4651
4656
}
4652
4657
4653
4658
void visitProtocolDecl (ProtocolDecl *PD) {
4654
- TC.checkDeclAttributesEarly (PD);
4655
- TC.computeAccessLevel (PD);
4656
-
4657
- if (IsFirstPass) {
4658
- checkUnsupportedNestedType (PD);
4659
- }
4660
-
4661
4659
if (!IsFirstPass) {
4662
- checkAccessControl (TC, PD);
4663
- for (auto member : PD->getMembers ()) {
4664
- TC.checkUnsupportedProtocolType (member);
4665
- checkAccessControl (TC, member);
4666
- }
4667
- TC.checkInheritanceClause (PD);
4668
-
4669
- GenericTypeToArchetypeResolver resolver (PD);
4670
- TC.validateWhereClauses (PD, &resolver);
4671
4660
return ;
4672
4661
}
4673
4662
4663
+ TC.checkDeclAttributesEarly (PD);
4664
+ TC.computeAccessLevel (PD);
4665
+
4666
+ checkUnsupportedNestedType (PD);
4667
+
4674
4668
TC.validateDecl (PD);
4675
4669
if (!PD->hasValidSignature ())
4676
4670
return ;
@@ -4706,6 +4700,15 @@ class DeclChecker : public DeclVisitor<DeclChecker> {
4706
4700
4707
4701
TC.checkDeclAttributes (PD);
4708
4702
4703
+ checkAccessControl (TC, PD);
4704
+ for (auto member : PD->getMembers ()) {
4705
+ TC.checkUnsupportedProtocolType (member);
4706
+ }
4707
+ TC.checkInheritanceClause (PD);
4708
+
4709
+ GenericTypeToArchetypeResolver resolver (PD);
4710
+ TC.validateWhereClauses (PD, &resolver);
4711
+
4709
4712
if (TC.Context .LangOpts .DebugGenericSignatures ) {
4710
4713
auto requirementsSig =
4711
4714
GenericSignature::get ({PD->getProtocolSelfType ()},
@@ -4772,14 +4775,12 @@ class DeclChecker : public DeclVisitor<DeclChecker> {
4772
4775
// Complain if we should have a body.
4773
4776
TC.diagnose (FD->getLoc (), diag::func_decl_without_brace);
4774
4777
}
4775
- }
4776
4778
4777
- if (!IsFirstPass) {
4778
- checkAccessControl (TC, FD);
4779
4779
return ;
4780
4780
}
4781
4781
4782
4782
TC.validateDecl (FD);
4783
+ checkAccessControl (TC, FD);
4783
4784
}
4784
4785
4785
4786
@@ -6300,7 +6301,6 @@ class DeclChecker : public DeclVisitor<DeclChecker> {
6300
6301
}
6301
6302
6302
6303
if (!IsFirstPass) {
6303
- checkAccessControl (TC, CD);
6304
6304
return ;
6305
6305
}
6306
6306
@@ -6347,6 +6347,7 @@ class DeclChecker : public DeclVisitor<DeclChecker> {
6347
6347
}
6348
6348
6349
6349
TC.checkDeclAttributes (CD);
6350
+ checkAccessControl (TC, CD);
6350
6351
}
6351
6352
6352
6353
void visitDestructorDecl (DestructorDecl *DD) {
0 commit comments