diff --git a/Test/ObjCXXEHInterop_arc.m b/Test/ObjCXXEHInterop_arc.m new file mode 100644 index 0000000..8d4d275 --- /dev/null +++ b/Test/ObjCXXEHInterop_arc.m @@ -0,0 +1,22 @@ +#import "Test.h" + +#import "stdio.h" + +void poke_objcxx(void); + +void rethrow(id x) +{ + @throw x; +} + +int main(void) +{ + @try { + printf("Poking from minRepM\n"); + poke_objcxx(); + printf("Poked from minRepM\n"); + } @catch (Test *localException) { + printf("In NS_HANDLER block, %p\n", localException); + } +} + diff --git a/Test/ObjCXXEHInterop_arc.mm b/Test/ObjCXXEHInterop_arc.mm new file mode 100644 index 0000000..f5f47ad --- /dev/null +++ b/Test/ObjCXXEHInterop_arc.mm @@ -0,0 +1,18 @@ +#import "Test.h" +#import "stdio.h" + +extern "C" void rethrow(id); + + +extern "C" void poke_objcxx(void) +{ + @try { + printf("Raising MyException\n"); + Test *e = [Test new]; + @throw e; + } @catch (Test *localException) { + printf("Caught - re-raising\n"); + rethrow(localException); + } +} +