X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Debbugs%2FBug.pm;h=38ebbe7ee034a0f069b06246dc6031f99bb99c76;hb=0f7cb608295bc9cb554d8f6555ca0c0987fdabf1;hp=256084eccdc26ef41b9416e72e8d02a22550987b;hpb=73c3f08dcecccb9980f512ac0ec36c4cb7d3f556;p=debbugs.git diff --git a/Debbugs/Bug.pm b/Debbugs/Bug.pm index 256084e..38ebbe7 100644 --- a/Debbugs/Bug.pm +++ b/Debbugs/Bug.pm @@ -369,11 +369,23 @@ sub is_merged { return $self->mergedwith->count > 0; } +has _mergedwith_array => + (is => 'ro', + isa => 'ArrayRef[Int]', + builder => '_build_mergedwith_array', + lazy => 1, + ); + +sub _build_mergedwith_array { + my $self = shift; + return [sort {$a <=> $b} + $self->_split_if_defined('mergedwith')]; +} + sub _build_mergedwith { my $self = shift; return $self->bug_collection-> - limit(sort {$a <=> $b} - $self->_split_if_defined('mergedwith')); + limit(@{$self->_mergedwith_array//[]}); } sub _build_pending { return $_[0]->status->{pending} // ''; @@ -578,7 +590,7 @@ sub filter { return 1 if $self->matches($param{exclude}); } if (exists $param{repeat_merged} and not $param{repeat_merged}) { - my @merged = sort {$a<=>$b} $self->bug, map {$_->bug} $self->mergedwith->members; + my @merged = sort {$a<=>$b} $self->bug, @{$self->_mergedwith_array // []}; return 1 if first {sub {defined $_}} @{$param{seen_merged}}{@merged}; @{$param{seen_merged}}{@merged} = (1) x @merged;