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:
parent
9fe03b3c55
commit
e1620def9f
4 changed files with 77 additions and 11 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue