about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2013-07-12 21:40:36 -0700
committerbors <bors@rust-lang.org>2013-07-12 21:40:36 -0700
commitd582eeb1ec8e77234a26475bd70bf12a933b4efa (patch)
tree75a1b85319da4b646fc30e5a4f94d56f943ba172
parentd2cf2925943b8de3578eaccd00661ceffdd22d7e (diff)
parent2cd9d7bc88dc4e7c2a1fd25325eb95ff781395b7 (diff)
downloadrust-d582eeb1ec8e77234a26475bd70bf12a933b4efa.tar.gz
rust-d582eeb1ec8e77234a26475bd70bf12a933b4efa.zip
auto merge of #7734 : alexcrichton/rust/issue-3395, r=sanxiyn
Also ends up fixing one case in libstd. 

Closes #3395
-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 0afa1c16245..83eb2db2fe7 100644
--- a/src/librustc/middle/lint.rs
+++ b/src/librustc/middle/lint.rs
@@ -745,6 +745,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 4382e5b22a0..18e5583a330 100644
--- a/src/rt/rust_builtin.cpp
+++ b/src/rt/rust_builtin.cpp
@@ -769,7 +769,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() {
-}