## name basic passes
## failures 0
## cut
sub forward;
sub foo {
my ($self, $bar) = @_;
}
sub fu {
my $self = shift;
my $bar = shift;
}
sub foo($$) {
print $_[0];
return;
}
#-----------------------------------------------------------------------------
## name simple failures
## failures 3
## cut
sub foo {
my ($self, $bar1, $bar2, $bar3, $bar4, $bar5) = @_;
}
sub fu {
my $self = shift;
my $bar1 = shift;
my $bar2 = shift;
my $bar3 = shift;
my $bar4 = shift;
my $bar5 = shift;
}
sub foo($$$$$$) {
print $_[0];
return;
}
#-----------------------------------------------------------------------------
## name configured failures
## failures 3
## parms {max_arguments => 3}
## cut
sub foo {
my ($self, $bar1, $bar2, $bar3) = @_;
}
sub fu {
my $self = shift;
my $bar1 = shift;
my $bar2 = shift;
my $bar3 = shift;
}
sub foo($$$$) {
print $_[0];
return;
}
#-----------------------------------------------------------------------------
## name configured successes
## failures 0
## parms {max_arguments => 3}
## cut
sub foo_ok {
my ($self, $bar1, $bar2) = @_;
}
sub fu_ok {
my $self = shift;
my $bar1 = shift;
my $bar2 = shift;
}
sub foo_ok($$$) {
print $_[0];
return;
}
#-----------------------------------------------------------------------------
## name RT56627: prototype interpretation
## failures 0
## parms {max_arguments => 3}
## cut
sub foo ($;$) { return 1 }
sub bar ( $ ; $ ) { return 1 }
#-----------------------------------------------------------------------------
## name prototype grouping
## failures 0
## parms {max_arguments => 3}
## cut
sub foo (\[$@%]@) { return 1 }
sub bar ( \[$@%] $ \[$@%] ) { return 1 }
#-----------------------------------------------------------------------------
## name single term prototype (Perl 5.14)
## failures 0
## parms {max_arguments => 2}
## cut
sub foo ($+) { return 1 }
#-----------------------------------------------------------------------------
## name single term prototype (Perl 5.14)
## failures 1
## parms {max_arguments => 2}
## cut
sub foo ($$+) { return 1 }
#-----------------------------------------------------------------------------
## name ignore $self and $class
## failures 0
## parms {skip_object => 1}
## cut
sub self_foo {
my ($self, $bar1, $bar2, $bar3, $bar4, $bar5) = @_;
}
sub self_fu {
my $self = shift;
my $bar1 = shift;
my $bar2 = shift;
my $bar3 = shift;
my $bar4 = shift;
my $bar5 = shift;
}
sub self_bar {
my $self = shift;
my ($bar1, $bar2, $bar3, $bar4, $bar5) = @_;
}
sub class_foo {
my ($class, $bar1, $bar2, $bar3, $bar4, $bar5) = @_;
}
sub class_fu {
my $class = shift;
my $bar1 = shift;
my $bar2 = shift;
my $bar3 = shift;
my $bar4 = shift;
my $bar5 = shift;
}
sub class_bar {
my $class = shift;
my ($bar1, $bar2, $bar3, $bar4, $bar5) = @_;
}
#-----------------------------------------------------------------------------
## name ignore $self and $class with configured max_arguments
## failures 0
## parms {skip_object => 1, max_arguments => 2}
## cut
sub self_foo {
my ($self, $bar1, $bar2) = @_;
}
sub class_foo {
my ($class, $bar1, $bar2) = @_;
}
#-----------------------------------------------------------------------------
## name too many arguments despite ignoring $self and $class
## failures 5
## parms {skip_object => 1, max_arguments => 2}
## cut
sub self_foo {
my ($self, $bar1, $bar2, $bar3) = @_;
}
sub self_fu {
my $self = shift;
my ($bar1, $bar2, $bar3) = @_;
}
sub class_foo {
my ($class, $bar1, $bar2, $bar3) = @_;
}
sub class_fu {
my $class = shift;
my ($bar1, $bar2, $bar3) = @_;
}
sub classy_self {
my ($self, $class, $class, $self) = @_;
}
#-----------------------------------------------------------------------------
# Ideally these signature tests would be protected by a test for whether the
# perl being used supports signatures, and would ensure signatures is turned
# on.
## name signature without $self or $class - success
## failures 0
## parms {max_arguments => 2}
## cut
sub foo {
}
sub bar ($bar1) {
}
sub baz ($baz1, $baz2) {
}
sub qux ($qux_1, $qux_2) {
}
#-----------------------------------------------------------------------------
## name signature without $self or $class -- failure
## failures 1
## parms {max_arguments => 2}
## cut
sub foo ($foo1, $foo2, $foo3) {
}
#-----------------------------------------------------------------------------
## name signature with $self or $class -- success
## failures 0
## parms {skip_object => 1, max_arguments => 2}
## cut
sub foo ($class) {
}
sub bar ($self, $bar1) {
}
sub baz ($class, $baz1, $baz2) {
}
sub qux ($self, $qux_1, $qux_2) {
}
sub quux ( $self , $quux_1, $quux_2) {
}
#-----------------------------------------------------------------------------
## name signature with $self or $class -- failure
## failures 2
## parms {skip_object => 1, max_arguments => 2}
## cut
sub foo ($self, $foo1, $foo3, $foo3) {
}
sub bar ($class, $bar_1, $bar_2, $bar_3) {
}
#-----------------------------------------------------------------------------
# Local Variables:
# mode: cperl
# cperl-indent-level: 4
# fill-column: 78
# indent-tabs-mode: nil
# c-indentation-style: bsd
# End:
# ex: set ts=8 sts=4 sw=4 tw=78 ft=perl expandtab shiftround :