From af6d59c29a9b7a4c43ae857eb03b653cf598c852 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= Date: Tue, 14 Feb 2017 01:18:26 +0100 Subject: [PATCH] codegen: Use the constness of the inner type when converting array function arguments. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes https://github.com/servo/rust-bindgen/issues/509 I'm actually surprised we had no tests for this. Signed-off-by: Emilio Cobos Álvarez --- src/codegen/mod.rs | 2 +- tests/expectations/tests/const_array_fn_arg.rs | 9 +++++++++ tests/headers/const_array_fn_arg.h | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 tests/expectations/tests/const_array_fn_arg.rs create mode 100644 tests/headers/const_array_fn_arg.h diff --git a/src/codegen/mod.rs b/src/codegen/mod.rs index 99400f7a16..d5c38aa8ac 100644 --- a/src/codegen/mod.rs +++ b/src/codegen/mod.rs @@ -2828,7 +2828,7 @@ mod utils { // [1]: http://c0x.coding-guidelines.com/6.7.5.3.html let arg_ty = match *arg_ty.canonical_type(ctx).kind() { TypeKind::Array(t, _) => { - t.to_rust_ty(ctx).to_ptr(arg_ty.is_const(), ctx.span()) + t.to_rust_ty(ctx).to_ptr(ctx.resolve_type(t).is_const(), ctx.span()) }, TypeKind::Pointer(inner) => { let inner = ctx.resolve_item(inner); diff --git a/tests/expectations/tests/const_array_fn_arg.rs b/tests/expectations/tests/const_array_fn_arg.rs new file mode 100644 index 0000000000..623d28b202 --- /dev/null +++ b/tests/expectations/tests/const_array_fn_arg.rs @@ -0,0 +1,9 @@ +/* automatically generated by rust-bindgen */ + + +#![allow(non_snake_case)] + + +extern "C" { + pub fn f(a: *const ::std::os::raw::c_int); +} diff --git a/tests/headers/const_array_fn_arg.h b/tests/headers/const_array_fn_arg.h new file mode 100644 index 0000000000..ebe2286137 --- /dev/null +++ b/tests/headers/const_array_fn_arg.h @@ -0,0 +1 @@ +void f(const int a[]);