about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/test/ui/auxiliary/no-mangle-associated-fn.rs10
-rw-r--r--src/test/ui/no-mangle-associated-fn.rs22
2 files changed, 32 insertions, 0 deletions
diff --git a/src/test/ui/auxiliary/no-mangle-associated-fn.rs b/src/test/ui/auxiliary/no-mangle-associated-fn.rs
new file mode 100644
index 00000000000..2ef161edf29
--- /dev/null
+++ b/src/test/ui/auxiliary/no-mangle-associated-fn.rs
@@ -0,0 +1,10 @@
+#![crate_type = "lib"]
+
+struct Bar;
+
+impl Bar {
+    #[no_mangle]
+    fn bar() -> u8 {
+        2
+    }
+}
diff --git a/src/test/ui/no-mangle-associated-fn.rs b/src/test/ui/no-mangle-associated-fn.rs
new file mode 100644
index 00000000000..e9c621914b2
--- /dev/null
+++ b/src/test/ui/no-mangle-associated-fn.rs
@@ -0,0 +1,22 @@
+// aux-build: no-mangle-associated-fn.rs
+// run-pass
+
+extern crate no_mangle_associated_fn;
+
+struct Foo;
+
+impl Foo {
+    #[no_mangle]
+    fn foo() -> u8 {
+        1
+    }
+}
+
+fn main() {
+    extern "Rust" {
+        fn foo() -> u8;
+        fn bar() -> u8;
+    }
+    assert_eq!(unsafe { foo() }, 1);
+    assert_eq!(unsafe { bar() }, 2);
+}