Sema: Intro experimental @cdecl and basic C compatibility check #80744
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Introduce a new experimental
@cdecl
attribute gated behind theCDecl
feature flag. This is part of the initial work to make@_cdecl
an official attribute with some improvements mostly for C compatibility.For the time being I'm planning on using the new
@cdecl
for C compatibility and preserving the existing behavior of@_cdecl
for Objective-C compatibilty until we settle on a final syntax. Considering the syntax and exact behavior is likely to change this PR introduces a few abstracted services to make future changes hopefully easier.This PR implements basic checks on the validity of the
@cdecl
attribute and ensures the parameters and result types are representable in C. More work is required for this attribute to be usable in practice. More diagnostics will need to be updated to verify full representability in C, proper C compatible enums would need work, and printing for C clients in the compatibility header still needs to be implemented.