summaryrefslogtreecommitdiffstats
path: root/src/test/ui/lang-items/fn-fn_mut-call-ill-formed.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/lang-items/fn-fn_mut-call-ill-formed.rs')
-rw-r--r--src/test/ui/lang-items/fn-fn_mut-call-ill-formed.rs27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/test/ui/lang-items/fn-fn_mut-call-ill-formed.rs b/src/test/ui/lang-items/fn-fn_mut-call-ill-formed.rs
new file mode 100644
index 000000000..52bd8136d
--- /dev/null
+++ b/src/test/ui/lang-items/fn-fn_mut-call-ill-formed.rs
@@ -0,0 +1,27 @@
+// Make sure that an error is reported if the `call` function of the
+// `fn`/`fn_mut` lang item is grossly ill-formed.
+
+#![feature(lang_items)]
+#![feature(no_core)]
+#![no_core]
+
+#[lang = "fn"]
+trait MyFn<T> {
+ const call: i32 = 42;
+ //~^ ERROR: `call` trait item in `fn` lang item must be a function
+}
+
+#[lang = "fn_mut"]
+trait MyFnMut<T> {
+ fn call(i: i32, j: i32) -> i32 { i + j }
+ //~^ ERROR: first argument of `call` in `fn_mut` lang item must be a reference
+}
+
+fn main() {
+ let a = || 42;
+ a();
+
+ let mut i = 0;
+ let mut b = || { i += 1; };
+ b();
+}