Auto merge of #1126 - emilio:b, r=pepyakin
Minor version bump.
Again, just fixes, and I got FF to build with #1124.
diff --git a/src/ir/ty.rs b/src/ir/ty.rs
index bfb4c48..9a51c2b 100644
--- a/src/ir/ty.rs
+++ b/src/ir/ty.rs
@@ -925,18 +925,21 @@
CXCursor_TypeAliasDecl => {
let current = cur.cur_type();
- debug_assert!(current.kind() ==
- CXType_Typedef);
+ debug_assert_eq!(
+ current.kind(),
+ CXType_Typedef
+ );
name = current.spelling();
let inner_ty = cur.typedef_type()
.expect("Not valid Type?");
- inner =
- Item::from_ty(&inner_ty,
- cur,
- Some(potential_id),
- ctx);
+ inner = Ok(Item::from_ty_or_ref(
+ inner_ty,
+ cur,
+ Some(potential_id),
+ ctx,
+ ));
}
CXCursor_TemplateTypeParameter => {
let param =
diff --git a/tests/expectations/tests/issue-1118-using-forward-decl.rs b/tests/expectations/tests/issue-1118-using-forward-decl.rs
new file mode 100644
index 0000000..2753762
--- /dev/null
+++ b/tests/expectations/tests/issue-1118-using-forward-decl.rs
@@ -0,0 +1,119 @@
+/* automatically generated by rust-bindgen */
+
+
+#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
+
+
+pub type c = nsTArray;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct nsTArray_base {
+ pub d: *mut ::std::os::raw::c_int,
+}
+#[test]
+fn bindgen_test_layout_nsTArray_base() {
+ assert_eq!(
+ ::std::mem::size_of::<nsTArray_base>(),
+ 8usize,
+ concat!("Size of: ", stringify!(nsTArray_base))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<nsTArray_base>(),
+ 8usize,
+ concat!("Alignment of ", stringify!(nsTArray_base))
+ );
+ assert_eq!(
+ unsafe { &(*(0 as *const nsTArray_base)).d as *const _ as usize },
+ 0usize,
+ concat!(
+ "Alignment of field: ",
+ stringify!(nsTArray_base),
+ "::",
+ stringify!(d)
+ )
+ );
+}
+impl Default for nsTArray_base {
+ fn default() -> Self {
+ unsafe { ::std::mem::zeroed() }
+ }
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct nsTArray {
+ pub _base: nsTArray_base,
+}
+impl Default for nsTArray {
+ fn default() -> Self {
+ unsafe { ::std::mem::zeroed() }
+ }
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct nsIContent {
+ pub foo: nsTArray,
+}
+#[test]
+fn bindgen_test_layout_nsIContent() {
+ assert_eq!(
+ ::std::mem::size_of::<nsIContent>(),
+ 8usize,
+ concat!("Size of: ", stringify!(nsIContent))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<nsIContent>(),
+ 8usize,
+ concat!("Alignment of ", stringify!(nsIContent))
+ );
+ assert_eq!(
+ unsafe { &(*(0 as *const nsIContent)).foo as *const _ as usize },
+ 0usize,
+ concat!(
+ "Alignment of field: ",
+ stringify!(nsIContent),
+ "::",
+ stringify!(foo)
+ )
+ );
+}
+impl Default for nsIContent {
+ fn default() -> Self {
+ unsafe { ::std::mem::zeroed() }
+ }
+}
+extern "C" {
+ #[link_name = "\u{1}_Z35Gecko_GetAnonymousContentForElementv"]
+ pub fn Gecko_GetAnonymousContentForElement() -> *mut nsTArray;
+}
+#[test]
+fn __bindgen_test_layout_nsTArray_open0_ptr_nsIContent_close0_instantiation() {
+ assert_eq!(
+ ::std::mem::size_of::<nsTArray>(),
+ 8usize,
+ concat!("Size of template specialization: ", stringify!(nsTArray))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<nsTArray>(),
+ 8usize,
+ concat!(
+ "Alignment of template specialization: ",
+ stringify!(nsTArray)
+ )
+ );
+}
+#[test]
+fn __bindgen_test_layout_nsTArray_open0_ptr_nsIContent_close0_instantiation_1() {
+ assert_eq!(
+ ::std::mem::size_of::<nsTArray>(),
+ 8usize,
+ concat!("Size of template specialization: ", stringify!(nsTArray))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<nsTArray>(),
+ 8usize,
+ concat!(
+ "Alignment of template specialization: ",
+ stringify!(nsTArray)
+ )
+ );
+}
diff --git a/tests/headers/issue-1118-using-forward-decl.hpp b/tests/headers/issue-1118-using-forward-decl.hpp
new file mode 100644
index 0000000..b6ea63f
--- /dev/null
+++ b/tests/headers/issue-1118-using-forward-decl.hpp
@@ -0,0 +1,10 @@
+template <class> class nsTArray;
+template <class b> using c = nsTArray<b>;
+class nsTArray_base {
+ int *d;
+};
+template <class> class nsTArray : nsTArray_base {};
+class nsIContent {
+ nsTArray<nsIContent *> foo;
+};
+nsTArray<nsIContent*> *Gecko_GetAnonymousContentForElement();