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(key: GlobalDataKey) -> 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 similarity index 58% rename from src/test/compile-fail/warn-ctypes-err-attr.rs rename to 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 or the MIT license -// , 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() { -}