| 1 | #!./perl
|
|---|
| 2 |
|
|---|
| 3 | #
|
|---|
| 4 | # Ensure that syntax using colons (:) is parsed correctly.
|
|---|
| 5 | # The tests are done on the following tokens (by default):
|
|---|
| 6 | # ABC LABEL XYZZY m q qq qw qx s tr y AUTOLOAD and alarm
|
|---|
| 7 | # -- Robin Barker <[email protected]>
|
|---|
| 8 | #
|
|---|
| 9 |
|
|---|
| 10 | BEGIN {
|
|---|
| 11 | chdir 't' if -d 't';
|
|---|
| 12 | @INC = '../lib';
|
|---|
| 13 | }
|
|---|
| 14 |
|
|---|
| 15 | use strict;
|
|---|
| 16 |
|
|---|
| 17 | $_ = ''; # to avoid undef warning on m// etc.
|
|---|
| 18 |
|
|---|
| 19 | sub ok {
|
|---|
| 20 | my($test,$ok) = @_;
|
|---|
| 21 | print "not " unless $ok;
|
|---|
| 22 | print "ok $test\n";
|
|---|
| 23 | }
|
|---|
| 24 |
|
|---|
| 25 | $SIG{__WARN__} = sub { 1; }; # avoid some spurious warnings
|
|---|
| 26 |
|
|---|
| 27 | print "1..25\n";
|
|---|
| 28 |
|
|---|
| 29 | ok 1, (eval "package ABC; sub zyx {1}; 1;" and
|
|---|
| 30 | eval "ABC::zyx" and
|
|---|
| 31 | not eval "ABC:: eq ABC||" and
|
|---|
| 32 | not eval "ABC::: >= 0");
|
|---|
| 33 |
|
|---|
| 34 | ok 2, (eval "package LABEL; sub zyx {1}; 1;" and
|
|---|
| 35 | eval "LABEL::zyx" and
|
|---|
| 36 | not eval "LABEL:: eq LABEL||" and
|
|---|
| 37 | not eval "LABEL::: >= 0");
|
|---|
| 38 |
|
|---|
| 39 | ok 3, (eval "package XYZZY; sub zyx {1}; 1;" and
|
|---|
| 40 | eval "XYZZY::zyx" and
|
|---|
| 41 | not eval "XYZZY:: eq XYZZY||" and
|
|---|
| 42 | not eval "XYZZY::: >= 0");
|
|---|
| 43 |
|
|---|
| 44 | ok 4, (eval "package m; sub zyx {1}; 1;" and
|
|---|
| 45 | not eval "m::zyx" and
|
|---|
| 46 | eval "m:: eq m||" and
|
|---|
| 47 | not eval "m::: >= 0");
|
|---|
| 48 |
|
|---|
| 49 | ok 5, (eval "package q; sub zyx {1}; 1;" and
|
|---|
| 50 | not eval "q::zyx" and
|
|---|
| 51 | eval "q:: eq q||" and
|
|---|
| 52 | not eval "q::: >= 0");
|
|---|
| 53 |
|
|---|
| 54 | ok 6, (eval "package qq; sub zyx {1}; 1;" and
|
|---|
| 55 | not eval "qq::zyx" and
|
|---|
| 56 | eval "qq:: eq qq||" and
|
|---|
| 57 | not eval "qq::: >= 0");
|
|---|
| 58 |
|
|---|
| 59 | ok 7, (eval "package qw; sub zyx {1}; 1;" and
|
|---|
| 60 | not eval "qw::zyx" and
|
|---|
| 61 | eval "qw:: eq qw||" and
|
|---|
| 62 | not eval "qw::: >= 0");
|
|---|
| 63 |
|
|---|
| 64 | ok 8, (eval "package qx; sub zyx {1}; 1;" and
|
|---|
| 65 | not eval "qx::zyx" and
|
|---|
| 66 | eval "qx:: eq qx||" and
|
|---|
| 67 | not eval "qx::: >= 0");
|
|---|
| 68 |
|
|---|
| 69 | ok 9, (eval "package s; sub zyx {1}; 1;" and
|
|---|
| 70 | not eval "s::zyx" and
|
|---|
| 71 | not eval "s:: eq s||" and
|
|---|
| 72 | eval "s::: >= 0");
|
|---|
| 73 |
|
|---|
| 74 | ok 10, (eval "package tr; sub zyx {1}; 1;" and
|
|---|
| 75 | not eval "tr::zyx" and
|
|---|
| 76 | not eval "tr:: eq tr||" and
|
|---|
| 77 | eval "tr::: >= 0");
|
|---|
| 78 |
|
|---|
| 79 | ok 11, (eval "package y; sub zyx {1}; 1;" and
|
|---|
| 80 | not eval "y::zyx" and
|
|---|
| 81 | not eval "y:: eq y||" and
|
|---|
| 82 | eval "y::: >= 0");
|
|---|
| 83 |
|
|---|
| 84 | ok 12, (eval "ABC:1" and
|
|---|
| 85 | not eval "ABC:echo: eq ABC|echo|" and
|
|---|
| 86 | not eval "ABC:echo:ohce: >= 0");
|
|---|
| 87 |
|
|---|
| 88 | ok 13, (eval "LABEL:1" and
|
|---|
| 89 | not eval "LABEL:echo: eq LABEL|echo|" and
|
|---|
| 90 | not eval "LABEL:echo:ohce: >= 0");
|
|---|
| 91 |
|
|---|
| 92 | ok 14, (eval "XYZZY:1" and
|
|---|
| 93 | not eval "XYZZY:echo: eq XYZZY|echo|" and
|
|---|
| 94 | not eval "XYZZY:echo:ohce: >= 0");
|
|---|
| 95 |
|
|---|
| 96 | ok 15, (not eval "m:1" and
|
|---|
| 97 | eval "m:echo: eq m|echo|" and
|
|---|
| 98 | not eval "m:echo:ohce: >= 0");
|
|---|
| 99 |
|
|---|
| 100 | ok 16, (not eval "q:1" and
|
|---|
| 101 | eval "q:echo: eq q|echo|" and
|
|---|
| 102 | not eval "q:echo:ohce: >= 0");
|
|---|
| 103 |
|
|---|
| 104 | ok 17, (not eval "qq:1" and
|
|---|
| 105 | eval "qq:echo: eq qq|echo|" and
|
|---|
| 106 | not eval "qq:echo:ohce: >= 0");
|
|---|
| 107 |
|
|---|
| 108 | ok 18, (not eval "qw:1" and
|
|---|
| 109 | eval "qw:echo: eq qw|echo|" and
|
|---|
| 110 | not eval "qw:echo:ohce: >= 0");
|
|---|
| 111 |
|
|---|
| 112 | ok 19, (not eval "qx:1" and
|
|---|
| 113 | eval "qx:echo 1: eq qx|echo 1|" and # echo without args may warn
|
|---|
| 114 | not eval "qx:echo:ohce: >= 0");
|
|---|
| 115 |
|
|---|
| 116 | ok 20, (not eval "s:1" and
|
|---|
| 117 | not eval "s:echo: eq s|echo|" and
|
|---|
| 118 | eval "s:echo:ohce: >= 0");
|
|---|
| 119 |
|
|---|
| 120 | ok 21, (not eval "tr:1" and
|
|---|
| 121 | not eval "tr:echo: eq tr|echo|" and
|
|---|
| 122 | eval "tr:echo:ohce: >= 0");
|
|---|
| 123 |
|
|---|
| 124 | ok 22, (not eval "y:1" and
|
|---|
| 125 | not eval "y:echo: eq y|echo|" and
|
|---|
| 126 | eval "y:echo:ohce: >= 0");
|
|---|
| 127 |
|
|---|
| 128 | ok 23, (eval "AUTOLOAD:1" and
|
|---|
| 129 | not eval "AUTOLOAD:echo: eq AUTOLOAD|echo|" and
|
|---|
| 130 | not eval "AUTOLOAD:echo:ohce: >= 0");
|
|---|
| 131 |
|
|---|
| 132 | ok 24, (eval "and:1" and
|
|---|
| 133 | not eval "and:echo: eq and|echo|" and
|
|---|
| 134 | not eval "and:echo:ohce: >= 0");
|
|---|
| 135 |
|
|---|
| 136 | ok 25, (eval "alarm:1" and
|
|---|
| 137 | not eval "alarm:echo: eq alarm|echo|" and
|
|---|
| 138 | not eval "alarm:echo:ohce: >= 0");
|
|---|