Expand ctypes warnings to warn about *int/*uint

Also ends up fixing one case in libstd
This commit is contained in:
Alex Crichton 2013-07-11 19:40:53 -07:00
parent e388a80c23
commit 2cd9d7bc88
6 changed files with 16 additions and 31 deletions

View file

@ -741,6 +741,7 @@ fn check_item_ctypes(cx: &Context, it: &ast::item) {
_ => ()
}
}
ast::ty_ptr(ref mt) => { check_ty(cx, mt.ty) }
_ => ()
}
}

View file

@ -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]

View file

@ -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;

View file

@ -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);

View file

@ -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() {

View file

@ -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() {
}