diff --git a/src/ir/item.rs b/src/ir/item.rs index d863d9077b..a92036398b 100644 --- a/src/ir/item.rs +++ b/src/ir/item.rs @@ -1512,7 +1512,7 @@ impl ClangItemParser for Item { let result = Type::from_clang_ty(id, ty, location, parent_id, ctx); let relevant_parent_id = parent_id.unwrap_or(current_module); let ret = match result { - Ok(ParseResult::AlreadyResolved(ty)) => Ok(ty.expect_type_id(ctx)), + Ok(ParseResult::AlreadyResolved(ty)) => Ok(ty.as_type_id_unchecked()), Ok(ParseResult::New(item, declaration)) => { ctx.add_item( Item::new( diff --git a/tests/expectations/tests/issue-1127-not-yet-type.rs b/tests/expectations/tests/issue-1127-not-yet-type.rs new file mode 100644 index 0000000000..755eef28b1 --- /dev/null +++ b/tests/expectations/tests/issue-1127-not-yet-type.rs @@ -0,0 +1,11 @@ +/* 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, +} diff --git a/tests/headers/issue-1127-not-yet-type.hpp b/tests/headers/issue-1127-not-yet-type.hpp new file mode 100644 index 0000000000..8202e75326 --- /dev/null +++ b/tests/headers/issue-1127-not-yet-type.hpp @@ -0,0 +1,13 @@ +// bindgen-flags: -- -std=c++11 + +template struct A; +template struct _Map_base; +template +struct _Map_base<_Pair, _Traits, true> { + using __hashtable_base = A<_Traits>; + using key_type = typename __hashtable_base::key_type; + using mapped_type = typename _Pair::type; + mapped_type &at(const key_type &); +}; +template +auto _Map_base<_Pair, _Traits, true>::at(const key_type &) -> mapped_type & {}