diff options
Diffstat (limited to 'src/test/ui/moves/moves-based-on-type-cyclic-types-issue-4821.rs')
-rw-r--r-- | src/test/ui/moves/moves-based-on-type-cyclic-types-issue-4821.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/test/ui/moves/moves-based-on-type-cyclic-types-issue-4821.rs b/src/test/ui/moves/moves-based-on-type-cyclic-types-issue-4821.rs new file mode 100644 index 000000000..4417fb926 --- /dev/null +++ b/src/test/ui/moves/moves-based-on-type-cyclic-types-issue-4821.rs @@ -0,0 +1,20 @@ +// Test for a subtle failure computing kinds of cyclic types, in which +// temporary kinds wound up being stored in a cache and used later. +// See rustc::ty::type_contents() for more information. + + +struct List { key: isize, next: Option<Box<List>> } + +fn foo(node: Box<List>) -> isize { + let r = match node.next { + Some(right) => consume(right), + None => 0 + }; + consume(node) + r //~ ERROR use of partially moved value: `node` +} + +fn consume(v: Box<List>) -> isize { + v.key +} + +fn main() {} |