Files
swift-mirror/test/Interop/C/struct/Inputs/foreign-reference-invalid.h
Egor Zhdan c73f528b82 [cxx-interop] Validate C foreign reference types
Swift validates the retain/release operations for foreign reference types to check for obvious errors, e.g. a wrong parameter type or return type.

That logic was only running for C++ foreign reference types. This patch enables it for C foreign reference types as well.

rdar://158609723
2025-08-18 19:18:18 +01:00

21 lines
584 B
C

#include <stdlib.h>
struct __attribute__((swift_attr("import_reference")))
__attribute__((swift_attr("retain:nonexistent")))
__attribute__((swift_attr("release:nonexistent"))) NonExistent {
int value;
};
struct __attribute__((swift_attr("import_reference"))) NoRetainRelease {
int value;
};
struct __attribute__((swift_attr("import_reference")))
__attribute__((swift_attr("retain:badRetain")))
__attribute__((swift_attr("release:badRelease"))) BadRetainRelease {
int value;
};
float badRetain(struct BadRetainRelease *v);
void badRelease(struct BadRetainRelease *v, int i);