swift
7b2dc1f8 - [ClangImporter] Do not import enum when already imported via DeclContext (#85424)

Commit
151 days ago
[ClangImporter] Do not import enum when already imported via DeclContext (#85424) If we try to import this in ObjC interop mode: ```objc typedef CF_OPTIONS(uint32_t, MyFlags) { ... } CF_SWIFT_NAME(MyCtx.Flags); struct MyStruct { MyFlags flags; ... } CF_SWIFT_NAME(MyCtx); ``` ClangImporter tries to import `MyCtx/MyStruct` before it imports `MyFlags` (via `importDeclContextOf()`), which in turn tries to import `MyFlags` again due to the `flags` field. The existing cycle-breaking mechanism prevents us from looping infinitely, but leads us to import two copies of the Swift `EnumDecl`, which can cause errors later during CodeGen. ~~This patch adds an assertion to catch such issues earlier, and breaks the cycle by checking the cache again.~~ This patch no longer does so because that caused issues beyond the scope of this patch. rdar://162317760 (cherry picked from commit f830b1c6659992a7d1de33e91d05fb947ad2d197)
Author
Committer
Parents
Loading