about summary refs log tree commit diff
path: root/src/rustc
diff options
context:
space:
mode:
authorNiko Matsakis <niko@alum.mit.edu>2012-05-18 19:05:31 -0700
committerNiko Matsakis <niko@alum.mit.edu>2012-05-18 19:07:19 -0700
commit19ec5a41ed98df980357a93d6938dc253106fd9d (patch)
tree27f4c5b17a16c3bf2ef85680909bcc2a3ad1cdbc /src/rustc
parentf1a46914c4241c05a5b44f6f8dad4630a150e292 (diff)
downloadrust-19ec5a41ed98df980357a93d6938dc253106fd9d.tar.gz
rust-19ec5a41ed98df980357a93d6938dc253106fd9d.zip
allow region ptrs to be cast to uints
Diffstat (limited to 'src/rustc')
-rw-r--r--src/rustc/middle/trans/base.rs15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/rustc/middle/trans/base.rs b/src/rustc/middle/trans/base.rs
index d55f4ae9e50..2e2ad6b826a 100644
--- a/src/rustc/middle/trans/base.rs
+++ b/src/rustc/middle/trans/base.rs
@@ -2620,11 +2620,16 @@ fn float_cast(bcx: block, lldsttype: TypeRef, llsrctype: TypeRef,
 enum cast_kind { cast_pointer, cast_integral, cast_float,
                 cast_enum, cast_other, }
 fn cast_type_kind(t: ty::t) -> cast_kind {
-    if ty::type_is_fp(t) { cast_float }
-    else if ty::type_is_unsafe_ptr(t) { cast_pointer }
-    else if ty::type_is_integral(t) { cast_integral }
-    else if ty::type_is_enum(t) { cast_enum }
-    else { cast_other }
+    alt ty::get(t).struct {
+      ty::ty_float(*)   {cast_float}
+      ty::ty_ptr(*)     {cast_pointer}
+      ty::ty_rptr(*)    {cast_pointer}
+      ty::ty_int(*)     {cast_integral}
+      ty::ty_uint(*)    {cast_integral}
+      ty::ty_bool       {cast_integral}
+      ty::ty_enum(*)    {cast_enum}
+      _                 {cast_other}
+    }
 }