diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2012-06-01 19:47:04 -0700 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2012-06-03 20:03:08 -0700 |
| commit | 01b5777c8b6e4c3f580aa9e256de96b4b4b92739 (patch) | |
| tree | 7166174a44a9f294fdaacc0c5bc447cafc482cea /src/libstd | |
| parent | b2ae333917c1ff0293fa93afa335e17608d0ca6e (diff) | |
| download | rust-01b5777c8b6e4c3f580aa9e256de96b4b4b92739.tar.gz rust-01b5777c8b6e4c3f580aa9e256de96b4b4b92739.zip | |
prohibit type parameters in native fns and other minor fixes
trans now can safely assert that it never sees a type param
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/dbg.rs | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/src/libstd/dbg.rs b/src/libstd/dbg.rs index 5278caf867e..6b8a4f36002 100644 --- a/src/libstd/dbg.rs +++ b/src/libstd/dbg.rs @@ -1,13 +1,23 @@ #[doc = "Unsafe debugging functions for inspecting values."]; +import unsafe::reinterpret_cast; + +export debug_tydesc; +export debug_opaque; +export debug_box; +export debug_tag; +export debug_fn; +export ptr_cast; +export refcount; + #[abi = "cdecl"] native mod rustrt { fn debug_tydesc(td: *sys::type_desc); - fn debug_opaque<T>(td: *sys::type_desc, x: T); - fn debug_box<T>(td: *sys::type_desc, x: @T); - fn debug_tag<T>(td: *sys::type_desc, x: T); - fn debug_fn<T>(td: *sys::type_desc, x: T); - fn debug_ptrcast<T, U>(td: *sys::type_desc, x: @T) -> @U; + fn debug_opaque(td: *sys::type_desc, x: *()); + fn debug_box(td: *sys::type_desc, x: *()); + fn debug_tag(td: *sys::type_desc, x: *()); + fn debug_fn(td: *sys::type_desc, x: *()); + fn debug_ptrcast(td: *sys::type_desc, x: *()) -> *(); } fn debug_tydesc<T>() { @@ -15,23 +25,25 @@ fn debug_tydesc<T>() { } fn debug_opaque<T>(x: T) { - rustrt::debug_opaque::<T>(sys::get_type_desc::<T>(), x); + rustrt::debug_opaque(sys::get_type_desc::<T>(), ptr::addr_of(x) as *()); } fn debug_box<T>(x: @T) { - rustrt::debug_box::<T>(sys::get_type_desc::<T>(), x); + rustrt::debug_box(sys::get_type_desc::<T>(), ptr::addr_of(x) as *()); } fn debug_tag<T>(x: T) { - rustrt::debug_tag::<T>(sys::get_type_desc::<T>(), x); + rustrt::debug_tag(sys::get_type_desc::<T>(), ptr::addr_of(x) as *()); } fn debug_fn<T>(x: T) { - rustrt::debug_fn::<T>(sys::get_type_desc::<T>(), x); + rustrt::debug_fn(sys::get_type_desc::<T>(), ptr::addr_of(x) as *()); } unsafe fn ptr_cast<T, U>(x: @T) -> @U { - ret rustrt::debug_ptrcast::<T, U>(sys::get_type_desc::<T>(), x); + reinterpret_cast( + rustrt::debug_ptrcast(sys::get_type_desc::<T>(), + reinterpret_cast(x))) } fn refcount<T>(a: @T) -> uint unsafe { |
