diff options
-rw-r--r-- | libbindgen/src/codegen/mod.rs | 10 | ||||
-rw-r--r-- | libbindgen/tests/expectations/tests/resolved_type_def_function.rs | 3 |
2 files changed, 6 insertions, 7 deletions
diff --git a/libbindgen/src/codegen/mod.rs b/libbindgen/src/codegen/mod.rs index 192eb674..e9141b9c 100644 --- a/libbindgen/src/codegen/mod.rs +++ b/libbindgen/src/codegen/mod.rs @@ -2010,14 +2010,10 @@ impl CodeGenerator for Function { } let signature_item = ctx.resolve_item(self.signature()); - let signature = signature_item.kind().expect_type(); + let signature = signature_item.kind().expect_type().canonical_type(ctx); let signature = match *signature.kind() { TypeKind::Function(ref sig) => sig, - TypeKind::ResolvedTypeRef(ref item_id) => { - let item = ctx.resolve_item(*item_id); - return self.codegen(ctx, result, _whitelisted_items, item); - }, - _ => panic!("How?") + _ => panic!("Signature kind is not a Function: {:?}", signature), }; let fndecl = utils::rust_fndecl_from_signature(ctx, signature_item); @@ -2268,7 +2264,7 @@ mod utils { -> P<ast::FnDecl> { use codegen::ToRustTy; - let signature = sig.kind().expect_type(); + let signature = sig.kind().expect_type().canonical_type(ctx); let signature = match *signature.kind() { TypeKind::Function(ref sig) => sig, _ => panic!("How?"), diff --git a/libbindgen/tests/expectations/tests/resolved_type_def_function.rs b/libbindgen/tests/expectations/tests/resolved_type_def_function.rs index fb308fa4..83f07dd0 100644 --- a/libbindgen/tests/expectations/tests/resolved_type_def_function.rs +++ b/libbindgen/tests/expectations/tests/resolved_type_def_function.rs @@ -5,3 +5,6 @@ pub type FuncType = ::std::option::Option<unsafe extern "C" fn()>; +extern "C" { + pub fn Func(); +} |