Skip to content

Commit af9e0c1

Browse files
committed
[AST] Update DeclContext parent in Decl::setDeclContext
If the decl itself is a DeclContext, make sure to update its parent too.
1 parent 1993863 commit af9e0c1

File tree

2 files changed

+5
-1
lines changed

2 files changed

+5
-1
lines changed

include/swift/AST/DeclContext.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,8 @@ class alignas(1 << DeclContextAlignInBits) DeclContext
261261
friend class Initializer; // uses setParent
262262
friend class AutoClosureExpr; // uses setParent
263263
friend class AbstractClosureExpr; // uses setParent
264-
264+
friend class Decl; // uses setParent
265+
265266
template<class A, class B, class C>
266267
friend struct ::llvm::CastInfo;
267268

lib/AST/Decl.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -767,6 +767,9 @@ void Decl::setInvalid() {
767767

768768
void Decl::setDeclContext(DeclContext *DC) {
769769
Context = DC;
770+
// If this Decl is also a DeclContext, we need to update its parent too.
771+
if (auto *thisDC = dyn_cast<DeclContext>(this))
772+
thisDC->setParent(DC);
770773
}
771774

772775
bool Decl::isUserAccessible() const {

0 commit comments

Comments
 (0)