summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikuroXina <ryosukadnak@gmail.com>2021-10-25 22:46:02 +0900
committerEmilio Cobos Álvarez <emilio@crisal.io>2021-10-27 19:22:15 +0200
commit74115f4f01b5a97830075244bcb7351e5c468ccd (patch)
tree75a102dc3f07ac4c126d2190c4120652b0ba2f0b
parenta311cacbdf8fd5b41b444f639ecf21219d479aca (diff)
Extract as is_reached_limit
-rw-r--r--src/ir/analysis/derive.rs7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/ir/analysis/derive.rs b/src/ir/analysis/derive.rs
index 682f7852..f63458e5 100644
--- a/src/ir/analysis/derive.rs
+++ b/src/ir/analysis/derive.rs
@@ -9,6 +9,7 @@ use crate::ir::context::{BindgenContext, ItemId};
use crate::ir::derive::CanDerive;
use crate::ir::function::FunctionSig;
use crate::ir::item::{IsOpaque, Item};
+use crate::ir::layout::Layout;
use crate::ir::template::TemplateParameters;
use crate::ir::traversal::{EdgeKind, Trace};
use crate::ir::ty::RUST_DERIVE_IN_ARRAY_LIMIT;
@@ -672,10 +673,10 @@ impl<'ctx> MonotoneFramework for CannotDerive<'ctx> {
Some(ty) => {
let mut can_derive = self.constrain_type(item, ty);
if let CanDerive::Yes = can_derive {
+ let is_reached_limit =
+ |l: Layout| l.align > RUST_DERIVE_IN_ARRAY_LIMIT;
if !self.derive_trait.can_derive_large_array(self.ctx) &&
- ty.layout(self.ctx)
- .map(|l| l.align > RUST_DERIVE_IN_ARRAY_LIMIT)
- .unwrap_or_default()
+ ty.layout(self.ctx).map_or(false, is_reached_limit)
{
// We have to be conservative: the struct *could* have enough
// padding that we emit an array that is longer than