Skip to content

Commit a7daf13

Browse files
committed
AST: Introduce and adopt Decl::isExposedToClients().
This method is a more ergonomic utility wrapping DeclExportabilityVisitor.
1 parent 17f6f4e commit a7daf13

File tree

3 files changed

+10
-2
lines changed

3 files changed

+10
-2
lines changed

include/swift/AST/Decl.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -957,6 +957,10 @@ class alignas(1 << DeclAlignInBits) Decl : public ASTAllocated<Decl> {
957957
unsigned getAttachedMacroDiscriminator(DeclBaseName macroName, MacroRole role,
958958
const CustomAttr *attr) const;
959959

960+
/// Determines if this declaration is exposed to clients of the module it is
961+
/// defined in. For example, `public` declarations are exposed to clients.
962+
bool isExposedToClients() const;
963+
960964
/// Returns the innermost enclosing decl with an availability annotation.
961965
const Decl *getInnermostDeclWithAvailability() const;
962966

lib/AST/Decl.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
#include "swift/AST/AccessScope.h"
2424
#include "swift/AST/Attr.h"
2525
#include "swift/AST/CaptureInfo.h"
26+
#include "swift/AST/DeclExportabilityVisitor.h"
2627
#include "swift/AST/DiagnosticEngine.h"
2728
#include "swift/AST/DiagnosticsSema.h"
2829
#include "swift/AST/ExistentialLayout.h"
@@ -492,6 +493,10 @@ unsigned Decl::getAttachedMacroDiscriminator(DeclBaseName macroName,
492493
macroName);
493494
}
494495

496+
bool Decl::isExposedToClients() const {
497+
return DeclExportabilityVisitor().visit(this);
498+
}
499+
495500
const Decl *Decl::getInnermostDeclWithAvailability() const {
496501
if (getAttrs().hasAttribute<AvailableAttr>())
497502
return this;

lib/Serialization/Serialization.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
#include "swift/AST/ASTMangler.h"
1717
#include "swift/AST/ASTVisitor.h"
1818
#include "swift/AST/AutoDiff.h"
19-
#include "swift/AST/DeclExportabilityVisitor.h"
2019
#include "swift/AST/DiagnosticsCommon.h"
2120
#include "swift/AST/Expr.h"
2221
#include "swift/AST/FileSystem.h"
@@ -3306,7 +3305,7 @@ class Serializer::DeclSerializer : public DeclVisitor<DeclSerializer> {
33063305
/// it, but at the same time keep the safety checks precise to avoid
33073306
/// XRef errors and such.
33083307
static bool isDeserializationSafe(const Decl *decl) {
3309-
return DeclExportabilityVisitor().visit(decl);
3308+
return decl->isExposedToClients();
33103309
}
33113310

33123311
private:

0 commit comments

Comments
 (0)