Skip to content

Commit 963748b

Browse files
committed
[Serialization] Limit ignoring internal overriden decl to lib evolution
At deserialization, we can drop the overriding relationship if the overriden decl is internal and only when the overrider is in a resilient module.
1 parent 93a3465 commit 963748b

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

lib/Serialization/Serialization.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3540,13 +3540,15 @@ class Serializer::DeclSerializer : public DeclVisitor<DeclSerializer> {
35403540
return false;
35413541

35423542
// In a public-override-internal case, the override doesn't have ABI
3543-
// implications.
3543+
// implications. This corresponds to hiding the override keyword from the
3544+
// module interface.
35443545
auto isPublic = [](const ValueDecl *VD) {
35453546
return VD->getFormalAccessScope(VD->getDeclContext(),
35463547
/*treatUsableFromInlineAsPublic*/true)
35473548
.isPublic();
35483549
};
3549-
if (isPublic(override) && !isPublic(overridden))
3550+
if (override->getDeclContext()->getParentModule()->isResilient() &&
3551+
isPublic(override) && !isPublic(overridden))
35503552
return false;
35513553

35523554
return true;

0 commit comments

Comments
 (0)