In typeck, check for dynamically sized by-value arguments to thunks

A check in trans didn't have a corresponding check in typeck, causing
some programs (to wit, compile-fail/chan-parameterized-args.rs - part of this
commit) to fail with an assertion failure in trans instead of a type error.
Fixed it. In short, arguments that are future thunk arguments (any spawn
arguments, and _ arguments in bind) need to either not contain type params
or type vars, or be by-reference.

Closes #665.
This commit is contained in:
Tim Chevalier 2011-07-11 17:26:40 -07:00
parent 9fe03b3c55
commit e1620def9f
4 changed files with 77 additions and 11 deletions

View file

@ -182,6 +182,19 @@ fn any[T](&fn(&T) -> bool f, &vec[T] v) -> bool {
ret false;
}
tag call_kind {
kind_call;
kind_spawn;
kind_bind;
}
fn call_kind_str(call_kind c) -> str {
alt (c) {
case (kind_call) { "Call" }
case (kind_spawn) { "Spawn" }
case (kind_bind) { "Bind" }
}
}
//
// Local Variables:
// mode: rust