Skip to content

Commit 7c4547f

Browse files
committed
Only synthesize a private discriminator when needed
1 parent 0eb095b commit 7c4547f

File tree

3 files changed

+6
-5
lines changed

3 files changed

+6
-5
lines changed

include/swift/AST/SourceFile.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -496,7 +496,7 @@ class SourceFile final : public FileUnit {
496496
collectLinkLibraries(ModuleDecl::LinkLibraryCallback callback) const override;
497497

498498
Identifier getDiscriminatorForPrivateDecl(const Decl *D) const override;
499-
Identifier getPrivateDiscriminator() const;
499+
Identifier getPrivateDiscriminator(bool createIfMissing = false) const;
500500
Optional<ExternalSourceLocs::RawLocs>
501501
getExternalRawLocsForDecl(const Decl *D) const override;
502502

lib/AST/ASTMangler.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4009,7 +4009,8 @@ static StringRef getPrivateDiscriminatorIfNecessary(
40094009
if (!sf)
40104010
return StringRef();
40114011

4012-
Identifier discriminator = sf->getPrivateDiscriminator();
4012+
Identifier discriminator =
4013+
sf->getPrivateDiscriminator(/*createIfMissing=*/true);
40134014
assert(!discriminator.empty());
40144015
assert(!isNonAscii(discriminator.str()) &&
40154016
"discriminator contains non-ASCII characters");

lib/AST/Module.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3852,8 +3852,8 @@ ASTScope &SourceFile::getScope() {
38523852
return *Scope.get();
38533853
}
38543854

3855-
Identifier SourceFile::getPrivateDiscriminator() const {
3856-
if (!PrivateDiscriminator.empty())
3855+
Identifier SourceFile::getPrivateDiscriminator(bool createIfMissing) const {
3856+
if (!PrivateDiscriminator.empty() || !createIfMissing)
38573857
return PrivateDiscriminator;
38583858

38593859
StringRef name = getFilename();
@@ -3894,7 +3894,7 @@ Identifier
38943894
SourceFile::getDiscriminatorForPrivateDecl(const Decl *D) const {
38953895
assert(D->getDeclContext()->getModuleScopeContext() == this ||
38963896
D->getDeclContext()->getModuleScopeContext() == getSynthesizedFile());
3897-
return getPrivateDiscriminator();
3897+
return getPrivateDiscriminator(/*createIfMissing=*/true);
38983898
}
38993899

39003900
SynthesizedFileUnit *FileUnit::getSynthesizedFile() const {

0 commit comments

Comments
 (0)