@@ -2775,28 +2775,29 @@ class DeclChecker : public DeclVisitor<DeclChecker> {
2775
2775
}
2776
2776
}
2777
2777
2778
- // Require the superclass to be open if this is outside its
2779
- // defining module. But don't emit another diagnostic if we
2780
- // already complained about the class being inherently
2781
- // un-subclassable.
2782
- if (!isInvalidSuperclass &&
2783
- !Super->hasOpenAccess (CD->getDeclContext ()) &&
2784
- Super->getModuleContext () != CD->getModuleContext ()) {
2785
- TC.diagnose (CD, diag::superclass_not_open, superclassTy);
2786
- isInvalidSuperclass = true ;
2787
- }
2778
+ if (TC.getLangOpts ().EnableAccessControl ) {
2779
+ // Require the superclass to be open if this is outside its
2780
+ // defining module. But don't emit another diagnostic if we
2781
+ // already complained about the class being inherently
2782
+ // un-subclassable.
2783
+ if (!isInvalidSuperclass &&
2784
+ !Super->hasOpenAccess (CD->getDeclContext ()) &&
2785
+ Super->getModuleContext () != CD->getModuleContext ()) {
2786
+ TC.diagnose (CD, diag::superclass_not_open, superclassTy);
2787
+ isInvalidSuperclass = true ;
2788
+ }
2788
2789
2789
- // Require superclasses to be open if the subclass is open.
2790
- // This is a restriction we can consider lifting in the future,
2791
- // e.g. to enable a "sealed" superclass whose subclasses are all
2792
- // of one of several alternatives.
2793
- if (!isInvalidSuperclass &&
2794
- CD->getFormalAccess () == AccessLevel::Open &&
2795
- Super->getFormalAccess () != AccessLevel::Open) {
2796
- TC.diagnose (CD, diag::superclass_of_open_not_open, superclassTy);
2797
- TC.diagnose (Super, diag::superclass_here);
2790
+ // Require superclasses to be open if the subclass is open.
2791
+ // This is a restriction we can consider lifting in the future,
2792
+ // e.g. to enable a "sealed" superclass whose subclasses are all
2793
+ // of one of several alternatives.
2794
+ if (!isInvalidSuperclass &&
2795
+ CD->getFormalAccess () == AccessLevel::Open &&
2796
+ Super->getFormalAccess () != AccessLevel::Open) {
2797
+ TC.diagnose (CD, diag::superclass_of_open_not_open, superclassTy);
2798
+ TC.diagnose (Super, diag::superclass_here);
2799
+ }
2798
2800
}
2799
-
2800
2801
}
2801
2802
2802
2803
CD->getAllConformances ();
0 commit comments