summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/codegen/mod.rs5
-rw-r--r--tests/expectations/tests/issue-1025-unknown-enum-repr.rs12
-rw-r--r--tests/headers/issue-1025-unknown-enum-repr.hpp4
3 files changed, 20 insertions, 1 deletions
diff --git a/src/codegen/mod.rs b/src/codegen/mod.rs
index 0da01175..895422b0 100644
--- a/src/codegen/mod.rs
+++ b/src/codegen/mod.rs
@@ -2426,7 +2426,10 @@ impl CodeGenerator for Enum {
let repr =
self.repr()
.and_then(|repr| repr.try_to_rust_ty_or_opaque(ctx, &()).ok())
- .unwrap_or_else(|| helpers::ast_ty::raw_type(ctx, repr_name));
+ .unwrap_or_else(|| {
+ let repr_name = ctx.rust_ident_raw(repr_name);
+ quote! { #repr_name }
+ });
let mut builder = EnumBuilder::new(
&name,
diff --git a/tests/expectations/tests/issue-1025-unknown-enum-repr.rs b/tests/expectations/tests/issue-1025-unknown-enum-repr.rs
new file mode 100644
index 00000000..26510910
--- /dev/null
+++ b/tests/expectations/tests/issue-1025-unknown-enum-repr.rs
@@ -0,0 +1,12 @@
+/* automatically generated by rust-bindgen */
+
+
+#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
+
+
+#[repr(C)]
+#[derive(Debug, Default, Copy, Clone)]
+pub struct a {
+ pub _address: u8,
+}
+pub type a__bindgen_ty_1 = i32;
diff --git a/tests/headers/issue-1025-unknown-enum-repr.hpp b/tests/headers/issue-1025-unknown-enum-repr.hpp
new file mode 100644
index 00000000..589b3c25
--- /dev/null
+++ b/tests/headers/issue-1025-unknown-enum-repr.hpp
@@ -0,0 +1,4 @@
+
+template <typename> class a {
+ enum {};
+};