Test that quoted words aren't interpreted as keywords.
[p5sagit/Devel-Declare.git] / t / quote.t
CommitLineData
c0ebfc1e 1use strict;
2use warnings;
3use Test::More tests => 14;
4
5use Devel::Declare 'method' => sub {};
6
7sub test_eval;
8
9TODO: {
10 local $TODO = "dd_ck_const doesn't special-case ops created in quotelike contexts";
11 test_eval 'qr/method/';
12 test_eval 'qq/method/';
13 test_eval '/method/';
14 test_eval 's/method//';
15 test_eval '`method`';
16 test_eval 'qx/method/';
17 test_eval 'tr/method/METHOD/';
18
19 # these ones work OK
20 test_eval 'q/method/';
21 test_eval "'method'";
22 test_eval '"method"';
23 test_eval 'qw/method/';
24 test_eval '<<method;
25tum ti tum
26method';
27 test_eval 'no warnings "reserved"; open method, "</dev/null"';
28 test_eval '<method>';
29}
30
31sub test_eval {
32 my $what = shift;
33 eval $what;
34 ok !$@, "$what" or d($@);
35}
36{
37 my %seen;
38 sub d { # diag the error the first time we get it
39 my $err = shift;
40 $err =~s/ at .*$//;
41 $seen{$err}++ or diag $err;
42 }
43}