summaryrefslogtreecommitdiff
path: root/libbindgen/tests
diff options
context:
space:
mode:
authorEmilio Cobos Álvarez <emilio@crisal.io>2016-12-15 17:48:15 +0100
committerEmilio Cobos Álvarez <emilio@crisal.io>2016-12-15 17:48:15 +0100
commit59987f142bbd97e44437532a640eb66c4d3a3e52 (patch)
tree4703f41c6d2a20b58b9415f60486474d7007e843 /libbindgen/tests
parent31bd2d3a1ffa47e15b0701761966fc836c9da99d (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.rs47
-rw-r--r--libbindgen/tests/headers/anon_enum_trait.hpp22
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,
+ };
+};