diff --git a/src/codegen/mod.rs b/src/codegen/mod.rs index bf6af82b9d..7fa8b19c1e 100755 --- a/src/codegen/mod.rs +++ b/src/codegen/mod.rs @@ -1489,7 +1489,8 @@ impl ToRustTy for Type { } TypeKind::Function(ref fs) => { let ty = fs.to_rust_ty(ctx, item); - aster::AstBuilder::new().ty().option().build(ty) + let prefix = ctx.trait_prefix(); + quote_ty!(ctx.ext_cx(), ::$prefix::option::Option<$ty>) } TypeKind::Array(item, len) => { let inner = item.to_rust_ty(ctx); diff --git a/tests/expectations/tests/use-core.rs b/tests/expectations/tests/use-core.rs index 484105eaf6..b0900f5fa6 100644 --- a/tests/expectations/tests/use-core.rs +++ b/tests/expectations/tests/use-core.rs @@ -20,3 +20,5 @@ fn bindgen_test_layout_foo() { impl Clone for foo { fn clone(&self) -> Self { *self } } +pub type fooFunction = + ::core::option::Option; diff --git a/tests/headers/use-core.h b/tests/headers/use-core.h index 535d2b1529..42bb10d9d1 100644 --- a/tests/headers/use-core.h +++ b/tests/headers/use-core.h @@ -4,3 +4,5 @@ struct foo { int a, b; void* bar; }; + +typedef void (*fooFunction)(int bar);