The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# Checks that Inline's bind function still works when $_ is readonly. (Bug #55607)
# Thanks Marty O'Brien.

BEGIN {
  if (exists $ENV{PERL_INSTALL_ROOT}) {
    warn "\nIgnoring \$ENV{PERL_INSTALL_ROOT} in $0\n";
    delete $ENV{PERL_INSTALL_ROOT};
  }
};
use File::Spec;
use lib (File::Spec->catdir(File::Spec->updir(),'blib','lib'), File::Spec->catdir(File::Spec->curdir(),'blib','lib'));
use strict;
use diagnostics;

print "1..1\n";

# The following construct not allowed under
# strictures (refs). Hence strictures for
# refs have been turned off.
{
no strict ('refs');
  for ('function') {
    $_->();
  }
}

if(foo(15) == 30) {print "ok 1\n"}
else {
  warn "Expected 30, got ", foo(15), "\n";
  print "not ok 1\n";
}

sub function {
  use Inline C => Config =>
    DIRECTORY => '_Inline_test',
    USING => 'ParseRegExp';

    Inline->bind(C => <<'__CODE__');
    int foo(SV * x) {
      return (int)SvIV(x) * 2;
    }
__CODE__
}