text: #!perl
  
  BEGIN {
      if ($ENV{PERL_CORE}) {
  	chdir 't' if -d 't';
  	@INC = '../lib';
      }
  }
  
  use Test::More tests => 18;
  use Attribute::Handlers;
  
  sub Args : ATTR(CODE) {
      my ($package, $symbol, $referent, $attr, $data, $phase, $filename, $linenum) = @_;
      is( $package,	'main',		'package' );
      is( $symbol,	\*foo,		'symbol' );
      is( $referent,	\&foo,		'referent' );
      is( $attr,		'Args',		'attr' );
      is( ref $data,	'ARRAY',	'data' );
      is( $data->[0],	'bar',		'data' );
      is( $phase,		'CHECK',	'phase' );
      is( $filename,	__FILE__,	'filename' );
      is( $linenum,	26,		'linenum' );
  }
  
  sub foo :Args(bar) {}
  
  my $ref;
  sub myref { $ref = shift; }
  my $b;
  #line 42
  eval "my \$bar :SArgs(grumpf); \$b = \\\$bar";
  is( $b, $ref, 'referent' );
  
  sub SArgs : ATTR(SCALAR) {
      my ($package, $symbol, $referent, $attr, $data, $phase, $filename, $linenum) = @_;
      is( $package,	'main',		'package' );
      is( $symbol,	'LEXICAL',	'symbol' );
      myref($referent);
      is( $attr,		'SArgs',	'attr' );
      is( ref $data,	'ARRAY',	'data' );
      is( $data->[0],	'grumpf',	'data' );
      is( $phase,		'CHECK',	'phase' );
      TODO: {
        local $TODO = "Doesn't work correctly" if $] < 5.008;
        is( $filename,	__FILE__,	'filename' );
        is( $linenum,	42,		'linenum' );
      }
  }
  