Skip to content

[cxx-interop][rebranch] Handle clang elaborated types properly #62190

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Nov 28, 2022

Conversation

egorzhdan
Copy link
Contributor

@egorzhdan egorzhdan commented Nov 18, 2022

Clang recently started wrapping more types in clang::ElaboratedType after this change: https://reviews.llvm.org/D112374

This broke some assumptions in ClangImporter, specifically in enum handling logic. This change adjusts those.

Fixes these tests in rebranch:

  • Interop/Cxx/enum/anonymous-with-swift-name-module-interface.swift
  • Interop/Cxx/enum/anonymous-with-swift-name-objc-module-interface.swift
  • Interop/Cxx/enum/anonymous-with-swift-name.swift
  • Interop/Cxx/enum/c-enums-NS_OPTIONS-NS_REFINED_FOR_SWIFT.swift
  • Interop/Cxx/enum/c-enums-NS_OPTIONS.swift
  • Interop/Cxx/enum/c-enums-withOptions-omit.swift
  • Interop/Cxx/class/inheritance/fields-module-interface.swift
  • Interop/Cxx/class/inheritance/fields.swift
  • Interop/Cxx/class/inheritance/functions-module-interface.swift
  • Interop/Cxx/class/inheritance/sub-types-module-interface.swift
  • Interop/Cxx/class/inheritance/type-aliases-module-interface.swift

@egorzhdan egorzhdan added the c++ interop Feature: Interoperability with C++ label Nov 18, 2022
@egorzhdan
Copy link
Contributor Author

@swift-ci please smoke test

@egorzhdan
Copy link
Contributor Author

@swift-ci please test

@egorzhdan egorzhdan force-pushed the egorzhdan/clang-elaborated branch from 9ddde90 to 9a6435a Compare November 19, 2022 01:55
@egorzhdan
Copy link
Contributor Author

@swift-ci please smoke test

@egorzhdan
Copy link
Contributor Author

@swift-ci please test

@egorzhdan
Copy link
Contributor Author

@swift-ci please test macOS

Clang recently started wrapping more types in `clang::ElaboratedType` after this change: https://reviews.llvm.org/D112374

This broke some assumptions in ClangImporter, specifically in enum handling logic. This change adjusts those.

Fixes these tests in rebranch:
* `Interop/Cxx/enum/anonymous-with-swift-name-module-interface.swift`
* `Interop/Cxx/enum/anonymous-with-swift-name-objc-module-interface.swift`
* `Interop/Cxx/enum/anonymous-with-swift-name.swift`
* `Interop/Cxx/enum/c-enums-NS_OPTIONS-NS_REFINED_FOR_SWIFT.swift`
* `Interop/Cxx/enum/c-enums-NS_OPTIONS.swift`
* `Interop/Cxx/enum/c-enums-withOptions-omit.swift`
* `Interop/Cxx/class/inheritance/fields-module-interface.swift`
* `Interop/Cxx/class/inheritance/fields.swift`
* `Interop/Cxx/class/inheritance/functions-module-interface.swift`
* `Interop/Cxx/class/inheritance/sub-types-module-interface.swift`
* `Interop/Cxx/class/inheritance/type-aliases-module-interface.swift`
@egorzhdan egorzhdan force-pushed the egorzhdan/clang-elaborated branch from 9a6435a to 8d98f50 Compare November 22, 2022 13:52
@egorzhdan
Copy link
Contributor Author

@swift-ci please smoke test

@egorzhdan
Copy link
Contributor Author

@swift-ci please test

@egorzhdan
Copy link
Contributor Author

@swift-ci please smoke test

Copy link
Contributor

@zoecarver zoecarver left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM thanks

@egorzhdan egorzhdan merged commit cef0158 into main Nov 28, 2022
@egorzhdan egorzhdan deleted the egorzhdan/clang-elaborated branch November 28, 2022 21:11
egorzhdan added a commit that referenced this pull request Dec 1, 2022
This applies the same trick as #62190 for newly written code.

Fixes two C++ interop tests in rebranch:
* `Interop/Cxx/enum/c-enums-NS_OPTIONS-api-notes-renamed-options.swift`
* `Interop/Cxx/enum/c-enums-NS_OPTIONS-swift-named-options.swift`

rdar://102858524
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
c++ interop Feature: Interoperability with C++
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants