summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorNiko Matsakis <niko@alum.mit.edu>2012-06-01 19:47:04 -0700
committerNiko Matsakis <niko@alum.mit.edu>2012-06-03 20:03:08 -0700
commit01b5777c8b6e4c3f580aa9e256de96b4b4b92739 (patch)
tree7166174a44a9f294fdaacc0c5bc447cafc482cea /src/libstd
parentb2ae333917c1ff0293fa93afa335e17608d0ca6e (diff)
downloadrust-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.rs32
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 {