Add a pass-by-copy parameter passing convention

This is intended to solve the problem of how to pass arguments to
constructor functions -- you want to move in rvalues, but not have to
explicitly copy stuff that is not an rvalue. The by-copy passing
convention will ensure the callee gets its own copy of the value. For
rvalues, it'll just pass off the value. For lvalues, it'll make a
copy.

Issue #1177
This commit is contained in:
Marijn Haverbeke 2011-11-16 12:32:38 +01:00
parent 6297fc979e
commit 4e03112141
9 changed files with 36 additions and 10 deletions

View file

@ -144,7 +144,7 @@ tag unop {
deref; not; neg;
}
tag mode { by_ref; by_val; by_mut_ref; by_move; mode_infer; }
tag mode { by_ref; by_val; by_mut_ref; by_move; by_copy; mode_infer; }
type stmt = spanned<stmt_>;