File: scalar_const.t

package info (click to toggle)
liblexical-var-perl 0.010-1
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 464 kB
  • sloc: perl: 76; makefile: 3
file content (92 lines) | stat: -rw-r--r-- 1,778 bytes parent folder | download
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
use warnings;
use strict;

use Test::More tests => 12;

BEGIN { $SIG{__WARN__} = sub { die "WARNING: $_[0]" }; }

is eval q{
	use Lexical::Var '$foo' => \(my $x=123);
	$foo;
}, 123;

# test that non-constant defined $foo is not a const op
eval q{
	die;
	use Lexical::Var '$foo' => \(my $x=123);
	$foo = 456;
};
like $@, qr/\ADied /;

# test that non-constant defined $foo does not participate in constant folding
eval q{
	die;
	use Lexical::Var '$foo' => \(my $x=123);
	!$foo = 456;
};
like $@, qr/\ACan't modify not /;

is eval q{
	use Lexical::Var '$foo' => \123;
	$foo;
}, 123;

# test that constant defined $foo is a const op
eval q{
	die;
	use Lexical::Var '$foo' => \123;
	$foo = 456;
};
like $@, qr/\ACan't modify constant item /;

# test that constant defined $foo participates in constant folding
eval q{
	die;
	use Lexical::Var '$foo' => \123;
	!$foo = 456;
};
like $@, qr/\ACan't modify constant item /;

is_deeply scalar(eval q{
	use Lexical::Var '$foo' => \(my $x = my $y = undef);
	[$foo];
}), [undef];

# test that non-constant undef $foo is not a const op
eval q{
	die;
	use Lexical::Var '$foo' => \(my $x = my $y = undef);
	$foo = 456;
};
like $@, qr/\ADied /;

# test that non-constant undef $foo does not participate in constant folding
eval q{
	die;
	use Lexical::Var '$foo' => \(my $x = my $y = undef);
	!$foo = 456;
};
like $@, qr/\ACan't modify not /;

is eval q{
	use Lexical::Var '$foo' => \undef;
	$foo;
}, undef;

# test that constant undef $foo is a const op
eval q{
	die;
	use Lexical::Var '$foo' => \undef;
	$foo = 456;
};
like $@, qr/\ACan't modify constant item /;

# test that constant undef $foo participates in constant folding
eval q{
	die;
	use Lexical::Var '$foo' => \undef;
	!$foo = 456;
};
like $@, qr/\ACan't modify constant item /;

1;