+++ /dev/null
-#include <stddef.h>
-
-struct slice {
- char const *p;
- size_t len;
-};
-
-extern "C"
-void test() {
- struct slice s = { .p = "hello",
- .len = 5 };
-}
+++ /dev/null
-#[no_mangle]
-fn test() {
- let _x = "hello";
-}
--- /dev/null
+#include <stdlib.h>
+#include <assert.h>
+
+struct slice {
+ int const *p;
+ size_t len;
+};
+
+extern "C"
+size_t test(slice s) {
+ size_t y = 0;
+ for (int i = 0; i < s.len; ++i) {
+ assert(i < s.len);
+ y += s.p[i];
+ }
+ return y;
+}
--- /dev/null
+#[no_mangle]
+fn test(x: &[int]) -> int {
+ let mut y = 0;
+ let mut i = 0;
+ while (i < x.len()) {
+ y += x[i];
+ i += 1;
+ }
+ y
+}
--- /dev/null
+#include <stdlib.h>
+
+size_t foo(size_t x) {
+ return x * x;
+}
+
+extern "C"
+void test() {
+ size_t x = foo(10);
+}
--- /dev/null
+fn foo(x: int) -> int {
+ x * x
+}
+
+#[no_mangle]
+fn test() {
+ let x = foo(10);
+}
--- /dev/null
+#include <stdlib.h>
+
+extern "C"
+size_t test(size_t x, size_t y) {
+ switch (x) {
+ case 1: return y;
+ case 2: return y*2;
+ case 4: return y*3;
+ default: return 11;
+ }
+}
--- /dev/null
+#[no_mangle]
+fn test(x: int, y: int) -> int {
+ match x {
+ 1 => y,
+ 2 => y*2,
+ 4 => y*3,
+ _ => 11
+ }
+}
--- /dev/null
+#include <stddef.h>
+
+struct slice {
+ char const *p;
+ size_t len;
+};
+
+extern "C"
+void test() {
+ struct slice s = { .p = "hello",
+ .len = 5 };
+}
--- /dev/null
+#[no_mangle]
+fn test() {
+ let _x = "hello";
+}