Skip to content

Commit 52a8cde

Browse files
authored
Add support for enums with the wrapped static functions feature (#2415)
1 parent b865dbd commit 52a8cde

File tree

4 files changed

+24
-0
lines changed

4 files changed

+24
-0
lines changed

bindgen-tests/tests/expectations/tests/generated/wrap_static_fns.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,5 @@ int takes_alias__extern(func f) asm("takes_alias__extern");
1212
int takes_alias__extern(func f) { return takes_alias(f); }
1313
int takes_qualified__extern(const int *const *arg) asm("takes_qualified__extern");
1414
int takes_qualified__extern(const int *const *arg) { return takes_qualified(arg); }
15+
enum foo takes_enum__extern(const enum foo f) asm("takes_enum__extern");
16+
enum foo takes_enum__extern(const enum foo f) { return takes_enum(f); }

bindgen-tests/tests/expectations/tests/wrap-static-fns.rs

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bindgen-tests/tests/headers/wrap-static-fns.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,11 @@ static inline int takes_alias(func f) {
3131
static inline int takes_qualified(const int *const *arg) {
3232
return **arg;
3333
}
34+
35+
enum foo {
36+
BAR = 0x0,
37+
};
38+
39+
static inline enum foo takes_enum(const enum foo f) {
40+
return f;
41+
}

bindgen/codegen/serialize.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,14 @@ impl<'a> CSerialize<'a> for Type {
311311
CompKind::Union => write!(writer, "union {}", name)?,
312312
};
313313
}
314+
TypeKind::Enum(_enum_ty) => {
315+
if self.is_const() {
316+
write!(writer, "const ")?;
317+
}
318+
319+
let name = item.canonical_name(ctx);
320+
write!(writer, "enum {}", name)?;
321+
}
314322
ty => {
315323
return Err(CodegenError::Serialize {
316324
msg: format!("Cannot serialize type kind {:?}", ty),

0 commit comments

Comments
 (0)