summaryrefslogtreecommitdiffstats
path: root/perl_checker.src/test/various_errors.t
blob: f9c4089350ec01920b10f081851295c3398b8042 (plain)
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
local $xxx ||= $yyy                      applying ||= on a new initialized variable is wrong

$1 =~ s/xxx/yyy/                         do not modify the result of a match (eg: $1)

$xxx[1, 2]                               you must give only one argument

$xxx[]                                   you must give one argument

my $_x = 'xxx' if $xxx;                  replace "my $foo = ... if <cond>" with "my $foo = <cond> && ..."

$xxx or my $_x = 'xxx';                  replace "<cond> or my $foo = ..." with "my $foo = !<cond> && ..."

'' || 'xxx'                              <constant> || ... is the same as ...

if ($xxx = '') {}                        are you sure you did not mean "==" instead of "="?

N("xxx$yyy")                             don't use interpolated translated string, use %s or %d instead

if ($xxx && $yyy = xxx()) {}             invalid lvalue

1 + 2 >> 3                               missing parentheses (needed for clarity)

$xxx ? $yyy = 1 : $zzz = 2;              missing parentheses (needed for clarity)
                                         invalid lvalue

N_("xxx") . 'yyy'                        N_("xxx") . "yyy" is dumb since the string "xxx" will never get translated

join(@l)                                 first argument of join() must be a scalar

join(',', 'foo')                         join('...', $foo) is the same as $foo

if_($xxx)                                not enough parameters

push @l                                  you must give some arguments to push

push $xxx, 1                             push is expecting an array

pop @l, 1                                pop is expecting an array and nothing else

pop $xxx                                 pop is expecting an array and nothing else

system(qq(foo "$xxx"))                   instead of quoting parameters you should give a list of arguments

my (@l2, $xxx) = @l;                     @l2 takes all the arguments, $xxx is undef in any case

$bad                                     undeclared variable $bad

{ my $a }                                unused variable $a

my $xxx; yyy($xxx); my $xxx;             redeclared variable $xxx

{ my $xxx; $xxx = 1 }                    variable $xxx assigned, but not read

$a                                       undeclared variable $a

use bad;                                 can't find package bad

use pkg3 ':bad';                         package pkg3 doesn't export tag :bad
bad();                                   unknown function bad

use pkg3 ':missing_fs';                  name &f is not defined in package pkg3
f();                                     name &f0 is not defined in package pkg3

use pkg3 'f';                            name &f is not defined in package pkg3
f();