diff options
| author | Michael Sullivan <sully@msully.net> | 2012-06-15 11:48:04 -0700 |
|---|---|---|
| committer | Michael Sullivan <sully@msully.net> | 2012-06-15 11:48:04 -0700 |
| commit | 68670f631c22b1cab5eaa29aab4d97c94117c424 (patch) | |
| tree | 51a91741ec8ce520e41742e34173fa65ac179e07 /src/rustc | |
| parent | e6c613ffa514fc72bb7c818401b41a22ca03cdf0 (diff) | |
| download | rust-68670f631c22b1cab5eaa29aab4d97c94117c424.tar.gz rust-68670f631c22b1cab5eaa29aab4d97c94117c424.zip | |
Make type_is_pod handle more types.
Diffstat (limited to 'src/rustc')
| -rw-r--r-- | src/rustc/middle/ty.rs | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/rustc/middle/ty.rs b/src/rustc/middle/ty.rs index b7ceaa8ab47..d08ae902005 100644 --- a/src/rustc/middle/ty.rs +++ b/src/rustc/middle/ty.rs @@ -1876,6 +1876,8 @@ fn type_is_pod(cx: ctxt, ty: t) -> bool { ty_type | ty_ptr(_) { result = true; } // Boxed types ty_str | ty_box(_) | ty_uniq(_) | ty_vec(_) | ty_fn(_) | + ty_estr(vstore_uniq) | ty_estr(vstore_box) | + ty_evec(_, vstore_uniq) | ty_evec(_, vstore_box) | ty_iface(_, _) | ty_rptr(_,_) | ty_opaque_box { result = false; } // Structural types ty_enum(did, substs) { @@ -1897,7 +1899,7 @@ fn type_is_pod(cx: ctxt, ty: t) -> bool { for elts.each {|elt| if !type_is_pod(cx, elt) { result = false; } } } ty_estr(vstore_fixed(_)) { result = true; } - ty_evec(mt, vstore_fixed(_)) { + ty_evec(mt, vstore_fixed(_)) | ty_unboxed_vec(mt) { result = type_is_pod(cx, mt.ty); } ty_res(_, inner, substs) { @@ -1913,7 +1915,14 @@ fn type_is_pod(cx: ctxt, ty: t) -> bool { type_is_pod(cx, sty) }; } - _ { cx.sess.bug("unexpected type in type_is_pod"); } + + ty_estr(vstore_slice(*)) | ty_evec(_, vstore_slice(*)) { + result = false; + } + + ty_var(*) | ty_var_integral(*) | ty_self(*) { + cx.sess.bug("non concrete type in type_is_pod"); + } } ret result; |
