Commit | Line | Data |
---|---|---|
4e4da3ac Z |
1 | #!./perl |
2 | ||
3afb2f14 | 3 | print "1..7\n"; |
4e4da3ac Z |
4 | |
5 | $main::result = ""; | |
6 | eval q{ | |
3afb2f14 Z |
7 | $main::result .= "a(".__PACKAGE__."/".eval("__PACKAGE__").")"; |
8 | package Foo { | |
9 | $main::result .= "b(".__PACKAGE__."/".eval("__PACKAGE__").")"; | |
10 | package Bar::Baz { | |
11 | $main::result .= "c(".__PACKAGE__."/".eval("__PACKAGE__").")"; | |
4e4da3ac | 12 | } |
3afb2f14 Z |
13 | $main::result .= "d(".__PACKAGE__."/".eval("__PACKAGE__").")"; |
14 | } | |
15 | $main::result .= "e(".__PACKAGE__."/".eval("__PACKAGE__").")"; | |
4e4da3ac | 16 | }; |
3afb2f14 Z |
17 | print $main::result eq |
18 | "a(main/main)b(Foo/Foo)c(Bar::Baz/Bar::Baz)d(Foo/Foo)e(main/main)" ? | |
19 | "ok 1\n" : "not ok 1\n"; | |
4e4da3ac Z |
20 | |
21 | $main::result = ""; | |
22 | eval q{ | |
3afb2f14 Z |
23 | $main::result .= "a($Foo::VERSION)"; |
24 | $main::result .= "b($Bar::VERSION)"; | |
25 | package Foo 11 { ; } | |
26 | package Bar 22 { | |
27 | $main::result .= "c(".__PACKAGE__."/".eval("__PACKAGE__").")"; | |
28 | } | |
4e4da3ac | 29 | }; |
3afb2f14 | 30 | print $main::result eq "a(11)b(22)c(Bar/Bar)" ? "ok 2\n" : "not ok 2\n"; |
4e4da3ac Z |
31 | |
32 | $main::result = ""; | |
33 | eval q{ | |
3afb2f14 Z |
34 | $main::result .= "a(".__PACKAGE__."/".eval("__PACKAGE__").")"; |
35 | package Foo { } | |
36 | $main::result .= "b(".__PACKAGE__."/".eval("__PACKAGE__").")"; | |
4e4da3ac | 37 | }; |
3afb2f14 | 38 | print $main::result eq "a(main/main)b(main/main)" ? "ok 3\n" : "not ok 3\n"; |
4e4da3ac | 39 | |
af5050ac Z |
40 | eval q[package Foo {]; |
41 | print $@ =~ /\AMissing right curly / ? "ok 4\n" : "not ok 4\n"; | |
42 | ||
3afb2f14 Z |
43 | $main::result = ""; |
44 | eval q{ | |
45 | $main::result .= "a(".__LINE__.")"; | |
46 | package Foo { | |
47 | $main::result .= "b(".__LINE__.")"; | |
48 | package Bar::Baz { | |
49 | $main::result .= "c(".__LINE__.")"; | |
50 | } | |
51 | $main::result .= "d(".__LINE__.")"; | |
52 | } | |
53 | $main::result .= "e(".__LINE__.")"; | |
54 | package Quux { } | |
55 | $main::result .= "f(".__LINE__.")"; | |
56 | }; | |
57 | print $main::result eq "a(2)b(4)c(6)d(8)e(10)f(12)" ? "ok 5\n" : "not ok 5\n"; | |
58 | ||
59 | $main::result = ""; | |
60 | $main::warning = ""; | |
61 | $SIG{__WARN__} = sub { $main::warning .= $_[0]; }; | |
62 | eval q{ | |
63 | $main::result .= "a(".__PACKAGE__."/".eval("__PACKAGE__").")"; | |
64 | goto l0; | |
65 | $main::result .= "b(".__PACKAGE__."/".eval("__PACKAGE__").")"; | |
66 | package Foo { | |
67 | $main::result .= "c(".__PACKAGE__."/".eval("__PACKAGE__").")"; | |
68 | l0: | |
69 | $main::result .= "d(".__PACKAGE__."/".eval("__PACKAGE__").")"; | |
70 | goto l1; | |
71 | $main::result .= "e(".__PACKAGE__."/".eval("__PACKAGE__").")"; | |
72 | } | |
73 | $main::result .= "f(".__PACKAGE__."/".eval("__PACKAGE__").")"; | |
74 | l1: | |
75 | $main::result .= "g(".__PACKAGE__."/".eval("__PACKAGE__").")"; | |
76 | goto l2; | |
77 | $main::result .= "h(".__PACKAGE__."/".eval("__PACKAGE__").")"; | |
78 | package Bar { | |
79 | l2: | |
80 | $main::result .= "i(".__PACKAGE__."/".eval("__PACKAGE__").")"; | |
81 | } | |
82 | $main::result .= "j(".__PACKAGE__."/".eval("__PACKAGE__").")"; | |
83 | }; | |
84 | print $main::result eq | |
85 | "a(main/main)d(Foo/Foo)g(main/main)i(Bar/Bar)j(main/main)" ? | |
86 | "ok 6\n" : "not ok 6\n"; | |
87 | print $main::warning =~ /\A | |
88 | Use\ of\ "goto"\ [^\n]*\ line\ 3\.\n | |
89 | Use\ of\ "goto"\ [^\n]*\ line\ 15\.\n | |
90 | \z/x ? "ok 7\n" : "not ok 7\n"; | |
91 | ||
4e4da3ac | 92 | 1; |