protocol_cw.m   [plain text]


// TEST_CFLAGS -Wno-deprecated-declarations

#include "test.h"

#if __OBJC2__

int main()
{
    succeed(__FILE__);
}

#else

// rdar://4951638

#include <string.h>
#include <objc/Protocol.h>

char Protocol_name[] __attribute__((section("__OBJC,__class_names"))) = "Protocol";

struct st {
    void *isa; 
    const char *protocol_name;
    void *protocol_list;
    void *instance_methods;
    void *class_methods;
};

struct st Foo_protocol __attribute__((section("__OBJC,__protocol"))) = { Protocol_name, "Foo", 0, 0, 0 };

int main()
{
    Protocol *foo = objc_getProtocol("Foo");

    testassert(foo == (Protocol *)&Foo_protocol);
    testassert(0 == strcmp("Foo", [foo name]));
    succeed(__FILE__);
}

#endif