Commit Graph

7 Commits

Author SHA1 Message Date
John Hui
89f8855ad6 [cxx-interop] Check for NS_OPTIONS macro in findOptionSetEnum()
importer::findOptionSetEnum() uses some fragile heuristics to determine
whether a typedef is involved in the construction of a CF_OPTIONS or
NS_OPTIONS type. This patch adds an explicit check that the typedef is
expanded from either of those macros, to prevent, e.g., an unavailable
NS_ENUM, from being mistakenly recognized as an NS_OPTIONS.

Note that doing this is still kind of fragile, and prevents users from
building {NS,CF}_OPTIONS with their own macros. The right thing to do is
probably specifically look for the flag_enum attribute, but that is not
currently what we're doing for reasons whose discovery is left as
an exercise to the future git archaeologist.

This patch also removes (part of) a test case that builds
a CF_OPTIONS-like type with the "SOME_OPTIONS" macro, which is no longer
supported as of this patch.

rdar://150399978
2025-05-21 15:01:09 -07:00
zoecarver
aaec49e0a5 [cxx-interop] Fix anonymous enum issue for swift-named computed properties. 2022-08-14 15:45:39 -07:00
zoecarver
1adb6116e7 [cxx-interop] Add anonymous enum logic to importFunctionReturnType(). 2022-07-29 14:52:41 -07:00
zoecarver
06761a89e9 [cxx-interop] Use typedef's swift_name attr to rename anonymous enums. 2022-04-22 12:47:36 -07:00
zoecarver
2c983d968e [cxx-interop] Apply typedef -> enum patch to method param types as well.
Basically just applying https://github.com/apple/swift/pull/42431 to ObjC method param tyeps.
2022-04-19 12:03:12 -07:00
zoecarver
e6af2d9b49 [cxx-interop] Import enum, not typedef for parameter types.
Lookup the "anonymous" enum when importing parameter types rather than using the typedef's underlying type.
2022-04-18 19:20:19 -07:00
zoecarver
965c7ca443 [cxx-interop] Allow anonymous enums to use the name of their base.
If an anonymous enum inherits from a typedef, it will have the typedef's name.
2022-04-18 11:05:58 -07:00