Split getAccessibility() into getFormalAccess() and getEffectiveAccess().

Currently a no-op, but effective access for entities within the current
module will soon need to take testability into account. This declaration:

  internal func foo() {}

has a formal access of 'internal', but an effective access of 'public' if
we're in a testable mode.

Part of rdar://problem/17732115 (testability)

Swift SVN r26472
This commit is contained in:
Jordan Rose
2015-03-24 02:16:58 +00:00
parent dac0dc1dad
commit f74bc7122c
33 changed files with 162 additions and 161 deletions

View File

@@ -2179,18 +2179,18 @@ public:
Accessibility AccessibilityOfContext;
if (auto *NTD = dyn_cast<NominalTypeDecl>(CurrDeclContext))
AccessibilityOfContext = NTD->getAccessibility();
AccessibilityOfContext = NTD->getFormalAccess();
else
AccessibilityOfContext = cast<ExtensionDecl>(CurrDeclContext)
->getExtendedType()
->getAnyNominal()
->getAccessibility();
->getFormalAccess();
// If the developer has not input "func", we need to add necessary keywords
if (!isKeywordSpecified("func")) {
if (!isKeywordSpecified("private") &&
!isKeywordSpecified("public") &&
!isKeywordSpecified("internal"))
Builder.addAccessControlKeyword(std::min(FD->getAccessibility(),
Builder.addAccessControlKeyword(std::min(FD->getFormalAccess(),
AccessibilityOfContext));
if (Reason == DeclVisibilityKind::MemberOfSuper &&