Skip to content

Commit 0105e4d

Browse files
committed
Abstract no-partialeq check
Fixes rust-lang#965
1 parent 1917cb2 commit 0105e4d

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

src/ir/analysis/derive_partial_eq.rs

+1-3
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ use ir::comp::FieldMethods;
77
use ir::context::{BindgenContext, ItemId};
88
use ir::derive::CanTriviallyDerivePartialEq;
99
use ir::item::IsOpaque;
10-
use ir::item::ItemCanonicalName;
1110
use ir::traversal::EdgeKind;
1211
use ir::ty::RUST_DERIVE_IN_ARRAY_LIMIT;
1312
use ir::ty::TypeKind;
@@ -145,8 +144,7 @@ impl<'ctx> MonotoneFramework for CannotDerivePartialEq<'ctx> {
145144
};
146145
}
147146

148-
let name = item.canonical_name(self.ctx);
149-
if self.ctx.options().no_partialeq_types.matches(&name) {
147+
if self.ctx.no_partialeq_by_name(&item) {
150148
return self.insert(id)
151149
}
152150

src/ir/context.rs

+7
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ use super::derive::{CanDeriveCopy, CanDeriveDebug, CanDeriveDefault,
1010
use super::int::IntKind;
1111
use super::item::{HasTypeParamInArray, IsOpaque, Item, ItemAncestors,
1212
ItemCanonicalPath, ItemSet};
13+
use ir::item::ItemCanonicalName;
1314
use super::item_kind::ItemKind;
1415
use super::module::{Module, ModuleKind};
1516
use super::template::{TemplateInstantiation, TemplateParameters};
@@ -2198,6 +2199,12 @@ impl BindgenContext {
21982199
// float or not.
21992200
self.has_float.as_ref().unwrap().contains(id)
22002201
}
2202+
2203+
/// Check if `--no-partialeq` flag is enabled for this item.
2204+
pub fn no_partialeq_by_name(&self, item: &Item) -> bool {
2205+
let name = item.canonical_name(self);
2206+
self.options().no_partialeq_types.matches(&name)
2207+
}
22012208
}
22022209

22032210
/// A builder struct for configuring item resolution options.

0 commit comments

Comments
 (0)