Skip to content

Commit 41881a8

Browse files
committed
Avoid circular reference errors by adding an early bailout for imported enums
1 parent 9604081 commit 41881a8

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

lib/AST/LifetimeDependence.cpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -359,8 +359,15 @@ class LifetimeDependenceChecker {
359359

360360
std::optional<llvm::ArrayRef<LifetimeDependenceInfo>> checkEnumElementDecl() {
361361
auto *eed = cast<EnumElementDecl>(decl);
362-
auto enumType = eed->getParentEnum()->mapTypeIntoContext(
363-
eed->getParentEnum()->getDeclaredInterfaceType());
362+
auto *parentEnum = eed->getParentEnum();
363+
auto enumType =
364+
parentEnum->mapTypeIntoContext(parentEnum->getDeclaredInterfaceType());
365+
366+
// Add early bailout for imported enums.
367+
if (parentEnum->hasClangNode()) {
368+
return std::nullopt;
369+
}
370+
364371
// Escapable enum, bailout.
365372
if (!isDiagnosedNonEscapable(enumType)) {
366373
return std::nullopt;

0 commit comments

Comments
 (0)