summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rwxr-xr-x[-rw-r--r--]tests/expectations/lib.rs3
-rw-r--r--tests/expectations/tests/381-decltype-alias.rs9
-rw-r--r--tests/expectations/tests/anon_enum_trait.rs8
-rw-r--r--tests/expectations/tests/anon_union.rs34
-rw-r--r--tests/expectations/tests/auto.rs8
-rw-r--r--tests/expectations/tests/bad-namespace-parenthood-inheritance.rs8
-rw-r--r--tests/expectations/tests/class_nested.rs2
-rw-r--r--tests/expectations/tests/class_with_dtor.rs2
-rw-r--r--tests/expectations/tests/constant-non-specialized-tp.rs19
-rw-r--r--tests/expectations/tests/constructor-tp.rs8
-rw-r--r--tests/expectations/tests/crtp.rs43
-rw-r--r--tests/expectations/tests/dash_language.rs8
-rw-r--r--tests/expectations/tests/empty_template_param_name.rs8
-rw-r--r--tests/expectations/tests/enum_in_template_with_typedef.rs8
-rw-r--r--tests/expectations/tests/eval-variadic-template-parameter.rs8
-rw-r--r--tests/expectations/tests/forward-inherit-struct.rs13
-rw-r--r--tests/expectations/tests/in_class_typedef.rs11
-rw-r--r--tests/expectations/tests/inherit-namespaced.rs13
-rw-r--r--tests/expectations/tests/inherit_named.rs8
-rw-r--r--tests/expectations/tests/inner_template_self.rs10
-rw-r--r--tests/expectations/tests/issue-358.rs5
-rw-r--r--tests/expectations/tests/issue-446.rs12
-rw-r--r--tests/expectations/tests/issue-493.rs85
-rw-r--r--tests/expectations/tests/issue-544-stylo-creduce-2.rs15
-rw-r--r--tests/expectations/tests/issue-544-stylo-creduce.rs14
-rw-r--r--tests/expectations/tests/maddness-is-avoidable.rs18
-rw-r--r--tests/expectations/tests/no_copy.rs8
-rw-r--r--tests/expectations/tests/opaque_pointer.rs7
-rw-r--r--tests/expectations/tests/opaque_typedef.rs10
-rw-r--r--tests/expectations/tests/partial-specialization-and-inheritance.rs44
-rw-r--r--tests/expectations/tests/replace_use.rs10
-rw-r--r--tests/expectations/tests/size_t_template.rs4
-rw-r--r--tests/expectations/tests/struct_with_typedef_template_arg.rs9
-rw-r--r--tests/expectations/tests/template-fun-ty.rs26
-rw-r--r--tests/expectations/tests/template-param-usage-0.rs14
-rw-r--r--tests/expectations/tests/template-param-usage-1.rs11
-rw-r--r--tests/expectations/tests/template-param-usage-10.rs25
-rw-r--r--tests/expectations/tests/template-param-usage-11.rs11
-rw-r--r--tests/expectations/tests/template-param-usage-12.rs23
-rw-r--r--tests/expectations/tests/template-param-usage-13.rs20
-rw-r--r--tests/expectations/tests/template-param-usage-14.rs20
-rw-r--r--tests/expectations/tests/template-param-usage-15.rs23
-rw-r--r--tests/expectations/tests/template-param-usage-2.rs22
-rw-r--r--tests/expectations/tests/template-param-usage-3.rs24
-rw-r--r--tests/expectations/tests/template-param-usage-4.rs19
-rw-r--r--tests/expectations/tests/template-param-usage-5.rs15
-rw-r--r--tests/expectations/tests/template-param-usage-6.rs12
-rw-r--r--tests/expectations/tests/template-param-usage-7.rs16
-rw-r--r--tests/expectations/tests/template-param-usage-8.rs17
-rw-r--r--tests/expectations/tests/template-param-usage-9.rs22
-rw-r--r--tests/expectations/tests/template.rs63
-rw-r--r--tests/expectations/tests/template_typedef_transitive_param.rs8
-rw-r--r--tests/expectations/tests/template_typedefs.rs9
-rw-r--r--tests/expectations/tests/templateref_opaque.rs18
-rw-r--r--tests/expectations/tests/typeref.rs15
-rw-r--r--tests/expectations/tests/union_template.rs21
-rw-r--r--tests/expectations/tests/variadic_template_function.rs8
-rw-r--r--tests/expectations/tests/what_is_going_on.rs7
-rw-r--r--tests/expectations/tests/whitelist_basic.rs1
-rw-r--r--tests/headers/issue-544-stylo-creduce-2.hpp8
-rw-r--r--tests/headers/issue-544-stylo-creduce.hpp5
-rw-r--r--tests/headers/partial-specialization-and-inheritance.hpp40
-rw-r--r--tests/headers/template-param-usage-0.hpp6
-rw-r--r--tests/headers/template-param-usage-1.hpp6
-rw-r--r--tests/headers/template-param-usage-10.hpp14
-rw-r--r--tests/headers/template-param-usage-11.hpp6
-rw-r--r--tests/headers/template-param-usage-12.hpp11
-rw-r--r--tests/headers/template-param-usage-13.hpp11
-rw-r--r--tests/headers/template-param-usage-14.hpp11
-rw-r--r--tests/headers/template-param-usage-15.hpp11
-rw-r--r--tests/headers/template-param-usage-2.hpp10
-rw-r--r--tests/headers/template-param-usage-3.hpp12
-rw-r--r--tests/headers/template-param-usage-4.hpp11
-rw-r--r--tests/headers/template-param-usage-5.hpp8
-rw-r--r--tests/headers/template-param-usage-6.hpp8
-rw-r--r--tests/headers/template-param-usage-7.hpp10
-rw-r--r--tests/headers/template-param-usage-8.hpp10
-rw-r--r--tests/headers/template-param-usage-9.hpp12
78 files changed, 759 insertions, 393 deletions
diff --git a/tests/expectations/lib.rs b/tests/expectations/lib.rs
index e69de29b..562dc554 100644..100755
--- a/tests/expectations/lib.rs
+++ b/tests/expectations/lib.rs
@@ -0,0 +1,3 @@
+#![allow(dead_code)]
+#![allow(non_camel_case_types)]
+#![allow(non_upper_case_globals)]
diff --git a/tests/expectations/tests/381-decltype-alias.rs b/tests/expectations/tests/381-decltype-alias.rs
index 45b0cfdd..632cdd31 100644
--- a/tests/expectations/tests/381-decltype-alias.rs
+++ b/tests/expectations/tests/381-decltype-alias.rs
@@ -5,11 +5,8 @@
#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct std_allocator_traits<_Alloc> {
+#[derive(Debug, Default, Copy, Clone)]
+pub struct std_allocator_traits {
pub _address: u8,
- pub _phantom_0: ::std::marker::PhantomData<_Alloc>,
-}
-impl <_Alloc> Default for std_allocator_traits<_Alloc> {
- fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
+pub type std_allocator_traits___size_type<_Alloc> = _Alloc;
diff --git a/tests/expectations/tests/anon_enum_trait.rs b/tests/expectations/tests/anon_enum_trait.rs
index 31eaca83..92c697a8 100644
--- a/tests/expectations/tests/anon_enum_trait.rs
+++ b/tests/expectations/tests/anon_enum_trait.rs
@@ -5,10 +5,9 @@
#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct DataType<_Tp> {
+#[derive(Debug, Default, Copy, Clone)]
+pub struct DataType {
pub _address: u8,
- pub _phantom_0: ::std::marker::PhantomData<_Tp>,
}
pub type DataType_value_type<_Tp> = _Tp;
pub type DataType_work_type<_Tp> = DataType_value_type<_Tp>;
@@ -27,9 +26,6 @@ pub const DataType_type_: DataType__bindgen_ty_1 =
#[repr(i32)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum DataType__bindgen_ty_1 { generic_type = 0, }
-impl <_Tp> Default for DataType<_Tp> {
- fn default() -> Self { unsafe { ::std::mem::zeroed() } }
-}
#[repr(C)]
#[derive(Debug, Default, Copy)]
pub struct Foo {
diff --git a/tests/expectations/tests/anon_union.rs b/tests/expectations/tests/anon_union.rs
index 4418bc77..eb600cc7 100644
--- a/tests/expectations/tests/anon_union.rs
+++ b/tests/expectations/tests/anon_union.rs
@@ -30,12 +30,11 @@ impl <T> ::std::fmt::Debug for __BindgenUnionField<T> {
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
-pub struct TErrorResult<T> {
+pub struct TErrorResult {
pub mResult: ::std::os::raw::c_int,
- pub __bindgen_anon_1: TErrorResult__bindgen_ty_1<T>,
+ pub __bindgen_anon_1: TErrorResult__bindgen_ty_1,
pub mMightHaveUnreported: bool,
pub mUnionState: TErrorResult_UnionState,
- pub _phantom_0: ::std::marker::PhantomData<T>,
}
pub const TErrorResult_UnionState_HasException: TErrorResult_UnionState =
TErrorResult_UnionState::HasMessage;
@@ -44,31 +43,28 @@ pub const TErrorResult_UnionState_HasException: TErrorResult_UnionState =
pub enum TErrorResult_UnionState { HasMessage = 0, }
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
-pub struct TErrorResult_Message<T> {
+pub struct TErrorResult_Message {
pub _address: u8,
- pub _phantom_0: ::std::marker::PhantomData<T>,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
-pub struct TErrorResult_DOMExceptionInfo<T> {
+pub struct TErrorResult_DOMExceptionInfo {
pub _address: u8,
- pub _phantom_0: ::std::marker::PhantomData<T>,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
-pub struct TErrorResult__bindgen_ty_1<T> {
- pub mMessage: __BindgenUnionField<*mut TErrorResult_Message<T>>,
- pub mDOMExceptionInfo: __BindgenUnionField<*mut TErrorResult_DOMExceptionInfo<T>>,
+pub struct TErrorResult__bindgen_ty_1 {
+ pub mMessage: __BindgenUnionField<*mut TErrorResult_Message>,
+ pub mDOMExceptionInfo: __BindgenUnionField<*mut TErrorResult_DOMExceptionInfo>,
pub bindgen_union_field: u64,
- pub _phantom_0: ::std::marker::PhantomData<T>,
}
-impl <T> Default for TErrorResult<T> {
+impl Default for TErrorResult {
fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
#[derive(Debug, Copy)]
pub struct ErrorResult {
- pub _base: TErrorResult<::std::os::raw::c_int>,
+ pub _base: TErrorResult,
}
#[test]
fn bindgen_test_layout_ErrorResult() {
@@ -84,13 +80,11 @@ impl Default for ErrorResult {
fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[test]
-fn __bindgen_test_layout_template_1() {
- assert_eq!(::std::mem::size_of::<TErrorResult<::std::os::raw::c_int>>() ,
- 24usize , concat ! (
+fn __bindgen_test_layout_TErrorResult_instantiation_21() {
+ assert_eq!(::std::mem::size_of::<TErrorResult>() , 24usize , concat ! (
"Size of template specialization: " , stringify ! (
- TErrorResult<::std::os::raw::c_int> ) ));
- assert_eq!(::std::mem::align_of::<TErrorResult<::std::os::raw::c_int>>() ,
- 8usize , concat ! (
+ TErrorResult ) ));
+ assert_eq!(::std::mem::align_of::<TErrorResult>() , 8usize , concat ! (
"Alignment of template specialization: " , stringify ! (
- TErrorResult<::std::os::raw::c_int> ) ));
+ TErrorResult ) ));
}
diff --git a/tests/expectations/tests/auto.rs b/tests/expectations/tests/auto.rs
index 4551f703..7f9bbf44 100644
--- a/tests/expectations/tests/auto.rs
+++ b/tests/expectations/tests/auto.rs
@@ -21,13 +21,9 @@ impl Clone for Foo {
fn clone(&self) -> Self { *self }
}
#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct Bar<T> {
+#[derive(Debug, Default, Copy, Clone)]
+pub struct Bar {
pub _address: u8,
- pub _phantom_0: ::std::marker::PhantomData<T>,
-}
-impl <T> Default for Bar<T> {
- fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
extern "C" {
#[link_name = "_Z5Test2v"]
diff --git a/tests/expectations/tests/bad-namespace-parenthood-inheritance.rs b/tests/expectations/tests/bad-namespace-parenthood-inheritance.rs
index b0c91e8c..4074dd02 100644
--- a/tests/expectations/tests/bad-namespace-parenthood-inheritance.rs
+++ b/tests/expectations/tests/bad-namespace-parenthood-inheritance.rs
@@ -5,13 +5,9 @@
#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct std_char_traits<_CharT> {
+#[derive(Debug, Default, Copy, Clone)]
+pub struct std_char_traits {
pub _address: u8,
- pub _phantom_0: ::std::marker::PhantomData<_CharT>,
-}
-impl <_CharT> Default for std_char_traits<_CharT> {
- fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
#[derive(Debug, Default, Copy)]
diff --git a/tests/expectations/tests/class_nested.rs b/tests/expectations/tests/class_nested.rs
index 6ddcf91b..b92976f6 100644
--- a/tests/expectations/tests/class_nested.rs
+++ b/tests/expectations/tests/class_nested.rs
@@ -77,7 +77,7 @@ extern "C" {
pub static mut var: A_B;
}
#[test]
-fn __bindgen_test_layout_template_1() {
+fn __bindgen_test_layout_A_D_instantiation_16() {
assert_eq!(::std::mem::size_of::<A_D<::std::os::raw::c_int>>() , 4usize ,
concat ! (
"Size of template specialization: " , stringify ! (
diff --git a/tests/expectations/tests/class_with_dtor.rs b/tests/expectations/tests/class_with_dtor.rs
index 4c1d2718..495889f2 100644
--- a/tests/expectations/tests/class_with_dtor.rs
+++ b/tests/expectations/tests/class_with_dtor.rs
@@ -34,7 +34,7 @@ impl Default for WithoutDtor {
fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[test]
-fn __bindgen_test_layout_template_1() {
+fn __bindgen_test_layout_HandleWithDtor_instantiation_10() {
assert_eq!(::std::mem::size_of::<HandleWithDtor<::std::os::raw::c_int>>()
, 8usize , concat ! (
"Size of template specialization: " , stringify ! (
diff --git a/tests/expectations/tests/constant-non-specialized-tp.rs b/tests/expectations/tests/constant-non-specialized-tp.rs
index f2aa5a75..a17e261b 100644
--- a/tests/expectations/tests/constant-non-specialized-tp.rs
+++ b/tests/expectations/tests/constant-non-specialized-tp.rs
@@ -5,26 +5,17 @@
#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct Test<Args> {
+#[derive(Debug, Default, Copy, Clone)]
+pub struct Test {
pub _address: u8,
- pub _phantom_0: ::std::marker::PhantomData<Args>,
-}
-impl <Args> Default for Test<Args> {
- fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct Outer<T> {
+#[derive(Debug, Default, Copy, Clone)]
+pub struct Outer {
pub _address: u8,
- pub _phantom_0: ::std::marker::PhantomData<T>,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
-pub struct Outer_Inner<T> {
+pub struct Outer_Inner {
pub _address: u8,
- pub _phantom_0: ::std::marker::PhantomData<T>,
-}
-impl <T> Default for Outer<T> {
- fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
diff --git a/tests/expectations/tests/constructor-tp.rs b/tests/expectations/tests/constructor-tp.rs
index ee04d3c5..6ba52f22 100644
--- a/tests/expectations/tests/constructor-tp.rs
+++ b/tests/expectations/tests/constructor-tp.rs
@@ -5,13 +5,9 @@
#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct Foo<T> {
+#[derive(Debug, Default, Copy, Clone)]
+pub struct Foo {
pub _address: u8,
- pub _phantom_0: ::std::marker::PhantomData<T>,
-}
-impl <T> Default for Foo<T> {
- fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
#[derive(Debug, Default, Copy)]
diff --git a/tests/expectations/tests/crtp.rs b/tests/expectations/tests/crtp.rs
index 7143f50e..8a83e198 100644
--- a/tests/expectations/tests/crtp.rs
+++ b/tests/expectations/tests/crtp.rs
@@ -5,13 +5,9 @@
#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct Base<T> {
+#[derive(Debug, Default, Copy, Clone)]
+pub struct Base {
pub _address: u8,
- pub _phantom_0: ::std::marker::PhantomData<T>,
-}
-impl <T> Default for Base<T> {
- fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
#[derive(Debug, Copy)]
@@ -32,13 +28,9 @@ impl Default for Derived {
fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
-#[derive(Debug)]
-pub struct BaseWithDestructor<T> {
+#[derive(Debug, Default)]
+pub struct BaseWithDestructor {
pub _address: u8,
- pub _phantom_0: ::std::marker::PhantomData<T>,
-}
-impl <T> Default for BaseWithDestructor<T> {
- fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
#[derive(Debug)]
@@ -59,22 +51,21 @@ impl Default for DerivedFromBaseWithDestructor {
fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[test]
-fn __bindgen_test_layout_template_1() {
- assert_eq!(::std::mem::size_of::<Base<Derived>>() , 1usize , concat ! (
- "Size of template specialization: " , stringify ! (
- Base<Derived> ) ));
- assert_eq!(::std::mem::align_of::<Base<Derived>>() , 1usize , concat ! (
- "Alignment of template specialization: " , stringify ! (
- Base<Derived> ) ));
+fn __bindgen_test_layout_Base_instantiation_9() {
+ assert_eq!(::std::mem::size_of::<Base>() , 1usize , concat ! (
+ "Size of template specialization: " , stringify ! ( Base ) ));
+ assert_eq!(::std::mem::align_of::<Base>() , 1usize , concat ! (
+ "Alignment of template specialization: " , stringify ! ( Base )
+ ));
}
#[test]
-fn __bindgen_test_layout_template_2() {
- assert_eq!(::std::mem::size_of::<BaseWithDestructor<DerivedFromBaseWithDestructor>>()
- , 1usize , concat ! (
+fn __bindgen_test_layout_BaseWithDestructor_instantiation_12() {
+ assert_eq!(::std::mem::size_of::<BaseWithDestructor>() , 1usize , concat !
+ (
"Size of template specialization: " , stringify ! (
- BaseWithDestructor<DerivedFromBaseWithDestructor> ) ));
- assert_eq!(::std::mem::align_of::<BaseWithDestructor<DerivedFromBaseWithDestructor>>()
- , 1usize , concat ! (
+ BaseWithDestructor ) ));
+ assert_eq!(::std::mem::align_of::<BaseWithDestructor>() , 1usize , concat
+ ! (
"Alignment of template specialization: " , stringify ! (
- BaseWithDestructor<DerivedFromBaseWithDestructor> ) ));
+ BaseWithDestructor ) ));
}
diff --git a/tests/expectations/tests/dash_language.rs b/tests/expectations/tests/dash_language.rs
index 24df1014..385c39c6 100644
--- a/tests/expectations/tests/dash_language.rs
+++ b/tests/expectations/tests/dash_language.rs
@@ -5,11 +5,7 @@
#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct Foo<T> {
+#[derive(Debug, Default, Copy, Clone)]
+pub struct Foo {
pub bar: ::std::os::raw::c_int,
- pub _phantom_0: ::std::marker::PhantomData<T>,
-}
-impl <T> Default for Foo<T> {
- fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
diff --git a/tests/expectations/tests/empty_template_param_name.rs b/tests/expectations/tests/empty_template_param_name.rs
index 6ee8fce3..2bd5a570 100644
--- a/tests/expectations/tests/empty_template_param_name.rs
+++ b/tests/expectations/tests/empty_template_param_name.rs
@@ -6,11 +6,7 @@
pub type __void_t = ::std::os::raw::c_void;
#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __iterator_traits<_Iterator> {
+#[derive(Debug, Default, Copy, Clone)]
+pub struct __iterator_traits {
pub _address: u8,
- pub _phantom_0: ::std::marker::PhantomData<_Iterator>,
-}
-impl <_Iterator> Default for __iterator_traits<_Iterator> {
- fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
diff --git a/tests/expectations/tests/enum_in_template_with_typedef.rs b/tests/expectations/tests/enum_in_template_with_typedef.rs
index e4725b83..2b956963 100644
--- a/tests/expectations/tests/enum_in_template_with_typedef.rs
+++ b/tests/expectations/tests/enum_in_template_with_typedef.rs
@@ -5,10 +5,9 @@
#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct std_fbstring_core<Char> {
+#[derive(Debug, Default, Copy, Clone)]
+pub struct std_fbstring_core {
pub _address: u8,
- pub _phantom_0: ::std::marker::PhantomData<Char>,
}
pub type std_fbstring_core_category_type = u8;
pub const std_fbstring_core_Category_Bar: std_fbstring_core_Category =
@@ -16,6 +15,3 @@ pub const std_fbstring_core_Category_Bar: std_fbstring_core_Category =
#[repr(u8)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum std_fbstring_core_Category { Foo = 0, }
-impl <Char> Default for std_fbstring_core<Char> {
- fn default() -> Self { unsafe { ::std::mem::zeroed() } }
-}
diff --git a/tests/expectations/tests/eval-variadic-template-parameter.rs b/tests/expectations/tests/eval-variadic-template-parameter.rs
index acc6f34c..701aab9f 100644
--- a/tests/expectations/tests/eval-variadic-template-parameter.rs
+++ b/tests/expectations/tests/eval-variadic-template-parameter.rs
@@ -5,11 +5,7 @@
#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct B<T> {
+#[derive(Debug, Default, Copy, Clone)]
+pub struct B {
pub _address: u8,
- pub _phantom_0: ::std::marker::PhantomData<T>,
-}
-impl <T> Default for B<T> {
- fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
diff --git a/tests/expectations/tests/forward-inherit-struct.rs b/tests/expectations/tests/forward-inherit-struct.rs
index 1057e70c..322854dd 100644
--- a/tests/expectations/tests/forward-inherit-struct.rs
+++ b/tests/expectations/tests/forward-inherit-struct.rs
@@ -6,19 +6,14 @@
#[repr(C)]
#[derive(Debug, Copy, Clone)]
-pub struct Rooted<T> {
+pub struct Rooted {
pub _address: u8,
- pub _phantom_0: ::std::marker::PhantomData<T>,
}
-impl <T> Default for Rooted<T> {
+impl Default for Rooted {
fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct js_RootedBase<T> {
+#[derive(Debug, Default, Copy, Clone)]
+pub struct js_RootedBase {
pub _address: u8,
- pub _phantom_0: ::std::marker::PhantomData<T>,
-}
-impl <T> Default for js_RootedBase<T> {
- fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
diff --git a/tests/expectations/tests/in_class_typedef.rs b/tests/expectations/tests/in_class_typedef.rs
index 3634a631..613c8cab 100644
--- a/tests/expectations/tests/in_class_typedef.rs
+++ b/tests/expectations/tests/in_class_typedef.rs
@@ -5,20 +5,15 @@
#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct Foo<T> {
+#[derive(Debug, Default, Copy, Clone)]
+pub struct Foo {
pub _address: u8,
- pub _phantom_0: ::std::marker::PhantomData<T>,
}
pub type Foo_elem_type<T> = T;
pub type Foo_ptr_type<T> = *mut T;
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
-pub struct Foo_Bar<T> {
+pub struct Foo_Bar {
pub x: ::std::os::raw::c_int,
pub y: ::std::os::raw::c_int,
- pub _phantom_0: ::std::marker::PhantomData<T>,
-}
-impl <T> Default for Foo<T> {
- fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
diff --git a/tests/expectations/tests/inherit-namespaced.rs b/tests/expectations/tests/inherit-namespaced.rs
index e5d5f875..fcd8de97 100644
--- a/tests/expectations/tests/inherit-namespaced.rs
+++ b/tests/expectations/tests/inherit-namespaced.rs
@@ -5,20 +5,15 @@
#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct js_RootedBase<T> {
+#[derive(Debug, Default, Copy, Clone)]
+pub struct js_RootedBase {
pub _address: u8,
- pub _phantom_0: ::std::marker::PhantomData<T>,
-}
-impl <T> Default for js_RootedBase<T> {
- fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
-pub struct Rooted<T> {
+pub struct Rooted {
pub _address: u8,
- pub _phantom_0: ::std::marker::PhantomData<T>,
}
-impl <T> Default for Rooted<T> {
+impl Default for Rooted {
fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
diff --git a/tests/expectations/tests/inherit_named.rs b/tests/expectations/tests/inherit_named.rs
index 31c4bee9..703df9ea 100644
--- a/tests/expectations/tests/inherit_named.rs
+++ b/tests/expectations/tests/inherit_named.rs
@@ -5,13 +5,9 @@
#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct Wohoo<T> {
+#[derive(Debug, Default, Copy, Clone)]
+pub struct Wohoo {
pub _address: u8,
- pub _phantom_0: ::std::marker::PhantomData<T>,
-}
-impl <T> Default for Wohoo<T> {
- fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
diff --git a/tests/expectations/tests/inner_template_self.rs b/tests/expectations/tests/inner_template_self.rs
index 3510fa7c..d75c280d 100644
--- a/tests/expectations/tests/inner_template_self.rs
+++ b/tests/expectations/tests/inner_template_self.rs
@@ -6,17 +6,17 @@
#[repr(C)]
#[derive(Debug, Copy, Clone)]
-pub struct LinkedList<T> {
- pub next: *mut LinkedList<T>,
- pub prev: *mut LinkedList<T>,
+pub struct LinkedList {
+ pub next: *mut LinkedList,
+ pub prev: *mut LinkedList,
}
-impl <T> Default for LinkedList<T> {
+impl Default for LinkedList {
fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
#[derive(Debug, Copy)]
pub struct InstantiateIt {
- pub m_list: LinkedList<::std::os::raw::c_int>,
+ pub m_list: LinkedList,
}
#[test]
fn bindgen_test_layout_InstantiateIt() {
diff --git a/tests/expectations/tests/issue-358.rs b/tests/expectations/tests/issue-358.rs
index d3be3c43..e574bd01 100644
--- a/tests/expectations/tests/issue-358.rs
+++ b/tests/expectations/tests/issue-358.rs
@@ -6,11 +6,10 @@
#[repr(C)]
#[derive(Debug, Copy, Clone)]
-pub struct JS_PersistentRooted<c> {
+pub struct JS_PersistentRooted {
pub _base: a,
- pub _phantom_0: ::std::marker::PhantomData<c>,
}
-impl <c> Default for JS_PersistentRooted<c> {
+impl Default for JS_PersistentRooted {
fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
diff --git a/tests/expectations/tests/issue-446.rs b/tests/expectations/tests/issue-446.rs
index fa736bcc..13204c1a 100644
--- a/tests/expectations/tests/issue-446.rs
+++ b/tests/expectations/tests/issue-446.rs
@@ -6,17 +6,17 @@
#[repr(C)]
#[derive(Debug, Copy, Clone)]
-pub struct List<Elem> {
- pub next: *mut List<Elem>,
+pub struct List {
+ pub next: *mut List,
}
-impl <Elem> Default for List<Elem> {
+impl Default for List {
fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
-pub struct PersistentRooted<GcThing> {
- pub root_list: List<PersistentRooted<GcThing>>,
+pub struct PersistentRooted {
+ pub root_list: List,
}
-impl <GcThing> Default for PersistentRooted<GcThing> {
+impl Default for PersistentRooted {
fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
diff --git a/tests/expectations/tests/issue-493.rs b/tests/expectations/tests/issue-493.rs
index a2246ca6..155834a3 100644
--- a/tests/expectations/tests/issue-493.rs
+++ b/tests/expectations/tests/issue-493.rs
@@ -29,28 +29,21 @@ impl <T> ::std::fmt::Debug for __BindgenUnionField<T> {
}
}
#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct basic_string<_CharT, _Traits, _Allocator> {
+#[derive(Debug, Default, Copy, Clone)]
+pub struct basic_string {
pub _address: u8,
- pub _phantom_0: ::std::marker::PhantomData<_CharT>,
- pub _phantom_1: ::std::marker::PhantomData<_Traits>,
- pub _phantom_2: ::std::marker::PhantomData<_Allocator>,
}
pub type basic_string_size_type = ::std::os::raw::c_ulonglong;
pub type basic_string_value_type = ::std::os::raw::c_schar;
pub type basic_string_pointer = *mut basic_string_value_type;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
-pub struct basic_string___long<_CharT, _Traits, _Allocator> {
+pub struct basic_string___long {
pub __cap_: basic_string_size_type,
pub __size_: basic_string_size_type,
pub __data_: basic_string_pointer,
- pub _phantom_0: ::std::marker::PhantomData<_CharT>,
- pub _phantom_1: ::std::marker::PhantomData<_Traits>,
- pub _phantom_2: ::std::marker::PhantomData<_Allocator>,
}
-impl <_CharT, _Traits, _Allocator> Default for
- basic_string___long<_CharT, _Traits, _Allocator> {
+impl Default for basic_string___long {
fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
pub const basic_string___min_cap: basic_string__bindgen_ty_1 =
@@ -60,42 +53,28 @@ pub const basic_string___min_cap: basic_string__bindgen_ty_1 =
pub enum basic_string__bindgen_ty_1 { __min_cap = 0, }
#[repr(C)]
#[derive(Debug, Copy, Clone)]
-pub struct basic_string___short<_CharT, _Traits, _Allocator> {
- pub __bindgen_anon_1: basic_string___short__bindgen_ty_1<_CharT, _Traits,
- _Allocator>,
+pub struct basic_string___short {
+ pub __bindgen_anon_1: basic_string___short__bindgen_ty_1,
pub __data_: *mut basic_string_value_type,
- pub _phantom_0: ::std::marker::PhantomData<_CharT>,
- pub _phantom_1: ::std::marker::PhantomData<_Traits>,
- pub _phantom_2: ::std::marker::PhantomData<_Allocator>,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
-pub struct basic_string___short__bindgen_ty_1<_CharT, _Traits, _Allocator> {
+pub struct basic_string___short__bindgen_ty_1 {
pub __size_: __BindgenUnionField<::std::os::raw::c_uchar>,
pub __lx: __BindgenUnionField<basic_string_value_type>,
pub bindgen_union_field: u8,
- pub _phantom_0: ::std::marker::PhantomData<_CharT>,
- pub _phantom_1: ::std::marker::PhantomData<_Traits>,
- pub _phantom_2: ::std::marker::PhantomData<_Allocator>,
}
-impl <_CharT, _Traits, _Allocator> Default for
- basic_string___short<_CharT, _Traits, _Allocator> {
+impl Default for basic_string___short {
fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
#[derive(Copy, Clone)]
-pub struct basic_string___ulx<_CharT, _Traits, _Allocator> {
- pub __lx: __BindgenUnionField<basic_string___long<_CharT, _Traits,
- _Allocator>>,
- pub __lxx: __BindgenUnionField<basic_string___short<_CharT, _Traits,
- _Allocator>>,
+pub struct basic_string___ulx {
+ pub __lx: __BindgenUnionField<basic_string___long>,
+ pub __lxx: __BindgenUnionField<basic_string___short>,
pub bindgen_union_field: [u8; 0usize],
- pub _phantom_0: ::std::marker::PhantomData<_CharT>,
- pub _phantom_1: ::std::marker::PhantomData<_Traits>,
- pub _phantom_2: ::std::marker::PhantomData<_Allocator>,
}
-impl <_CharT, _Traits, _Allocator> Default for
- basic_string___ulx<_CharT, _Traits, _Allocator> {
+impl Default for basic_string___ulx {
fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
pub const basic_string___n_words: basic_string__bindgen_ty_2 =
@@ -105,48 +84,28 @@ pub const basic_string___n_words: basic_string__bindgen_ty_2 =
pub enum basic_string__bindgen_ty_2 { __n_words = 0, }
#[repr(C)]
#[derive(Debug, Copy, Clone)]
-pub struct basic_string___raw<_CharT, _Traits, _Allocator> {
+pub struct basic_string___raw {
pub __words: *mut basic_string_size_type,
- pub _phantom_0: ::std::marker::PhantomData<_CharT>,
- pub _phantom_1: ::std::marker::PhantomData<_Traits>,
- pub _phantom_2: ::std::marker::PhantomData<_Allocator>,
}
-impl <_CharT, _Traits, _Allocator> Default for
- basic_string___raw<_CharT, _Traits, _Allocator> {
+impl Default for basic_string___raw {
fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
#[derive(Copy, Clone)]
-pub struct basic_string___rep<_CharT, _Traits, _Allocator> {
- pub __bindgen_anon_1: basic_string___rep__bindgen_ty_1<_CharT, _Traits,
- _Allocator>,
- pub _phantom_0: ::std::marker::PhantomData<_CharT>,
- pub _phantom_1: ::std::marker::PhantomData<_Traits>,
- pub _phantom_2: ::std::marker::PhantomData<_Allocator>,
+pub struct basic_string___rep {
+ pub __bindgen_anon_1: basic_string___rep__bindgen_ty_1,
}
#[repr(C)]
#[derive(Copy, Clone)]
-pub struct basic_string___rep__bindgen_ty_1<_CharT, _Traits, _Allocator> {
- pub __l: __BindgenUnionField<basic_string___long<_CharT, _Traits,
- _Allocator>>,
- pub __s: __BindgenUnionField<basic_string___short<_CharT, _Traits,
- _Allocator>>,
- pub __r: __BindgenUnionField<basic_string___raw<_CharT, _Traits,
- _Allocator>>,
+pub struct basic_string___rep__bindgen_ty_1 {
+ pub __l: __BindgenUnionField<basic_string___long>,
+ pub __s: __BindgenUnionField<basic_string___short>,
+ pub __r: __BindgenUnionField<basic_string___raw>,
pub bindgen_union_field: [u8; 0usize],
- pub _phantom_0: ::std::marker::PhantomData<_CharT>,
- pub _phantom_1: ::std::marker::PhantomData<_Traits>,
- pub _phantom_2: ::std::marker::PhantomData<_Allocator>,
-}
-impl <_CharT, _Traits, _Allocator> Default for
- basic_string___rep__bindgen_ty_1<_CharT, _Traits, _Allocator> {
- fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
-impl <_CharT, _Traits, _Allocator> Default for
- basic_string___rep<_CharT, _Traits, _Allocator> {
+impl Default for basic_string___rep__bindgen_ty_1 {
fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
-impl <_CharT, _Traits, _Allocator> Default for
- basic_string<_CharT, _Traits, _Allocator> {
+impl Default for basic_string___rep {
fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
diff --git a/tests/expectations/tests/issue-544-stylo-creduce-2.rs b/tests/expectations/tests/issue-544-stylo-creduce-2.rs
new file mode 100644
index 00000000..c0fae845
--- /dev/null
+++ b/tests/expectations/tests/issue-544-stylo-creduce-2.rs
@@ -0,0 +1,15 @@
+/* automatically generated by rust-bindgen */
+
+
+#![allow(non_snake_case)]
+
+
+#[repr(C)]
+pub struct Foo {
+ pub member: Foo_SecondAlias,
+}
+pub type Foo_FirstAlias = [u8; 0usize];
+pub type Foo_SecondAlias = [u8; 0usize];
+impl Default for Foo {
+ fn default() -> Self { unsafe { ::std::mem::zeroed() } }
+}
diff --git a/tests/expectations/tests/issue-544-stylo-creduce.rs b/tests/expectations/tests/issue-544-stylo-creduce.rs
new file mode 100644
index 00000000..88cc0d87
--- /dev/null
+++ b/tests/expectations/tests/issue-544-stylo-creduce.rs
@@ -0,0 +1,14 @@
+/* automatically generated by rust-bindgen */
+
+
+#![allow(non_snake_case)]
+
+
+#[repr(C)]
+#[derive(Debug, Default, Copy)]
+pub struct a {
+ pub _address: u8,
+}
+impl Clone for a {
+ fn clone(&self) -> Self { *self }
+}
diff --git a/tests/expectations/tests/maddness-is-avoidable.rs b/tests/expectations/tests/maddness-is-avoidable.rs
index 2fb5e540..09c1c921 100644
--- a/tests/expectations/tests/maddness-is-avoidable.rs
+++ b/tests/expectations/tests/maddness-is-avoidable.rs
@@ -5,22 +5,12 @@
#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct RefPtr<T> {
+#[derive(Debug, Default, Copy, Clone)]
+pub struct RefPtr {
pub _address: u8,
- pub _phantom_0: ::std::marker::PhantomData<T>,
}
#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct RefPtr_Proxy<T, R, Args> {
+#[derive(Debug, Default, Copy, Clone)]
+pub struct RefPtr_Proxy {
pub _address: u8,
- pub _phantom_0: ::std::marker::PhantomData<T>,
- pub _phantom_1: ::std::marker::PhantomData<R>,
- pub _phantom_2: ::std::marker::PhantomData<Args>,
-}
-impl <T, R, Args> Default for RefPtr_Proxy<T, R, Args> {
- fn default() -> Self { unsafe { ::std::mem::zeroed() } }
-}
-impl <T> Default for RefPtr<T> {
- fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
diff --git a/tests/expectations/tests/no_copy.rs b/tests/expectations/tests/no_copy.rs
index 3590241f..a75f891c 100644
--- a/tests/expectations/tests/no_copy.rs
+++ b/tests/expectations/tests/no_copy.rs
@@ -6,11 +6,7 @@
/** <div rustbindgen nocopy></div> */
#[repr(C)]
-#[derive(Debug)]
-pub struct CopiableButWait<T> {
+#[derive(Debug, Default)]
+pub struct CopiableButWait {
pub whatever: ::std::os::raw::c_int,
- pub _phantom_0: ::std::marker::PhantomData<T>,
-}
-impl <T> Default for CopiableButWait<T> {
- fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
diff --git a/tests/expectations/tests/opaque_pointer.rs b/tests/expectations/tests/opaque_pointer.rs
index 15b01db4..2e1890a8 100644
--- a/tests/expectations/tests/opaque_pointer.rs
+++ b/tests/expectations/tests/opaque_pointer.rs
@@ -27,16 +27,15 @@ impl Clone for OtherOpaque {
*/
#[repr(C)]
#[derive(Debug, Copy, Clone)]
-pub struct Opaque<T> {
- pub _phantom_0: ::std::marker::PhantomData<T>,
+pub struct Opaque {
}
-impl <T> Default for Opaque<T> {
+impl Default for Opaque {
fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
#[derive(Debug, Copy)]
pub struct WithOpaquePtr {
- pub whatever: *mut Opaque<::std::os::raw::c_int>,
+ pub whatever: *mut (),
pub other: u32,
pub t: OtherOpaque,
}
diff --git a/tests/expectations/tests/opaque_typedef.rs b/tests/expectations/tests/opaque_typedef.rs
index d6d5ac5d..51951faf 100644
--- a/tests/expectations/tests/opaque_typedef.rs
+++ b/tests/expectations/tests/opaque_typedef.rs
@@ -5,14 +5,10 @@
#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct RandomTemplate<T> {
+#[derive(Debug, Default, Copy, Clone)]
+pub struct RandomTemplate {
pub _address: u8,
- pub _phantom_0: ::std::marker::PhantomData<T>,
-}
-impl <T> Default for RandomTemplate<T> {
- fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
/** <div rustbindgen opaque></div> */
pub type ShouldBeOpaque = [u8; 0usize];
-pub type ShouldNotBeOpaque = RandomTemplate<f32>;
+pub type ShouldNotBeOpaque = RandomTemplate;
diff --git a/tests/expectations/tests/partial-specialization-and-inheritance.rs b/tests/expectations/tests/partial-specialization-and-inheritance.rs
new file mode 100644
index 00000000..24225934
--- /dev/null
+++ b/tests/expectations/tests/partial-specialization-and-inheritance.rs
@@ -0,0 +1,44 @@
+/* automatically generated by rust-bindgen */
+
+
+#![allow(non_snake_case)]
+
+
+#[repr(C)]
+#[derive(Debug, Default, Copy, Clone)]
+pub struct Base {
+ pub _address: u8,
+}
+#[repr(C)]
+#[derive(Debug, Default, Copy, Clone)]
+pub struct Derived {
+ pub b: bool,
+}
+#[test]
+fn __bindgen_test_layout__bindgen_ty_id_20_instantiation_14() {
+ assert_eq!(::std::mem::size_of::<[u32; 2usize]>() , 8usize , concat ! (
+ "Size of template specialization: " , stringify ! (
+ [u32; 2usize] ) ));
+ assert_eq!(::std::mem::align_of::<[u32; 2usize]>() , 4usize , concat ! (
+ "Alignment of template specialization: " , stringify ! (
+ [u32; 2usize] ) ));
+}
+#[repr(C)]
+#[derive(Debug, Default, Copy)]
+pub struct Usage {
+ pub _address: u8,
+}
+extern "C" {
+ #[link_name = "_ZN5Usage13static_memberE"]
+ pub static mut Usage_static_member: [u32; 2usize];
+}
+#[test]
+fn bindgen_test_layout_Usage() {
+ assert_eq!(::std::mem::size_of::<Usage>() , 1usize , concat ! (
+ "Size of: " , stringify ! ( Usage ) ));
+ assert_eq! (::std::mem::align_of::<Usage>() , 1usize , concat ! (
+ "Alignment of " , stringify ! ( Usage ) ));
+}
+impl Clone for Usage {
+ fn clone(&self) -> Self { *self }
+}
diff --git a/tests/expectations/tests/replace_use.rs b/tests/expectations/tests/replace_use.rs
index d93121d3..6cdc3263 100644
--- a/tests/expectations/tests/replace_use.rs
+++ b/tests/expectations/tests/replace_use.rs
@@ -8,18 +8,14 @@
* <div rustbindgen replaces="nsTArray"></div>
*/
#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nsTArray<T> {
+#[derive(Debug, Default, Copy, Clone)]
+pub struct nsTArray {
pub y: ::std::os::raw::c_uint,
- pub _phantom_0: ::std::marker::PhantomData<T>,
-}
-impl <T> Default for nsTArray<T> {
- fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
#[derive(Debug, Copy)]
pub struct Test {
- pub a: nsTArray<::std::os::raw::c_long>,
+ pub a: nsTArray,
}
#[test]
fn bindgen_test_layout_Test() {
diff --git a/tests/expectations/tests/size_t_template.rs b/tests/expectations/tests/size_t_template.rs
index 4d81651e..b2680869 100644
--- a/tests/expectations/tests/size_t_template.rs
+++ b/tests/expectations/tests/size_t_template.rs
@@ -5,7 +5,6 @@
#[repr(C)]
-#[derive(Debug, Copy)]
pub struct C {
pub arr: [u32; 3usize],
}
@@ -21,9 +20,6 @@ fn bindgen_test_layout_C() {
"Alignment of field: " , stringify ! ( C ) , "::" , stringify
! ( arr ) ));
}
-impl Clone for C {
- fn clone(&self) -> Self { *self }
-}
impl Default for C {
fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
diff --git a/tests/expectations/tests/struct_with_typedef_template_arg.rs b/tests/expectations/tests/struct_with_typedef_template_arg.rs
index f882c65d..93620e59 100644
--- a/tests/expectations/tests/struct_with_typedef_template_arg.rs
+++ b/tests/expectations/tests/struct_with_typedef_template_arg.rs
@@ -5,14 +5,9 @@
#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct Proxy<T, Args> {
+#[derive(Debug, Default, Copy, Clone)]
+pub struct Proxy {
pub _address: u8,
- pub _phantom_0: ::std::marker::PhantomData<T>,
- pub _phantom_1: ::std::marker::PhantomData<Args>,
}
pub type Proxy_foo<T> =
::std::option::Option<unsafe extern "C" fn(bar: *mut T)>;
-impl <T, Args> Default for Proxy<T, Args> {
- fn default() -> Self { unsafe { ::std::mem::zeroed() } }
-}
diff --git a/tests/expectations/tests/template-fun-ty.rs b/tests/expectations/tests/template-fun-ty.rs
index b894920f..05351d7d 100644
--- a/tests/expectations/tests/template-fun-ty.rs
+++ b/tests/expectations/tests/template-fun-ty.rs
@@ -5,36 +5,22 @@
#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct Foo<T> {
+#[derive(Debug, Default, Copy, Clone)]
+pub struct Foo {
pub _address: u8,
- pub _phantom_0: ::std::marker::PhantomData<T>,
}
pub type Foo_FunctionPtr<T> =
::std::option::Option<unsafe extern "C" fn() -> T>;
-impl <T> Default for Foo<T> {
- fn default() -> Self { unsafe { ::std::mem::zeroed() } }
-}
#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct RefPtr<T> {
+#[derive(Debug, Default, Copy, Clone)]
+pub struct RefPtr {
pub _address: u8,
- pub _phantom_0: ::std::marker::PhantomData<T>,
}
#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct RefPtr_Proxy<T, R, Args> {
+#[derive(Debug, Default, Copy, Clone)]
+pub struct RefPtr_Proxy {
pub _address: u8,
- pub _phantom_0: ::std::marker::PhantomData<T>,
- pub _phantom_1: ::std::marker::PhantomData<R>,
- pub _phantom_2: ::std::marker::PhantomData<Args>,
}
pub type RefPtr_Proxy_member_function<R, Args> =
::std::option::Option<unsafe extern "C" fn(arg1: Args) -> R>;
-impl <T, R, Args> Default for RefPtr_Proxy<T, R, Args> {
- fn default() -> Self { unsafe { ::std::mem::zeroed() } }
-}
-impl <T> Default for RefPtr<T> {
- fn default() -> Self { unsafe { ::std::mem::zeroed() } }
-}
pub type Returner<T> = ::std::option::Option<unsafe extern "C" fn() -> T>;
diff --git a/tests/expectations/tests/template-param-usage-0.rs b/tests/expectations/tests/template-param-usage-0.rs
new file mode 100644
index 00000000..494001f7
--- /dev/null
+++ b/tests/expectations/tests/template-param-usage-0.rs
@@ -0,0 +1,14 @@
+/* automatically generated by rust-bindgen */
+
+
+#![allow(non_snake_case)]
+
+
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct UsesTemplateParameter<T> {
+ pub t: T,
+}
+impl <T> Default for UsesTemplateParameter<T> {
+ fn default() -> Self { unsafe { ::std::mem::zeroed() } }
+}
diff --git a/tests/expectations/tests/template-param-usage-1.rs b/tests/expectations/tests/template-param-usage-1.rs
new file mode 100644
index 00000000..0fd8719b
--- /dev/null
+++ b/tests/expectations/tests/template-param-usage-1.rs
@@ -0,0 +1,11 @@
+/* automatically generated by rust-bindgen */
+
+
+#![allow(non_snake_case)]
+
+
+#[repr(C)]
+#[derive(Debug, Default, Copy, Clone)]
+pub struct DoesNotUseTemplateParameter {
+ pub x: ::std::os::raw::c_int,
+}
diff --git a/tests/expectations/tests/template-param-usage-10.rs b/tests/expectations/tests/template-param-usage-10.rs
new file mode 100644
index 00000000..95d200b5
--- /dev/null
+++ b/tests/expectations/tests/template-param-usage-10.rs
@@ -0,0 +1,25 @@
+/* automatically generated by rust-bindgen */
+
+
+#![allow(non_snake_case)]
+
+
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct DoublyIndirectUsage<T, U> {
+ pub doubly_indirect: DoublyIndirectUsage_IndirectUsage<T, U>,
+}
+pub type DoublyIndirectUsage_Aliased<T> = T;
+pub type DoublyIndirectUsage_Typedefed<U> = U;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct DoublyIndirectUsage_IndirectUsage<T, U> {
+ pub member: DoublyIndirectUsage_Aliased<T>,
+ pub another: DoublyIndirectUsage_Typedefed<U>,
+}
+impl <T, U> Default for DoublyIndirectUsage_IndirectUsage<T, U> {
+ fn default() -> Self { unsafe { ::std::mem::zeroed() } }
+}
+impl <T, U> Default for DoublyIndirectUsage<T, U> {
+ fn default() -> Self { unsafe { ::std::mem::zeroed() } }
+}
diff --git a/tests/expectations/tests/template-param-usage-11.rs b/tests/expectations/tests/template-param-usage-11.rs
new file mode 100644
index 00000000..a8959b99
--- /dev/null
+++ b/tests/expectations/tests/template-param-usage-11.rs
@@ -0,0 +1,11 @@
+/* automatically generated by rust-bindgen */
+
+
+#![allow(non_snake_case)]
+
+
+#[repr(C)]
+#[derive(Debug, Default, Copy, Clone)]
+pub struct DoesNotUseT {
+ pub _address: u8,
+}
diff --git a/tests/expectations/tests/template-param-usage-12.rs b/tests/expectations/tests/template-param-usage-12.rs
new file mode 100644
index 00000000..0c31111e
--- /dev/null
+++ b/tests/expectations/tests/template-param-usage-12.rs
@@ -0,0 +1,23 @@
+/* automatically generated by rust-bindgen */
+
+
+#![allow(non_snake_case)]
+
+
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct BaseUsesT<T> {
+ pub t: *mut T,
+}
+impl <T> Default for BaseUsesT<T> {
+ fn default() -> Self { unsafe { ::std::mem::zeroed() } }
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct CrtpUsesU<U> {
+ pub _base: BaseUsesT<CrtpUsesU<U>>,
+ pub usage: U,
+}
+impl <U> Default for CrtpUsesU<U> {
+ fn default() -> Self { unsafe { ::std::mem::zeroed() } }
+}
diff --git a/tests/expectations/tests/template-param-usage-13.rs b/tests/expectations/tests/template-param-usage-13.rs
new file mode 100644
index 00000000..c77da097
--- /dev/null
+++ b/tests/expectations/tests/template-param-usage-13.rs
@@ -0,0 +1,20 @@
+/* automatically generated by rust-bindgen */
+
+
+#![allow(non_snake_case)]
+
+
+#[repr(C)]
+#[derive(Debug, Default, Copy, Clone)]
+pub struct BaseIgnoresT {
+ pub x: ::std::os::raw::c_int,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct CrtpUsesU<U> {
+ pub _base: BaseIgnoresT,
+ pub usage: U,
+}
+impl <U> Default for CrtpUsesU<U> {
+ fn default() -> Self { unsafe { ::std::mem::zeroed() } }
+}
diff --git a/tests/expectations/tests/template-param-usage-14.rs b/tests/expectations/tests/template-param-usage-14.rs
new file mode 100644
index 00000000..fae4afdc
--- /dev/null
+++ b/tests/expectations/tests/template-param-usage-14.rs
@@ -0,0 +1,20 @@
+/* automatically generated by rust-bindgen */
+
+
+#![allow(non_snake_case)]
+
+
+#[repr(C)]
+#[derive(Debug, Default, Copy, Clone)]
+pub struct BaseIgnoresT {
+ pub x: ::std::os::raw::c_int,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct CrtpIgnoresU {
+ pub _base: BaseIgnoresT,
+ pub y: ::std::os::raw::c_int,
+}
+impl Default for CrtpIgnoresU {
+ fn default() -> Self { unsafe { ::std::mem::zeroed() } }
+}
diff --git a/tests/expectations/tests/template-param-usage-15.rs b/tests/expectations/tests/template-param-usage-15.rs
new file mode 100644
index 00000000..a653e089
--- /dev/null
+++ b/tests/expectations/tests/template-param-usage-15.rs
@@ -0,0 +1,23 @@
+/* automatically generated by rust-bindgen */
+
+
+#![allow(non_snake_case)]
+
+
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct BaseUsesT<T> {
+ pub usage: *mut T,
+}
+impl <T> Default for BaseUsesT<T> {
+ fn default() -> Self { unsafe { ::std::mem::zeroed() } }
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct CrtpIgnoresU {
+ pub _base: BaseUsesT<CrtpIgnoresU>,
+ pub y: ::std::os::raw::c_int,
+}
+impl Default for CrtpIgnoresU {
+ fn default() -> Self { unsafe { ::std::mem::zeroed() } }
+}
diff --git a/tests/expectations/tests/template-param-usage-2.rs b/tests/expectations/tests/template-param-usage-2.rs
new file mode 100644
index 00000000..6dc21b68
--- /dev/null
+++ b/tests/expectations/tests/template-param-usage-2.rs
@@ -0,0 +1,22 @@
+/* automatically generated by rust-bindgen */
+
+
+#![allow(non_snake_case)]
+
+
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct UsesTemplateParameter<T> {
+ pub t: T,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct UsesTemplateParameter_AlsoUsesTemplateParameter<T> {
+ pub also: T,
+}
+impl <T> Default for UsesTemplateParameter_AlsoUsesTemplateParameter<T> {
+ fn default() -> Self { unsafe { ::std::mem::zeroed() } }
+}
+impl <T> Default for UsesTemplateParameter<T> {
+ fn default() -> Self { unsafe { ::std::mem::zeroed() } }
+}
diff --git a/tests/expectations/tests/template-param-usage-3.rs b/tests/expectations/tests/template-param-usage-3.rs
new file mode 100644
index 00000000..a7ff22f9
--- /dev/null
+++ b/tests/expectations/tests/template-param-usage-3.rs
@@ -0,0 +1,24 @@
+/* automatically generated by rust-bindgen */
+
+
+#![allow(non_snake_case)]
+
+
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct UsesTemplateParameter<T> {
+ pub t: T,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct UsesTemplateParameter_AlsoUsesTemplateParameterAndMore<T, U> {
+ pub also: T,
+ pub more: U,
+}
+impl <T, U> Default for
+ UsesTemplateParameter_AlsoUsesTemplateParameterAndMore<T, U> {
+ fn default() -> Self { unsafe { ::std::mem::zeroed() } }
+}
+impl <T> Default for UsesTemplateParameter<T> {
+ fn default() -> Self { unsafe { ::std::mem::zeroed() } }
+}
diff --git a/tests/expectations/tests/template-param-usage-4.rs b/tests/expectations/tests/template-param-usage-4.rs
new file mode 100644
index 00000000..31f8872d
--- /dev/null
+++ b/tests/expectations/tests/template-param-usage-4.rs
@@ -0,0 +1,19 @@
+/* automatically generated by rust-bindgen */
+
+
+#![allow(non_snake_case)]
+
+
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct UsesTemplateParameter<T> {
+ pub t: T,
+}
+#[repr(C)]
+#[derive(Debug, Default, Copy, Clone)]
+pub struct UsesTemplateParameter_DoesNotUseTemplateParameters {
+ pub x: ::std::os::raw::c_int,
+}
+impl <T> Default for UsesTemplateParameter<T> {
+ fn default() -> Self { unsafe { ::std::mem::zeroed() } }
+}
diff --git a/tests/expectations/tests/template-param-usage-5.rs b/tests/expectations/tests/template-param-usage-5.rs
new file mode 100644
index 00000000..5a9caf32
--- /dev/null
+++ b/tests/expectations/tests/template-param-usage-5.rs
@@ -0,0 +1,15 @@
+/* automatically generated by rust-bindgen */
+
+
+#![allow(non_snake_case)]
+
+
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct IndirectlyUsesTemplateParameter<T> {
+ pub aliased: IndirectlyUsesTemplateParameter_Aliased<T>,
+}
+pub type IndirectlyUsesTemplateParameter_Aliased<T> = T;
+impl <T> Default for IndirectlyUsesTemplateParameter<T> {
+ fn default() -> Self { unsafe { ::std::mem::zeroed() } }
+}
diff --git a/tests/expectations/tests/template-param-usage-6.rs b/tests/expectations/tests/template-param-usage-6.rs
new file mode 100644
index 00000000..37b7fe64
--- /dev/null
+++ b/tests/expectations/tests/template-param-usage-6.rs
@@ -0,0 +1,12 @@
+/* automatically generated by rust-bindgen */
+
+
+#![allow(non_snake_case)]
+
+
+#[repr(C)]
+#[derive(Debug, Default, Copy, Clone)]
+pub struct DoesNotUseTemplateParameter {
+ pub x: ::std::os::raw::c_int,
+}
+pub type DoesNotUseTemplateParameter_ButAliasDoesUseIt<T> = T;
diff --git a/tests/expectations/tests/template-param-usage-7.rs b/tests/expectations/tests/template-param-usage-7.rs
new file mode 100644
index 00000000..b0584479
--- /dev/null
+++ b/tests/expectations/tests/template-param-usage-7.rs
@@ -0,0 +1,16 @@
+/* automatically generated by rust-bindgen */
+
+
+#![allow(non_snake_case)]
+
+
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct DoesNotUseU<T, V> {
+ pub t: T,
+ pub v: V,
+}
+impl <T, V> Default for DoesNotUseU<T, V> {
+ fn default() -> Self { unsafe { ::std::mem::zeroed() } }
+}
+pub type Alias = DoesNotUseU<::std::os::raw::c_int, ::std::os::raw::c_schar>;
diff --git a/tests/expectations/tests/template-param-usage-8.rs b/tests/expectations/tests/template-param-usage-8.rs
new file mode 100644
index 00000000..b181cc09
--- /dev/null
+++ b/tests/expectations/tests/template-param-usage-8.rs
@@ -0,0 +1,17 @@
+/* automatically generated by rust-bindgen */
+
+
+#![allow(non_snake_case)]
+
+
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct IndirectUsage<T, U> {
+ pub member1: IndirectUsage_Typedefed<T>,
+ pub member2: IndirectUsage_Aliased<U>,
+}
+pub type IndirectUsage_Typedefed<T> = T;
+pub type IndirectUsage_Aliased<U> = U;
+impl <T, U> Default for IndirectUsage<T, U> {
+ fn default() -> Self { unsafe { ::std::mem::zeroed() } }
+}
diff --git a/tests/expectations/tests/template-param-usage-9.rs b/tests/expectations/tests/template-param-usage-9.rs
new file mode 100644
index 00000000..d0a3f29f
--- /dev/null
+++ b/tests/expectations/tests/template-param-usage-9.rs
@@ -0,0 +1,22 @@
+/* automatically generated by rust-bindgen */
+
+
+#![allow(non_snake_case)]
+
+
+#[repr(C)]
+#[derive(Debug, Default, Copy, Clone)]
+pub struct DoesNotUse {
+ pub _address: u8,
+}
+pub type DoesNotUse_Aliased<T> = T;
+pub type DoesNotUse_Typedefed<U> = U;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct DoesNotUse_IndirectUsage<T, U> {
+ pub member: DoesNotUse_Aliased<T>,
+ pub another: DoesNotUse_Typedefed<U>,
+}
+impl <T, U> Default for DoesNotUse_IndirectUsage<T, U> {
+ fn default() -> Self { unsafe { ::std::mem::zeroed() } }
+}
diff --git a/tests/expectations/tests/template.rs b/tests/expectations/tests/template.rs
index 3c829f07..911b0e6a 100644
--- a/tests/expectations/tests/template.rs
+++ b/tests/expectations/tests/template.rs
@@ -6,37 +6,34 @@
#[repr(C)]
#[derive(Debug)]
-pub struct Foo<T, U> {
+pub struct Foo<T> {
pub m_member: T,
pub m_member_ptr: *mut T,
pub m_member_arr: [T; 1usize],
- pub _phantom_1: ::std::marker::PhantomData<U>,
}
-impl <T, U> Default for Foo<T, U> {
+impl <T> Default for Foo<T> {
fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
extern "C" {
#[link_name = "_Z3bar3FooIiiE"]
- pub fn bar(foo: Foo<::std::os::raw::c_int, ::std::os::raw::c_int>);
+ pub fn bar(foo: Foo<::std::os::raw::c_int>);
}
#[repr(C)]
#[derive(Debug)]
-pub struct D<T> {
+pub struct D {
pub m_foo: D_MyFoo,
- pub _phantom_0: ::std::marker::PhantomData<T>,
}
-pub type D_MyFoo = Foo<::std::os::raw::c_int, ::std::os::raw::c_int>;
+pub type D_MyFoo = Foo<::std::os::raw::c_int>;
#[repr(C)]
#[derive(Debug)]
-pub struct D_U<T, Z> {
+pub struct D_U<Z> {
pub m_nested_foo: D_MyFoo,
pub m_baz: Z,
- pub _phantom_0: ::std::marker::PhantomData<T>,
}
-impl <T, Z> Default for D_U<T, Z> {
+impl <Z> Default for D_U<Z> {
fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
-impl <T> Default for D<T> {
+impl Default for D {
fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
@@ -104,10 +101,9 @@ impl Default for PODButContainsDtor {
/** <div rustbindgen opaque> */
#[repr(C)]
#[derive(Debug, Copy, Clone)]
-pub struct Opaque<T> {
- pub _phantom_0: ::std::marker::PhantomData<T>,
+pub struct Opaque {
}
-impl <T> Default for Opaque<T> {
+impl Default for Opaque {
fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
@@ -143,11 +139,10 @@ impl <T> Default for NestedReplaced<T> {
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
-pub struct NestedBase<T, U> {
+pub struct NestedBase<T> {
pub buff: *mut T,
- pub _phantom_1: ::std::marker::PhantomData<U>,
}
-impl <T, U> Default for NestedBase<T, U> {
+impl <T> Default for NestedBase<T> {
fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
@@ -184,13 +179,9 @@ impl Clone for Untemplated {
fn clone(&self) -> Self { *self }
}
#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct Templated<T> {
+#[derive(Debug, Default, Copy, Clone)]
+pub struct Templated {
pub m_untemplated: Untemplated,
- pub _phantom_0: ::std::marker::PhantomData<T>,
-}
-impl <T> Default for Templated<T> {
- fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
/**
* If the replacement doesn't happen at the parse level the container would be
@@ -237,27 +228,23 @@ impl <T> Default for ReplacedWithoutDestructorFwd<T> {
fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct TemplateWithVar<T> {
+#[derive(Debug, Default, Copy, Clone)]
+pub struct TemplateWithVar {
pub _address: u8,
- pub _phantom_0: ::std::marker::PhantomData<T>,
-}
-impl <T> Default for TemplateWithVar<T> {
- fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[test]
-fn __bindgen_test_layout_template_1() {
- assert_eq!(::std::mem::size_of::<Foo<::std::os::raw::c_int, ::std::os::raw::c_int>>()
- , 24usize , concat ! (
+fn __bindgen_test_layout_Foo_instantiation_95() {
+ assert_eq!(::std::mem::size_of::<Foo<::std::os::raw::c_int>>() , 24usize ,
+ concat ! (
"Size of template specialization: " , stringify ! (
- Foo<::std::os::raw::c_int, ::std::os::raw::c_int> ) ));
- assert_eq!(::std::mem::align_of::<Foo<::std::os::raw::c_int, ::std::os::raw::c_int>>()
- , 8usize , concat ! (
+ Foo<::std::os::raw::c_int> ) ));
+ assert_eq!(::std::mem::align_of::<Foo<::std::os::raw::c_int>>() , 8usize ,
+ concat ! (
"Alignment of template specialization: " , stringify ! (
- Foo<::std::os::raw::c_int, ::std::os::raw::c_int> ) ));
+ Foo<::std::os::raw::c_int> ) ));
}
#[test]
-fn __bindgen_test_layout_template_2() {
+fn __bindgen_test_layout_Rooted_instantiation_106() {
assert_eq!(::std::mem::size_of::<Rooted<*mut ::std::os::raw::c_void>>() ,
24usize , concat ! (
"Size of template specialization: " , stringify ! (
@@ -268,7 +255,7 @@ fn __bindgen_test_layout_template_2() {
Rooted<*mut ::std::os::raw::c_void> ) ));
}
#[test]
-fn __bindgen_test_layout_template_3() {
+fn __bindgen_test_layout_WithDtor_instantiation_114() {
assert_eq!(::std::mem::size_of::<WithDtor<::std::os::raw::c_int>>() ,
4usize , concat ! (
"Size of template specialization: " , stringify ! (
diff --git a/tests/expectations/tests/template_typedef_transitive_param.rs b/tests/expectations/tests/template_typedef_transitive_param.rs
index cc801f35..265ab5ce 100644
--- a/tests/expectations/tests/template_typedef_transitive_param.rs
+++ b/tests/expectations/tests/template_typedef_transitive_param.rs
@@ -5,10 +5,9 @@
#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct Wrapper<T> {
+#[derive(Debug, Default, Copy, Clone)]
+pub struct Wrapper {
pub _address: u8,
- pub _phantom_0: ::std::marker::PhantomData<T>,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
@@ -19,6 +18,3 @@ impl <T> Default for Wrapper_Wrapped<T> {
fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
pub type Wrapper_Type<T> = Wrapper_Wrapped<T>;
-impl <T> Default for Wrapper<T> {
- fn default() -> Self { unsafe { ::std::mem::zeroed() } }
-}
diff --git a/tests/expectations/tests/template_typedefs.rs b/tests/expectations/tests/template_typedefs.rs
index 9213c0d2..c987bf8e 100644
--- a/tests/expectations/tests/template_typedefs.rs
+++ b/tests/expectations/tests/template_typedefs.rs
@@ -7,11 +7,9 @@
pub type foo =
::std::option::Option<unsafe extern "C" fn(arg1: ::std::os::raw::c_int)>;
#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct Foo<T, U> {
+#[derive(Debug, Default, Copy, Clone)]
+pub struct Foo {
pub _address: u8,
- pub _phantom_0: ::std::marker::PhantomData<T>,
- pub _phantom_1: ::std::marker::PhantomData<U>,
}
pub type Foo_Char<T> = T;
pub type Foo_FooPtrTypedef<T> = *mut Foo_Char<T>;
@@ -20,6 +18,3 @@ pub type Foo_nsCOMArrayEnumFunc<T> =
aData:
*mut ::std::os::raw::c_void)
-> bool>;
-impl <T, U> Default for Foo<T, U> {
- fn default() -> Self { unsafe { ::std::mem::zeroed() } }
-}
diff --git a/tests/expectations/tests/templateref_opaque.rs b/tests/expectations/tests/templateref_opaque.rs
index dfe941af..89808f30 100644
--- a/tests/expectations/tests/templateref_opaque.rs
+++ b/tests/expectations/tests/templateref_opaque.rs
@@ -5,22 +5,14 @@
#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct detail_PointerType<T> {
+#[derive(Debug, Default, Copy, Clone)]
+pub struct detail_PointerType {
pub _address: u8,
- pub _phantom_0: ::std::marker::PhantomData<T>,
}
pub type detail_PointerType_Type<T> = *mut T;
-impl <T> Default for detail_PointerType<T> {
- fn default() -> Self { unsafe { ::std::mem::zeroed() } }
-}
#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct UniquePtr<T> {
+#[derive(Debug, Default, Copy, Clone)]
+pub struct UniquePtr {
pub _address: u8,
- pub _phantom_0: ::std::marker::PhantomData<T>,
-}
-pub type UniquePtr_Pointer<T> = detail_PointerType<T>;
-impl <T> Default for UniquePtr<T> {
- fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
+pub type UniquePtr_Pointer = detail_PointerType;
diff --git a/tests/expectations/tests/typeref.rs b/tests/expectations/tests/typeref.rs
index 47b7a66a..c9982b67 100644
--- a/tests/expectations/tests/typeref.rs
+++ b/tests/expectations/tests/typeref.rs
@@ -31,7 +31,7 @@ impl <T> ::std::fmt::Debug for __BindgenUnionField<T> {
#[repr(C)]
#[derive(Debug, Copy)]
pub struct nsFoo {
- pub mBar: mozilla_StyleShapeSource<::std::os::raw::c_int>,
+ pub mBar: mozilla_StyleShapeSource,
}
#[test]
fn bindgen_test_layout_nsFoo() {
@@ -89,21 +89,16 @@ impl Clone for mozilla_Position {
fn clone(&self) -> Self { *self }
}
#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct mozilla_StyleShapeSource<ReferenceBox> {
- pub __bindgen_anon_1: mozilla_StyleShapeSource__bindgen_ty_1<ReferenceBox>,
- pub _phantom_0: ::std::marker::PhantomData<ReferenceBox>,
+#[derive(Debug, Default, Copy, Clone)]
+pub struct mozilla_StyleShapeSource {
+ pub __bindgen_anon_1: mozilla_StyleShapeSource__bindgen_ty_1,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
-pub struct mozilla_StyleShapeSource__bindgen_ty_1<ReferenceBox> {
+pub struct mozilla_StyleShapeSource__bindgen_ty_1 {
pub mPosition: __BindgenUnionField<*mut mozilla_Position>,
pub mFragmentOrURL: __BindgenUnionField<*mut mozilla_FragmentOrURL>,
pub bindgen_union_field: u64,
- pub _phantom_0: ::std::marker::PhantomData<ReferenceBox>,
-}
-impl <ReferenceBox> Default for mozilla_StyleShapeSource<ReferenceBox> {
- fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
#[derive(Debug, Copy)]
diff --git a/tests/expectations/tests/union_template.rs b/tests/expectations/tests/union_template.rs
index 2eba0f0a..e02f1964 100644
--- a/tests/expectations/tests/union_template.rs
+++ b/tests/expectations/tests/union_template.rs
@@ -29,37 +29,30 @@ impl <T> ::std::fmt::Debug for __BindgenUnionField<T> {
}
}
#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct NastyStruct<T> {
+#[derive(Debug, Default, Copy, Clone)]
+pub struct NastyStruct {
pub mIsSome: bool,
- pub mStorage: NastyStruct__bindgen_ty_1<T>,
- pub __bindgen_anon_1: NastyStruct__bindgen_ty_2<T>,
- pub _phantom_0: ::std::marker::PhantomData<T>,
+ pub mStorage: NastyStruct__bindgen_ty_1,
+ pub __bindgen_anon_1: NastyStruct__bindgen_ty_2,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
-pub struct NastyStruct__bindgen_ty_1<T> {
+pub struct NastyStruct__bindgen_ty_1 {
pub mFoo: __BindgenUnionField<*mut ::std::os::raw::c_void>,
pub mDummy: __BindgenUnionField<::std::os::raw::c_ulong>,
pub bindgen_union_field: u64,
- pub _phantom_0: ::std::marker::PhantomData<T>,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
-pub struct NastyStruct__bindgen_ty_2<T> {
+pub struct NastyStruct__bindgen_ty_2 {
pub wat: __BindgenUnionField<::std::os::raw::c_short>,
pub wut: __BindgenUnionField<*mut ::std::os::raw::c_int>,
pub bindgen_union_field: u64,
- pub _phantom_0: ::std::marker::PhantomData<T>,
-}
-impl <T> Default for NastyStruct<T> {
- fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
-pub struct Whatever<T> {
+pub struct Whatever {
pub mTPtr: __BindgenUnionField<*mut ::std::os::raw::c_void>,
pub mInt: __BindgenUnionField<::std::os::raw::c_int>,
pub bindgen_union_field: u64,
- pub _phantom_0: ::std::marker::PhantomData<T>,
}
diff --git a/tests/expectations/tests/variadic_template_function.rs b/tests/expectations/tests/variadic_template_function.rs
index 32be9f68..66fd73ed 100644
--- a/tests/expectations/tests/variadic_template_function.rs
+++ b/tests/expectations/tests/variadic_template_function.rs
@@ -5,11 +5,7 @@
#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct VariadicFunctionObject<T> {
+#[derive(Debug, Default, Copy, Clone)]
+pub struct VariadicFunctionObject {
pub _address: u8,
- pub _phantom_0: ::std::marker::PhantomData<T>,
-}
-impl <T> Default for VariadicFunctionObject<T> {
- fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
diff --git a/tests/expectations/tests/what_is_going_on.rs b/tests/expectations/tests/what_is_going_on.rs
index 46af0139..e5194c02 100644
--- a/tests/expectations/tests/what_is_going_on.rs
+++ b/tests/expectations/tests/what_is_going_on.rs
@@ -22,12 +22,11 @@ impl Clone for UnknownUnits {
pub type Float = f32;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
-pub struct PointTyped<units, F> {
+pub struct PointTyped<F> {
pub x: F,
pub y: F,
- pub _phantom_0: ::std::marker::PhantomData<units>,
}
-impl <units, F> Default for PointTyped<units, F> {
+impl <F> Default for PointTyped<F> {
fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
-pub type IntPoint = PointTyped<UnknownUnits, f32>;
+pub type IntPoint = PointTyped<f32>;
diff --git a/tests/expectations/tests/whitelist_basic.rs b/tests/expectations/tests/whitelist_basic.rs
index d67fb7a3..8af4aba3 100644
--- a/tests/expectations/tests/whitelist_basic.rs
+++ b/tests/expectations/tests/whitelist_basic.rs
@@ -9,7 +9,6 @@
pub struct WhitelistMe<T> {
pub foo: ::std::os::raw::c_int,
pub bar: WhitelistMe_Inner<T>,
- pub _phantom_0: ::std::marker::PhantomData<T>,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
diff --git a/tests/headers/issue-544-stylo-creduce-2.hpp b/tests/headers/issue-544-stylo-creduce-2.hpp
new file mode 100644
index 00000000..f3467f45
--- /dev/null
+++ b/tests/headers/issue-544-stylo-creduce-2.hpp
@@ -0,0 +1,8 @@
+// bindgen-flags: -- -std=c++14
+
+template <typename T>
+struct Foo {
+ template <typename> using FirstAlias = typename T::Associated;
+ template <typename U> using SecondAlias = Foo<FirstAlias<U>>;
+ SecondAlias<int> member;
+};
diff --git a/tests/headers/issue-544-stylo-creduce.hpp b/tests/headers/issue-544-stylo-creduce.hpp
new file mode 100644
index 00000000..ba9f8257
--- /dev/null
+++ b/tests/headers/issue-544-stylo-creduce.hpp
@@ -0,0 +1,5 @@
+// bindgen-flags: -- -std=c++14
+
+template <typename> class a;
+template <typename b, typename... c> class a<b(c...)> { a(const a &); };
+template <typename b, typename... c> a<b(c...)>::a(const a &) {}
diff --git a/tests/headers/partial-specialization-and-inheritance.hpp b/tests/headers/partial-specialization-and-inheritance.hpp
new file mode 100644
index 00000000..4eb8f545
--- /dev/null
+++ b/tests/headers/partial-specialization-and-inheritance.hpp
@@ -0,0 +1,40 @@
+// bindgen-unstable
+
+// This was originally a test case generated by creducing errors in SpiderMonkey
+// bindings generation. I've tried to make it understandable by giving more
+// meaningful names to everything, and a couple comments.
+//
+// We don't support partial template specialization, but we *should*
+// successfully parse this header, and generate bindings for it, but the usage
+// of the partial template specialization should result in opaque blobs.
+
+// A base class providing a method.
+template <typename T>
+class Base {
+public:
+ void some_method(T, T);
+};
+
+// A template with a default representation.
+template <typename U>
+class Derived {
+ bool b;
+};
+
+// A partial specialization for pointers. Note that this should have a different
+// and larger layout than the template it is specializing.
+template <typename U>
+class Derived<U*> : public Base<U*> {
+ int x;
+ int y;
+};
+
+// A struct that uses the partial specialization and method from the partial
+// specialization's base class.
+struct Usage {
+ Usage() {
+ static_member.some_method(this, this);
+ }
+
+ static Derived<Usage*> static_member;
+};
diff --git a/tests/headers/template-param-usage-0.hpp b/tests/headers/template-param-usage-0.hpp
new file mode 100644
index 00000000..57c11a10
--- /dev/null
+++ b/tests/headers/template-param-usage-0.hpp
@@ -0,0 +1,6 @@
+// bindgen-flags: -- -std=c++14
+
+template <typename T>
+class UsesTemplateParameter {
+ T t;
+};
diff --git a/tests/headers/template-param-usage-1.hpp b/tests/headers/template-param-usage-1.hpp
new file mode 100644
index 00000000..dba41489
--- /dev/null
+++ b/tests/headers/template-param-usage-1.hpp
@@ -0,0 +1,6 @@
+// bindgen-flags: -- -std=c++14
+
+template <typename T>
+class DoesNotUseTemplateParameter {
+ int x;
+};
diff --git a/tests/headers/template-param-usage-10.hpp b/tests/headers/template-param-usage-10.hpp
new file mode 100644
index 00000000..a6f3ccd8
--- /dev/null
+++ b/tests/headers/template-param-usage-10.hpp
@@ -0,0 +1,14 @@
+// bindgen-flags: -- -std=c++14
+
+template <typename T, typename U, typename NeverUsed>
+class DoublyIndirectUsage {
+ using Aliased = T;
+ typedef U Typedefed;
+
+ class IndirectUsage {
+ Aliased member;
+ Typedefed another;
+ };
+
+ IndirectUsage doubly_indirect;
+};
diff --git a/tests/headers/template-param-usage-11.hpp b/tests/headers/template-param-usage-11.hpp
new file mode 100644
index 00000000..8780f5d3
--- /dev/null
+++ b/tests/headers/template-param-usage-11.hpp
@@ -0,0 +1,6 @@
+// bindgen-flags: -- -std=c++14
+
+template <typename T>
+class DoesNotUseT {
+ static T but_static_member_does;
+};
diff --git a/tests/headers/template-param-usage-12.hpp b/tests/headers/template-param-usage-12.hpp
new file mode 100644
index 00000000..9b4cea19
--- /dev/null
+++ b/tests/headers/template-param-usage-12.hpp
@@ -0,0 +1,11 @@
+// bindgen-flags: -- -std=c++14
+
+template <typename T>
+class BaseUsesT {
+ T* t;
+};
+
+template <typename U>
+class CrtpUsesU : public BaseUsesT<CrtpUsesU<U>> {
+ U usage;
+};
diff --git a/tests/headers/template-param-usage-13.hpp b/tests/headers/template-param-usage-13.hpp
new file mode 100644
index 00000000..87db1a10
--- /dev/null
+++ b/tests/headers/template-param-usage-13.hpp
@@ -0,0 +1,11 @@
+// bindgen-flags: -- -std=c++14
+
+template <typename T>
+class BaseIgnoresT {
+ int x;
+};
+
+template <typename U>
+class CrtpUsesU : public BaseIgnoresT<CrtpUsesU<U>> {
+ U usage;
+};
diff --git a/tests/headers/template-param-usage-14.hpp b/tests/headers/template-param-usage-14.hpp
new file mode 100644
index 00000000..19016296
--- /dev/null
+++ b/tests/headers/template-param-usage-14.hpp
@@ -0,0 +1,11 @@
+// bindgen-flags: -- -std=c++14
+
+template <typename T>
+class BaseIgnoresT {
+ int x;
+};
+
+template <typename U>
+class CrtpIgnoresU : public BaseIgnoresT<CrtpIgnoresU<U>> {
+ int y;
+};
diff --git a/tests/headers/template-param-usage-15.hpp b/tests/headers/template-param-usage-15.hpp
new file mode 100644
index 00000000..bac7ada7
--- /dev/null
+++ b/tests/headers/template-param-usage-15.hpp
@@ -0,0 +1,11 @@
+// bindgen-flags: -- -std=c++14
+
+template <typename T>
+class BaseUsesT {
+ T* usage;
+};
+
+template <typename U>
+class CrtpIgnoresU : public BaseUsesT<CrtpIgnoresU<U>> {
+ int y;
+};
diff --git a/tests/headers/template-param-usage-2.hpp b/tests/headers/template-param-usage-2.hpp
new file mode 100644
index 00000000..302140ab
--- /dev/null
+++ b/tests/headers/template-param-usage-2.hpp
@@ -0,0 +1,10 @@
+// bindgen-flags: -- -std=c++14
+
+template <typename T>
+class UsesTemplateParameter {
+ T t;
+
+ class AlsoUsesTemplateParameter {
+ T also;
+ };
+};
diff --git a/tests/headers/template-param-usage-3.hpp b/tests/headers/template-param-usage-3.hpp
new file mode 100644
index 00000000..57396a8a
--- /dev/null
+++ b/tests/headers/template-param-usage-3.hpp
@@ -0,0 +1,12 @@
+// bindgen-flags: -- -std=c++14
+
+template <typename T>
+class UsesTemplateParameter {
+ T t;
+
+ template <typename U>
+ class AlsoUsesTemplateParameterAndMore {
+ T also;
+ U more;
+ };
+};
diff --git a/tests/headers/template-param-usage-4.hpp b/tests/headers/template-param-usage-4.hpp
new file mode 100644
index 00000000..0415d692
--- /dev/null
+++ b/tests/headers/template-param-usage-4.hpp
@@ -0,0 +1,11 @@
+// bindgen-flags: -- -std=c++14
+
+template <typename T>
+class UsesTemplateParameter {
+ T t;
+
+ template <typename U>
+ class DoesNotUseTemplateParameters {
+ int x;
+ };
+};
diff --git a/tests/headers/template-param-usage-5.hpp b/tests/headers/template-param-usage-5.hpp
new file mode 100644
index 00000000..04b9bf80
--- /dev/null
+++ b/tests/headers/template-param-usage-5.hpp
@@ -0,0 +1,8 @@
+// bindgen-flags: -- -std=c++14
+
+template <typename T>
+class IndirectlyUsesTemplateParameter {
+ using Aliased = T;
+
+ Aliased aliased;
+};
diff --git a/tests/headers/template-param-usage-6.hpp b/tests/headers/template-param-usage-6.hpp
new file mode 100644
index 00000000..ee0519c5
--- /dev/null
+++ b/tests/headers/template-param-usage-6.hpp
@@ -0,0 +1,8 @@
+// bindgen-flags: -- -std=c++14
+
+template <typename T>
+class DoesNotUseTemplateParameter {
+ using ButAliasDoesUseIt = T;
+
+ int x;
+};
diff --git a/tests/headers/template-param-usage-7.hpp b/tests/headers/template-param-usage-7.hpp
new file mode 100644
index 00000000..99d4cc71
--- /dev/null
+++ b/tests/headers/template-param-usage-7.hpp
@@ -0,0 +1,10 @@
+// bindgen-flags: -- -std=c++14
+
+template <typename T, typename U, typename V>
+class DoesNotUseU {
+ T t;
+ V v;
+};
+
+// The bool should go away becuase U is not used.
+using Alias = DoesNotUseU<int, bool, char>;
diff --git a/tests/headers/template-param-usage-8.hpp b/tests/headers/template-param-usage-8.hpp
new file mode 100644
index 00000000..96eabc06
--- /dev/null
+++ b/tests/headers/template-param-usage-8.hpp
@@ -0,0 +1,10 @@
+// bindgen-flags: -- -std=c++14
+
+template <typename T, typename U>
+class IndirectUsage {
+ typedef T Typedefed;
+ using Aliased = U;
+
+ Typedefed member1;
+ Aliased member2;
+};
diff --git a/tests/headers/template-param-usage-9.hpp b/tests/headers/template-param-usage-9.hpp
new file mode 100644
index 00000000..b9bd202c
--- /dev/null
+++ b/tests/headers/template-param-usage-9.hpp
@@ -0,0 +1,12 @@
+// bindgen-flags: -- -std=c++14
+
+template <typename T, typename U>
+class DoesNotUse {
+ using Aliased = T;
+ typedef U Typedefed;
+
+ class IndirectUsage {
+ Aliased member;
+ Typedefed another;
+ };
+};