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);
sub resolve_value {
my ($self, $var) = @_;
- $var->bound_value;
+ my $val = $var->bound_value;
+ if ($val->$_does('DX::Role::Ref')) {
+ return $val->resolve($self);
+ }
+ return $val;
}
sub allocate_var {