@@ -2622,8 +2622,7 @@ class DeclChecker : public DeclVisitor<DeclChecker> {
2622
2622
2623
2623
TC.checkDeclAttributes (PBD);
2624
2624
2625
- AccessControlChecker::checkAccessControl (TC, PBD);
2626
- UsableFromInlineChecker::checkUsableFromInline (TC, PBD);
2625
+ checkAccessControl (TC, PBD);
2627
2626
2628
2627
// If the initializers in the PBD aren't checked yet, do so now.
2629
2628
for (unsigned i = 0 , e = PBD->getNumPatternEntries (); i != e; ++i) {
@@ -2643,8 +2642,7 @@ class DeclChecker : public DeclVisitor<DeclChecker> {
2643
2642
2644
2643
TC.checkDeclAttributes (SD);
2645
2644
2646
- AccessControlChecker::checkAccessControl (TC, SD);
2647
- UsableFromInlineChecker::checkUsableFromInline (TC, SD);
2645
+ checkAccessControl (TC, SD);
2648
2646
2649
2647
if (!checkOverrides (SD)) {
2650
2648
// If a subscript has an override attribute but does not override
@@ -2667,8 +2665,7 @@ class DeclChecker : public DeclVisitor<DeclChecker> {
2667
2665
TC.validateDecl (TAD);
2668
2666
TC.checkDeclAttributes (TAD);
2669
2667
2670
- AccessControlChecker::checkAccessControl (TC, TAD);
2671
- UsableFromInlineChecker::checkUsableFromInline (TC, TAD);
2668
+ checkAccessControl (TC, TAD);
2672
2669
}
2673
2670
2674
2671
void visitAssociatedTypeDecl (AssociatedTypeDecl *AT) {
@@ -2689,8 +2686,7 @@ class DeclChecker : public DeclVisitor<DeclChecker> {
2689
2686
proto->getName ());
2690
2687
}
2691
2688
2692
- AccessControlChecker::checkAccessControl (TC, AT);
2693
- UsableFromInlineChecker::checkUsableFromInline (TC, AT);
2689
+ checkAccessControl (TC, AT);
2694
2690
2695
2691
// Trigger the checking for overridden declarations.
2696
2692
(void )AT->getOverriddenDecls ();
@@ -2763,8 +2759,7 @@ class DeclChecker : public DeclVisitor<DeclChecker> {
2763
2759
2764
2760
checkInheritanceClause (ED);
2765
2761
2766
- AccessControlChecker::checkAccessControl (TC, ED);
2767
- UsableFromInlineChecker::checkUsableFromInline (TC, ED);
2762
+ checkAccessControl (TC, ED);
2768
2763
2769
2764
if (ED->hasRawType () && !ED->isObjC ()) {
2770
2765
// ObjC enums have already had their raw values checked, but pure Swift
@@ -2795,8 +2790,7 @@ class DeclChecker : public DeclVisitor<DeclChecker> {
2795
2790
2796
2791
checkInheritanceClause (SD);
2797
2792
2798
- AccessControlChecker::checkAccessControl (TC, SD);
2799
- UsableFromInlineChecker::checkUsableFromInline (TC, SD);
2793
+ checkAccessControl (TC, SD);
2800
2794
2801
2795
SD->getAllConformances ();
2802
2796
@@ -3028,8 +3022,7 @@ class DeclChecker : public DeclVisitor<DeclChecker> {
3028
3022
3029
3023
checkInheritanceClause (CD);
3030
3024
3031
- AccessControlChecker::checkAccessControl (TC, CD);
3032
- UsableFromInlineChecker::checkUsableFromInline (TC, CD);
3025
+ checkAccessControl (TC, CD);
3033
3026
3034
3027
TC.checkDeclCircularity (CD);
3035
3028
TC.ConformanceContexts .push_back (CD);
@@ -3067,8 +3060,7 @@ class DeclChecker : public DeclVisitor<DeclChecker> {
3067
3060
3068
3061
TC.checkDeclAttributes (PD);
3069
3062
3070
- AccessControlChecker::checkAccessControl (TC, PD);
3071
- UsableFromInlineChecker::checkUsableFromInline (TC, PD);
3063
+ checkAccessControl (TC, PD);
3072
3064
3073
3065
checkInheritanceClause (PD);
3074
3066
checkProtocolSelfRequirements (PD, PD);
@@ -3158,8 +3150,7 @@ class DeclChecker : public DeclVisitor<DeclChecker> {
3158
3150
TC.checkProtocolSelfRequirements (FD);
3159
3151
}
3160
3152
3161
- AccessControlChecker::checkAccessControl (TC, FD);
3162
- UsableFromInlineChecker::checkUsableFromInline (TC, FD);
3153
+ checkAccessControl (TC, FD);
3163
3154
3164
3155
if (!checkOverrides (FD)) {
3165
3156
// If a method has an 'override' keyword but does not
@@ -3194,8 +3185,7 @@ class DeclChecker : public DeclVisitor<DeclChecker> {
3194
3185
TC.validateDecl (EED);
3195
3186
TC.checkDeclAttributes (EED);
3196
3187
3197
- AccessControlChecker::checkAccessControl (TC, EED);
3198
- UsableFromInlineChecker::checkUsableFromInline (TC, EED);
3188
+ checkAccessControl (TC, EED);
3199
3189
}
3200
3190
3201
3191
void visitExtensionDecl (ExtensionDecl *ED) {
@@ -3244,33 +3234,8 @@ class DeclChecker : public DeclVisitor<DeclChecker> {
3244
3234
if (!ED->isInvalid ())
3245
3235
TC.checkDeclAttributes (ED);
3246
3236
3247
- if (auto *AA = ED->getAttrs ().getAttribute <AccessControlAttr>()) {
3248
- const auto access = AA->getAccess ();
3249
- AccessScope desiredAccessScope = AccessScope::getPublic ();
3250
- switch (access ) {
3251
- case AccessLevel::Private:
3252
- assert ((ED->isInvalid () ||
3253
- ED->getDeclContext ()->isModuleScopeContext ()) &&
3254
- " non-top-level extensions make 'private' != 'fileprivate'" );
3255
- LLVM_FALLTHROUGH;
3256
- case AccessLevel::FilePrivate: {
3257
- const DeclContext *DC = ED->getModuleScopeContext ();
3258
- bool isPrivate = access == AccessLevel::Private;
3259
- desiredAccessScope = AccessScope (DC, isPrivate);
3260
- break ;
3261
- }
3262
- case AccessLevel::Internal:
3263
- desiredAccessScope = AccessScope (ED->getModuleContext ());
3264
- break ;
3265
- case AccessLevel::Public:
3266
- case AccessLevel::Open:
3267
- break ;
3268
- }
3269
-
3270
- AccessControlChecker ACC (TC);
3271
- ACC.checkGenericParamAccess (ED->getGenericParams (), ED,
3272
- desiredAccessScope, access );
3273
- }
3237
+ if (auto *AA = ED->getAttrs ().getAttribute <AccessControlAttr>())
3238
+ checkExtensionGenericParamAccess (TC, ED, AA->getAccess ());
3274
3239
3275
3240
// Trigger the creation of all of the conformances associated with this
3276
3241
// nominal type.
@@ -3407,8 +3372,7 @@ class DeclChecker : public DeclVisitor<DeclChecker> {
3407
3372
3408
3373
TC.checkDeclAttributes (CD);
3409
3374
3410
- AccessControlChecker::checkAccessControl (TC, CD);
3411
- UsableFromInlineChecker::checkUsableFromInline (TC, CD);
3375
+ checkAccessControl (TC, CD);
3412
3376
3413
3377
if (requiresDefinition (CD) && !CD->hasBody ()) {
3414
3378
// Complain if we should have a body.
0 commit comments