use Return::MultiLevel qw(with_return);
use DX::Op::Backtrack;
use Scalar::Util qw(blessed);
+use Safe::Isa;
use Moo;
has next_op => (is => 'ro', required => 1);
$self->by_id->{$self->scope->{$name}};
}
+sub resolve_value {
+ my ($self, $var) = @_;
+ my $val = $var->bound_value;
+ if ($val->$_does('DX::Role::Ref')) {
+ return $val->resolve($self);
+ }
+ return $val;
+}
+
sub allocate_var {
my ($self, $name, $var, $id_gen) = @_;
my $id = join('_', $name, ++($id_gen->{$name}||='000'));