diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2012-05-18 19:05:31 -0700 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2012-05-18 19:07:19 -0700 |
| commit | 19ec5a41ed98df980357a93d6938dc253106fd9d (patch) | |
| tree | 27f4c5b17a16c3bf2ef85680909bcc2a3ad1cdbc /src/rustc | |
| parent | f1a46914c4241c05a5b44f6f8dad4630a150e292 (diff) | |
| download | rust-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.rs | 15 |
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} + } } |
