summaryrefslogtreecommitdiffstats
path: root/src/test/ui/newtype.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/newtype.rs')
-rw-r--r--src/test/ui/newtype.rs23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/test/ui/newtype.rs b/src/test/ui/newtype.rs
new file mode 100644
index 000000000..f02b66f45
--- /dev/null
+++ b/src/test/ui/newtype.rs
@@ -0,0 +1,23 @@
+// run-pass
+
+#![allow(non_camel_case_types)]
+#[derive(Copy, Clone)]
+struct mytype(Mytype);
+
+#[derive(Copy, Clone)]
+struct Mytype {
+ compute: fn(mytype) -> isize,
+ val: isize,
+}
+
+fn compute(i: mytype) -> isize {
+ let mytype(m) = i;
+ return m.val + 20;
+}
+
+pub fn main() {
+ let myval = mytype(Mytype{compute: compute, val: 30});
+ println!("{}", compute(myval));
+ let mytype(m) = myval;
+ assert_eq!((m.compute)(myval), 50);
+}