make member_at with unbound key actually work
[scpubgit/DX.git] / lib / DX / Predicate / MemberAt.pm
index 3874cb8..95a3f64 100644 (file)
@@ -1,6 +1,6 @@
 package DX::Predicate::MemberAt;
 
-use DX::Utils qw(step INDICES_OF EXISTENCE_OF CONTENTS_OF);
+use DX::Utils qw(step INDICES_OF EXISTENCE_OF CONTENTS_OF string);
 use DX::Class;
 
 with 'DX::Role::Predicate';
@@ -45,11 +45,11 @@ sub _possible_resolution_list {
     ),
     ($key->can_set_value
       ? map {
-          my $set_key = $key->action_for_set_value($_);
+          my $set_key = $key->action_for_set_value(string(my $kstr = $_));
           map $_->but_first($set_key)
                 ->but_with_dependencies_on(
                     [ undef ,=>
-                      [ EXISTENCE_OF ,=> $coll, $key->string_value ]
+                      [ EXISTENCE_OF ,=> $coll, $kstr ]
                     ]
                   ),
             $self->_make_equal($coll->get_member_at($_), $value);