diff options
author | Zhiting Zhu <zzhu@mozilla.com> | 2017-08-10 16:22:48 -0700 |
---|---|---|
committer | Zhiting Zhu <zzhu@mozilla.com> | 2017-08-14 10:19:14 -0700 |
commit | d98535a39721a4be7a0e3d0a6171e96c52b646b1 (patch) | |
tree | c24b9df2d29f08d85d864a5ea8073f57d79d1cc6 /src/codegen/mod.rs | |
parent | 5ca05690c17e318d52f8d2e82aeef5d0feff35b3 (diff) |
Can derive PartialEq analysis
Diffstat (limited to 'src/codegen/mod.rs')
-rw-r--r-- | src/codegen/mod.rs | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/codegen/mod.rs b/src/codegen/mod.rs index 6113e5d5..1e4a5d48 100644 --- a/src/codegen/mod.rs +++ b/src/codegen/mod.rs @@ -14,7 +14,7 @@ use ir::comment; use ir::comp::{Base, Bitfield, BitfieldUnit, CompInfo, CompKind, Field, FieldData, FieldMethods, Method, MethodKind}; use ir::context::{BindgenContext, ItemId}; -use ir::derive::{CanDeriveCopy, CanDeriveDebug, CanDeriveDefault, CanDeriveHash}; +use ir::derive::{CanDeriveCopy, CanDeriveDebug, CanDeriveDefault, CanDeriveHash, CanDerivePartialEq}; use ir::dot; use ir::enum_ty::{Enum, EnumVariant, EnumVariantValue}; use ir::function::{Abi, Function, FunctionSig}; @@ -1495,6 +1495,10 @@ impl CodeGenerator for CompInfo { derives.push("Hash"); } + if item.can_derive_partialeq(ctx) { + derives.push("PartialEq"); + } + if !derives.is_empty() { attributes.push(attributes::derives(&derives)) } @@ -3569,13 +3573,23 @@ mod utils { ) .unwrap(); + let union_field_partialeq_impl = quote_item!(&ctx.ext_cx(), + impl<T> ::$prefix::cmp::PartialEq for __BindgenUnionField<T> { + fn eq(&self, _other: &__BindgenUnionField<T>) -> bool { + true + } + } + ) + .unwrap(); + let items = vec![union_field_decl, union_field_impl, union_field_default_impl, union_field_clone_impl, union_field_copy_impl, union_field_debug_impl, - union_field_hash_impl]; + union_field_hash_impl, + union_field_partialeq_impl]; let old_items = mem::replace(result, items); result.extend(old_items.into_iter()); |