diff options
| author | Patrick Walton <pcwalton@mimiga.net> | 2011-06-17 12:32:07 -0700 |
|---|---|---|
| committer | Patrick Walton <pcwalton@mimiga.net> | 2011-06-17 12:32:18 -0700 |
| commit | e43a3755dd062c4e0ed5727bec764e84f2fb7690 (patch) | |
| tree | 4ab2c9086f0dd0b86b12c7981857858f97cdd642 /src/comp | |
| parent | dfb806b367ea87df6670568590b30aca84facd80 (diff) | |
| download | rust-e43a3755dd062c4e0ed5727bec764e84f2fb7690.tar.gz rust-e43a3755dd062c4e0ed5727bec764e84f2fb7690.zip | |
rustc: Add a type_owns_heap_mem() predicate
Diffstat (limited to 'src/comp')
| -rw-r--r-- | src/comp/middle/ty.rs | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/comp/middle/ty.rs b/src/comp/middle/ty.rs index c2c46cb7e07..a1ed4f86ddd 100644 --- a/src/comp/middle/ty.rs +++ b/src/comp/middle/ty.rs @@ -986,6 +986,39 @@ fn type_is_signed(&ctxt cx, &t ty) -> bool { } } +fn type_owns_heap_mem(&ctxt cx, &t ty) -> bool { + alt (struct(cx, ty)) { + case (ty_ivec(_)) { ret true; } + case (ty_istr) { ret true; } + + case (ty_nil) { ret false; } + case (ty_bot) { ret false; } + case (ty_bool) { ret false; } + case (ty_int) { ret false; } + case (ty_float) { ret false; } + case (ty_uint) { ret false; } + case (ty_machine(_)) { ret false; } + case (ty_char) { ret false; } + case (ty_str) { ret false; } + case (ty_tag(_,_)) { ret false; } + case (ty_box(_)) { ret false; } + case (ty_vec(_)) { ret false; } + case (ty_ptr(_)) { ret false; } + case (ty_port(_)) { ret false; } + case (ty_chan(_)) { ret false; } + case (ty_task) { ret false; } + case (ty_tup(_)) { ret false; } + case (ty_rec(_)) { ret false; } + case (ty_fn(_,_,_,_,_)) { ret false; } + case (ty_native_fn(_,_,_)) { ret false; } + case (ty_obj(_)) { ret false; } + case (ty_var(_)) { fail "ty_var in type_owns_heap_mem"; } + case (ty_param(_)) { ret false; } + case (ty_type) { ret false; } + case (ty_native) { ret false; } + } +} + fn type_param(&ctxt cx, &t ty) -> option::t[uint] { alt (struct(cx, ty)) { case (ty_param(?id)) { ret some[uint](id); } |
