package DX::Predicate::MemberAt;
-use DX::Utils qw(:builders :dep_types);
+use DX::Utils qw(:builders :dep_types expand_deps);
use DX::ActionBuilder::ProxySetToAdd;
use DX::ActionBuilder::Null;
use DX::Class;
if (my $cur_val = $dict->get_member_at($key)) {
- my $deps = [
+ my $deps = expand_deps([
[ CONTENTS_OF ,=> $dict, $key->string_value ],
[ CONTENTS_OF ,=> $value ],
- ];
+ ]);
if ($value->is_set) {
}
return rspace(
- geometry_depends_on => [
+ geometry_depends_on => expand_deps([
[ CONTENTS_OF ,=> $dict, $key->string_value ],
[ TYPE_OF ,=> $value ],
- ],
+ ]),
aperture => $value->aperture_for_set_value,
members => [
res(
if ($dict->can_add_member) {
- my $deps = [
+ my $deps = expand_deps([
[ EXISTENCE_OF ,=> $dict, $key->string_value ],
[ TYPE_OF ,=> $value ],
- ];
+ ]);
if ($value->is_set) {
# Dict doesn't allow adding keys and key doesn't exist, so
# the contents of the value is completely irrelevant to the failure
return rspace(
- geometry_depends_on => [
+ geometry_depends_on => expand_deps([
[ EXISTENCE_OF ,=> $dict, $key->string_value ],
- ],
+ ]),
aperture => [],
members => [],
);
], map string($_), $dict->index_list;
return rspace(
- geometry_depends_on => [
+ geometry_depends_on => expand_deps([
[ INDICES_OF ,=> $dict ],
[ TYPE_OF ,=> $key ],
[ TYPE_OF ,=> $value ],
- ],
+ ]),
aperture => [ map @{$_->aperture_for_set_value}, $key, $value ],
members => [
rstrat(
],
veracity_depends_on_builder => sub {
my ($this_key, $this_val) = map @$_, @_;
- return [
+ return expand_deps([
[ CONTENTS_OF ,=> $dict, $this_key->string_value ],
[ CONTENTS_OF ,=> $key ],
[ CONTENTS_OF ,=> $value ],
- ];
+ ]);
},
implementation_candidates => \@cand,
),