From 43a79ac6b2e343e2aad2ddb07058c34b563ff821 Mon Sep 17 00:00:00 2001 From: Nico Chatzi Date: Sat, 10 Apr 2021 17:26:07 +0100 Subject: [PATCH] Fix docstring comment for constants --- src/codegen/mod.rs | 4 +++ tests/expectations/tests/issue-1995.rs | 37 ++++++++++++++++++++++++++ tests/headers/issue-1995.h | 12 +++++++++ 3 files changed, 53 insertions(+) create mode 100644 tests/expectations/tests/issue-1995.rs create mode 100644 tests/headers/issue-1995.h diff --git a/src/codegen/mod.rs b/src/codegen/mod.rs index e62b1a870..356807546 100644 --- a/src/codegen/mod.rs +++ b/src/codegen/mod.rs @@ -618,6 +618,10 @@ impl CodeGenerator for Var { return; } + if let Some(comment) = item.comment(ctx) { + result.push(attributes::doc(comment)); + } + let ty = self.ty().to_rust_ty_or_opaque(ctx, &()); if let Some(val) = self.val() { diff --git a/tests/expectations/tests/issue-1995.rs b/tests/expectations/tests/issue-1995.rs new file mode 100644 index 000000000..58e11eb29 --- /dev/null +++ b/tests/expectations/tests/issue-1995.rs @@ -0,0 +1,37 @@ +#![allow( + dead_code, + non_snake_case, + non_camel_case_types, + non_upper_case_globals +)] + +/// This is a constant that has a docstring +/// +/// And expected to be found in generated bindings code too. +pub const FOO: ::std::os::raw::c_int = 1; +/// This is a constant that has a docstring +/// +/// And expected to be found in generated bindings code too. +#[repr(C)] +#[derive(Debug, Default, Copy, Clone)] +pub struct Bar { + pub baz: ::std::os::raw::c_int, +} +#[test] +fn bindgen_test_layout_Bar() { + assert_eq!( + ::std::mem::size_of::(), + 4usize, + concat!("Size of: ", stringify!(Bar)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(Bar)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).baz as *const _ as usize }, + 0usize, + concat!("Offset of field: ", stringify!(Bar), "::", stringify!(baz)) + ); +} diff --git a/tests/headers/issue-1995.h b/tests/headers/issue-1995.h new file mode 100644 index 000000000..619f67354 --- /dev/null +++ b/tests/headers/issue-1995.h @@ -0,0 +1,12 @@ +/// This is a constant that has a docstring +/// +/// And expected to be found in generated bindings code too. +const int FOO = 1; + +/// This is a constant that has a docstring +/// +/// And expected to be found in generated bindings code too. +struct Bar +{ + int baz; +}; \ No newline at end of file