about summary refs log tree commit diff
path: root/src/rustc
diff options
context:
space:
mode:
authorMichael Sullivan <sully@msully.net>2012-06-15 11:48:04 -0700
committerMichael Sullivan <sully@msully.net>2012-06-15 11:48:04 -0700
commit68670f631c22b1cab5eaa29aab4d97c94117c424 (patch)
tree51a91741ec8ce520e41742e34173fa65ac179e07 /src/rustc
parente6c613ffa514fc72bb7c818401b41a22ca03cdf0 (diff)
downloadrust-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.rs13
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;