diff options
| author | Patrick Walton <pcwalton@mimiga.net> | 2012-05-17 17:20:58 -0700 |
|---|---|---|
| committer | Patrick Walton <pcwalton@mimiga.net> | 2012-05-17 17:20:58 -0700 |
| commit | 37abcda42b5060eafd65bf9fe6a6861efa5f0c15 (patch) | |
| tree | 579f85e9a5db71def3c6b656fe1fe878aa749956 /src/rustc | |
| parent | 7f45ba4744cec88bfac0b1672b13409aa5ebb42f (diff) | |
| download | rust-37abcda42b5060eafd65bf9fe6a6861efa5f0c15.tar.gz rust-37abcda42b5060eafd65bf9fe6a6861efa5f0c15.zip | |
rustc: Make type_is_pod class-aware
Diffstat (limited to 'src/rustc')
| -rw-r--r-- | src/rustc/middle/ty.rs | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/rustc/middle/ty.rs b/src/rustc/middle/ty.rs index 0501a6fa815..3b8fe334dc4 100644 --- a/src/rustc/middle/ty.rs +++ b/src/rustc/middle/ty.rs @@ -1686,6 +1686,13 @@ fn type_is_pod(cx: ctxt, ty: t) -> bool { ty_constr(subt, _) { result = type_is_pod(cx, subt); } ty_param(_, _) { result = false; } ty_opaque_closure_ptr(_) { result = true; } + ty_class(did, substs) { + result = vec::any(lookup_class_fields(cx, did)) { |f| + let fty = ty::lookup_item_type(cx, f.id); + let sty = subst(cx, substs, fty.ty); + type_is_pod(cx, sty) + }; + } _ { cx.sess.bug("unexpected type in type_is_pod"); } } |
