summaryrefslogtreecommitdiff
path: root/tests/parse_callbacks
diff options
context:
space:
mode:
Diffstat (limited to 'tests/parse_callbacks')
-rw-r--r--tests/parse_callbacks/mod.rs24
1 files changed, 22 insertions, 2 deletions
diff --git a/tests/parse_callbacks/mod.rs b/tests/parse_callbacks/mod.rs
index 01993cfc..b94b54de 100644
--- a/tests/parse_callbacks/mod.rs
+++ b/tests/parse_callbacks/mod.rs
@@ -1,4 +1,4 @@
-use bindgen::callbacks::ParseCallbacks;
+use bindgen::callbacks::*;
#[derive(Debug)]
struct EnumVariantRename;
@@ -8,15 +8,35 @@ impl ParseCallbacks for EnumVariantRename {
&self,
_enum_name: Option<&str>,
original_variant_name: &str,
- _variant_value: bindgen::callbacks::EnumVariantValue,
+ _variant_value: EnumVariantValue,
) -> Option<String> {
Some(format!("RENAMED_{}", original_variant_name))
}
}
+#[derive(Debug)]
+struct BlocklistedTypeImplementsTrait;
+
+impl ParseCallbacks for BlocklistedTypeImplementsTrait {
+ fn blocklisted_type_implements_trait(
+ &self,
+ _name: &str,
+ derive_trait: DeriveTrait,
+ ) -> Option<ImplementsTrait> {
+ if derive_trait == DeriveTrait::Hash {
+ Some(ImplementsTrait::No)
+ } else {
+ Some(ImplementsTrait::Yes)
+ }
+ }
+}
+
pub fn lookup(cb: &str) -> Box<dyn ParseCallbacks> {
match cb {
"enum-variant-rename" => Box::new(EnumVariantRename),
+ "blocklisted-type-implements-trait" => {
+ Box::new(BlocklistedTypeImplementsTrait)
+ }
_ => panic!("Couldn't find name ParseCallbacks: {}", cb),
}
}