diff options
author | Emilio Cobos Álvarez <emilio@crisal.io> | 2016-12-15 17:48:15 +0100 |
---|---|---|
committer | Emilio Cobos Álvarez <emilio@crisal.io> | 2016-12-15 17:48:15 +0100 |
commit | 59987f142bbd97e44437532a640eb66c4d3a3e52 (patch) | |
tree | 4703f41c6d2a20b58b9415f60486474d7007e843 /libbindgen/tests | |
parent | 31bd2d3a1ffa47e15b0701761966fc836c9da99d (diff) |
codegen: Properly mangle nested anonymous enums with duplicated variants.
Diffstat (limited to 'libbindgen/tests')
-rw-r--r-- | libbindgen/tests/expectations/tests/anon_enum_trait.rs | 47 | ||||
-rw-r--r-- | libbindgen/tests/headers/anon_enum_trait.hpp | 22 |
2 files changed, 69 insertions, 0 deletions
diff --git a/libbindgen/tests/expectations/tests/anon_enum_trait.rs b/libbindgen/tests/expectations/tests/anon_enum_trait.rs new file mode 100644 index 00000000..8198bc15 --- /dev/null +++ b/libbindgen/tests/expectations/tests/anon_enum_trait.rs @@ -0,0 +1,47 @@ +/* automatically generated by rust-bindgen */ + + +#![allow(non_snake_case)] + + +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct DataType<_Tp> { + 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>; +pub type DataType_channel_type<_Tp> = DataType_value_type<_Tp>; +pub type DataType_vec_type<_Tp> = DataType_value_type<_Tp>; +pub const DataType_generic_type: DataType__bindgen_ty_1 = + DataType__bindgen_ty_1::generic_type; +pub const DataType_depth: DataType__bindgen_ty_1 = + DataType__bindgen_ty_1::generic_type; +pub const DataType_channels: DataType__bindgen_ty_1 = + DataType__bindgen_ty_1::generic_type; +pub const DataType_fmt: DataType__bindgen_ty_1 = + DataType__bindgen_ty_1::generic_type; +pub const DataType_type_: DataType__bindgen_ty_1 = + DataType__bindgen_ty_1::generic_type; +#[repr(i32)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] +pub enum DataType__bindgen_ty_1 { generic_type = 0, } +#[repr(C)] +#[derive(Debug, Copy)] +pub struct Foo { + pub _address: u8, +} +pub const Foo_Bar: Foo__bindgen_ty_1 = Foo__bindgen_ty_1::Bar; +pub const Foo_Baz: Foo__bindgen_ty_1 = Foo__bindgen_ty_1::Bar; +#[repr(u32)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] +pub enum Foo__bindgen_ty_1 { Bar = 0, } +#[test] +fn bindgen_test_layout_Foo() { + assert_eq!(::std::mem::size_of::<Foo>() , 1usize); + assert_eq!(::std::mem::align_of::<Foo>() , 1usize); +} +impl Clone for Foo { + fn clone(&self) -> Self { *self } +} diff --git a/libbindgen/tests/headers/anon_enum_trait.hpp b/libbindgen/tests/headers/anon_enum_trait.hpp new file mode 100644 index 00000000..e1ec394c --- /dev/null +++ b/libbindgen/tests/headers/anon_enum_trait.hpp @@ -0,0 +1,22 @@ + +template<typename _Tp> +class DataType { +public: + typedef _Tp value_type; + typedef value_type work_type; + typedef value_type channel_type; + typedef value_type vec_type; + enum { generic_type = 1, + depth = -1, + channels = 1, + fmt = 0, + type = -1, + }; +}; + +struct Foo { + enum { + Bar = 0, + Baz = 0, + }; +}; |