This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
fix C<if (...) { package Foo; ... }> misoptimization that fails
[perl5.git] / t / comp / package.t
1 #!./perl
2
3 print "1..8\n";
4
5 $blurfl = 123;
6 $foo = 3;
7
8 package xyz;
9
10 $bar = 4;
11
12 {
13     package ABC;
14     $blurfl = 5;
15     $main'a = $'b;
16 }
17
18 $ABC'dyick = 6;
19
20 $xyz = 2;
21
22 $main = join(':', sort(keys %main::));
23 $xyz = join(':', sort(keys %xyz::));
24 $ABC = join(':', sort(keys %ABC::));
25
26 if ('a' lt 'A') {
27     print $xyz eq 'bar:main:xyz:ABC' ? "ok 1\n" : "not ok 1 '$xyz'\n";
28 } else {
29     print $xyz eq 'ABC:bar:main:xyz' ? "ok 1\n" : "not ok 1 '$xyz'\n";
30 }    
31 print $ABC eq 'blurfl:dyick' ? "ok 2\n" : "not ok 2 '$ABC'\n";
32 print $main'blurfl == 123 ? "ok 3\n" : "not ok 3\n";
33
34 package ABC;
35
36 print $blurfl == 5 ? "ok 4\n" : "not ok 4\n";
37 eval 'print $blurfl == 5 ? "ok 5\n" : "not ok 5\n";';
38 eval 'package main; print $blurfl == 123 ? "ok 6\n" : "not ok 6\n";';
39 print $blurfl == 5 ? "ok 7\n" : "not ok 7\n";
40
41 package main;
42
43 sub c { caller(0) }
44
45 sub foo {
46    my $s = shift;
47    if ($s) {
48         package PQR;
49         main::c();
50    }
51 }
52
53 print((foo(1))[0] eq 'PQR' ? "ok 8\n" : "not ok 8\n");