From 2cd9d7bc88dc4e7c2a1fd25325eb95ff781395b7 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Thu, 11 Jul 2013 19:40:53 -0700 Subject: [PATCH] Expand ctypes warnings to warn about *int/*uint Also ends up fixing one case in libstd --- src/librustc/middle/lint.rs | 1 + src/libstd/unstable/global.rs | 4 ++-- src/rt/rust_builtin.cpp | 2 +- src/rt/rust_kernel.h | 2 +- ...warn-ctypes-err-attr.rs => lint-ctypes.rs} | 17 +++++++++------ src/test/compile-fail/warn-ctypes.rs | 21 ------------------- 6 files changed, 16 insertions(+), 31 deletions(-) rename src/test/compile-fail/{warn-ctypes-err-attr.rs => lint-ctypes.rs} (58%) delete mode 100644 src/test/compile-fail/warn-ctypes.rs diff --git a/src/librustc/middle/lint.rs b/src/librustc/middle/lint.rs index 0fc19ffd78e52..5b85e404797cb 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 285a8114cc240..af28879f73971 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 17f36e810cd1a..e6a3ad4394a21 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 4976dec149a02..09f73f9b7d855 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 adec8dc6d0d9d..a0c027b2d6b3f 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 28d21bb942904..0000000000000 --- 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() { -}