mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
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
21 lines
584 B
C
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);
|