File: 06-linenumbers.t

package info (click to toggle)
libfilter-signatures-perl 0.19-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 236 kB
  • sloc: perl: 1,321; makefile: 2
file content (74 lines) | stat: -rw-r--r-- 1,455 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#!perl -w
use strict;
use Test::More tests => 8;
use Data::Dumper;

require Filter::signatures;
# Mimic parts of the setup of Filter::Simple
my $extractor =
$Filter::Simple::placeholder = $Filter::Simple::placeholder
    = qr/\Q$;\E(.{4})\Q$;\E/s;

if( $^V >= 5.20 ) {
  require warnings; warnings->unimport('experimental::signatures');
  require feature; feature->import( 'signatures');
};

sub identical_to_native {
    my( $name, $expected,$decl ) = @_;
    local $_ = $decl;
    my $org;
    if( $^V >= 5.20 ) {
        $org = eval $_
            or die $@;
    };
    Filter::signatures::transform_arguments();
    no warnings 'redefine';
    my $l = eval $_;
    die $@ if $@;
    my $got = $l->('foo','bar');
    my $native = $org ? $org->('foo','bar') : $expected;
    is $got, $expected, $name
        or do { diag $decl; diag $_ };
    is $expected, $native, "Sanity check vs native code";
}

identical_to_native( "Anonymous subroutine", 5, <<'SUB' );
#line 1
sub (
$name
    , $value
    ) {
        return __LINE__
    };
SUB

identical_to_native( "Anonymous subroutine (traditional)", 2, <<'SUB' );
#line 1
sub ($name, $value) {
    return __LINE__
};
SUB

identical_to_native( "Named subroutine", 6, <<'SUB' );
#line 1
sub foo2
(
  $name
, $value
) {
        return __LINE__
};
\&foo2
SUB

identical_to_native( "Multiline default assignments", 6, <<'SUB' );
#line 1
sub (
$name
    , $value
='bar'
    ) {
        return __LINE__
    };
SUB