about summary refs log tree commit diff
path: root/src/test/run-make-fulldeps/foreign-exceptions/foo.cpp
diff options
context:
space:
mode:
authorAlbert Larsan <74931857+albertlarsan68@users.noreply.github.com>2023-01-05 09:13:28 +0100
committerAlbert Larsan <74931857+albertlarsan68@users.noreply.github.com>2023-01-11 09:32:08 +0000
commitcf2dff2b1e3fa55fa5415d524200070d0d7aacfe (patch)
tree40a88d9a46aaf3e8870676eb2538378b75a263eb /src/test/run-make-fulldeps/foreign-exceptions/foo.cpp
parentca855e6e42787ecd062d81d53336fe6788ef51a9 (diff)
downloadrust-cf2dff2b1e3fa55fa5415d524200070d0d7aacfe.tar.gz
rust-cf2dff2b1e3fa55fa5415d524200070d0d7aacfe.zip
Move /src/test to /tests
Diffstat (limited to 'src/test/run-make-fulldeps/foreign-exceptions/foo.cpp')
-rw-r--r--src/test/run-make-fulldeps/foreign-exceptions/foo.cpp60
1 files changed, 0 insertions, 60 deletions
diff --git a/src/test/run-make-fulldeps/foreign-exceptions/foo.cpp b/src/test/run-make-fulldeps/foreign-exceptions/foo.cpp
deleted file mode 100644
index 8182021a2cc..00000000000
--- a/src/test/run-make-fulldeps/foreign-exceptions/foo.cpp
+++ /dev/null
@@ -1,60 +0,0 @@
-#include <assert.h>
-#include <stddef.h>
-#include <stdio.h>
-
-void println(const char* s) {
-    puts(s);
-    fflush(stdout);
-}
-
-struct exception {};
-struct rust_panic {};
-
-struct drop_check {
-    bool* ok;
-    ~drop_check() {
-        println("~drop_check");
-
-        if (ok)
-            *ok = true;
-    }
-};
-
-extern "C" {
-    void rust_catch_callback(void (*cb)(), bool* rust_ok);
-
-    void throw_cxx_exception() {
-        println("throwing C++ exception");
-        throw exception();
-    }
-
-    void test_cxx_exception() {
-        bool rust_ok = false;
-        try {
-            rust_catch_callback(throw_cxx_exception, &rust_ok);
-            assert(false && "unreachable");
-        } catch (exception e) {
-            println("caught C++ exception");
-            assert(rust_ok);
-            return;
-        }
-        assert(false && "did not catch thrown C++ exception");
-    }
-
-    void cxx_catch_callback(void (*cb)(), bool* cxx_ok) {
-        drop_check x;
-        x.ok = NULL;
-        try {
-            cb();
-        } catch (rust_panic e) {
-            assert(false && "shouldn't be able to catch a rust panic");
-        } catch (...) {
-            println("caught foreign exception in catch (...)");
-            // Foreign exceptions are caught by catch (...). We only set the ok
-            // flag if we successfully caught the panic. The destructor of
-            // drop_check will then set the flag to true if it is executed.
-            x.ok = cxx_ok;
-            throw;
-        }
-    }
-}