about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2013-07-11 19:40:53 -0700
committerAlex Crichton <alex@alexcrichton.com>2013-07-11 19:45:25 -0700
commit2cd9d7bc88dc4e7c2a1fd25325eb95ff781395b7 (patch)
treeac975054ab187f55981879d719de4f423dcbd9f4 /src
parente388a80c234d628c4d1fab77dc3e3f2c04cbefc5 (diff)
downloadrust-2cd9d7bc88dc4e7c2a1fd25325eb95ff781395b7.tar.gz
rust-2cd9d7bc88dc4e7c2a1fd25325eb95ff781395b7.zip
Expand ctypes warnings to warn about *int/*uint
Also ends up fixing one case in libstd
Diffstat (limited to 'src')
-rw-r--r--src/librustc/middle/lint.rs1
-rw-r--r--src/libstd/unstable/global.rs4
-rw-r--r--src/rt/rust_builtin.cpp2
-rw-r--r--src/rt/rust_kernel.h2
-rw-r--r--src/test/compile-fail/lint-ctypes.rs (renamed from src/test/compile-fail/warn-ctypes-err-attr.rs)17
-rw-r--r--src/test/compile-fail/warn-ctypes.rs21
6 files changed, 16 insertions, 31 deletions
diff --git a/src/librustc/middle/lint.rs b/src/librustc/middle/lint.rs
index 0fc19ffd78e..5b85e404797 100644
--- a/src/librustc/middle/lint.rs
+++ b/src/librustc/middle/lint.rs
@@ -741,6 +741,7 @@ fn check_item_ctypes(cx: &Context, it: &ast::item) {
                     _ => ()
                 }
             }
+            ast::ty_ptr(ref mt) => { check_ty(cx, mt.ty) }
             _ => ()
         }
     }
diff --git a/src/libstd/unstable/global.rs b/src/libstd/unstable/global.rs
index 285a8114cc2..af28879f739 100644
--- a/src/libstd/unstable/global.rs
+++ b/src/libstd/unstable/global.rs
@@ -28,7 +28,7 @@ avoid hitting the mutex.
 use cast::{transmute};
 use clone::Clone;
 use kinds::Send;
-use libc::{c_void};
+use libc::{c_void, intptr_t};
 use option::{Option, Some, None};
 use ops::Drop;
 use unstable::sync::{Exclusive, exclusive};
@@ -228,7 +228,7 @@ fn key_ptr<T:Send>(key: GlobalDataKey<T>) -> uint {
 }
 
 extern {
-    fn rust_get_global_data_ptr() -> *mut int;
+    fn rust_get_global_data_ptr() -> *mut intptr_t;
 }
 
 #[test]
diff --git a/src/rt/rust_builtin.cpp b/src/rt/rust_builtin.cpp
index 17f36e810cd..e6a3ad4394a 100644
--- a/src/rt/rust_builtin.cpp
+++ b/src/rt/rust_builtin.cpp
@@ -774,7 +774,7 @@ rust_register_exit_function(spawn_fn runner, fn_env_pair *f) {
     task->kernel->register_exit_function(runner, f);
 }
 
-extern "C" void *
+extern "C" intptr_t*
 rust_get_global_data_ptr() {
     rust_task *task = rust_get_current_task();
     return &task->kernel->global_data;
diff --git a/src/rt/rust_kernel.h b/src/rt/rust_kernel.h
index 4976dec149a..09f73f9b7d8 100644
--- a/src/rt/rust_kernel.h
+++ b/src/rt/rust_kernel.h
@@ -124,7 +124,7 @@ class rust_kernel {
 
 public:
     struct rust_env *env;
-    uintptr_t global_data;
+    intptr_t global_data;
 
     rust_kernel(rust_env *env);
 
diff --git a/src/test/compile-fail/warn-ctypes-err-attr.rs b/src/test/compile-fail/lint-ctypes.rs
index adec8dc6d0d..a0c027b2d6b 100644
--- a/src/test/compile-fail/warn-ctypes-err-attr.rs
+++ b/src/test/compile-fail/lint-ctypes.rs
@@ -8,14 +8,19 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-// error-pattern:found rust type
 #[deny(ctypes)];
 
-mod libc {
-    #[nolink]
-    pub extern {
-        pub fn malloc(size: int) -> *u8;
-    }
+use std::libc;
+
+#[nolink]
+extern {
+    pub fn bare_type1(size: int); //~ ERROR: found rust type
+    pub fn bare_type2(size: uint); //~ ERROR: found rust type
+    pub fn ptr_type1(size: *int); //~ ERROR: found rust type
+    pub fn ptr_type2(size: *uint); //~ ERROR: found rust type
+
+    pub fn good1(size: *libc::c_int);
+    pub fn good2(size: *libc::c_uint);
 }
 
 fn main() {
diff --git a/src/test/compile-fail/warn-ctypes.rs b/src/test/compile-fail/warn-ctypes.rs
deleted file mode 100644
index 28d21bb9429..00000000000
--- a/src/test/compile-fail/warn-ctypes.rs
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
-// file at the top-level directory of this distribution and at
-// http://rust-lang.org/COPYRIGHT.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-// compile-flags:-D ctypes
-// error-pattern:found rust type
-mod libc {
-    #[nolink]
-    extern {
-        pub fn malloc(size: int) -> *u8;
-    }
-}
-
-fn main() {
-}