This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
fixup new hash benchmarks to be lighter
[perl5.git] / t / comp / package_block.t
CommitLineData
4e4da3ac
Z
1#!./perl
2
3afb2f14 3print "1..7\n";
4e4da3ac
Z
4
5$main::result = "";
6eval 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
17print $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 = "";
22eval 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 30print $main::result eq "a(11)b(22)c(Bar/Bar)" ? "ok 2\n" : "not ok 2\n";
4e4da3ac
Z
31
32$main::result = "";
33eval q{
3afb2f14
Z
34 $main::result .= "a(".__PACKAGE__."/".eval("__PACKAGE__").")";
35 package Foo { }
36 $main::result .= "b(".__PACKAGE__."/".eval("__PACKAGE__").")";
4e4da3ac 37};
3afb2f14 38print $main::result eq "a(main/main)b(main/main)" ? "ok 3\n" : "not ok 3\n";
4e4da3ac 39
af5050ac
Z
40eval q[package Foo {];
41print $@ =~ /\AMissing right curly / ? "ok 4\n" : "not ok 4\n";
42
3afb2f14
Z
43$main::result = "";
44eval 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};
57print $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]; };
62eval 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};
84print $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";
87print $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 921;