Test that quoted words aren't interpreted as keywords.
[p5sagit/Devel-Declare.git] / t / quote.t
1 use strict;
2 use warnings;
3 use Test::More tests => 14;
4
5 use Devel::Declare 'method' => sub {};
6
7 sub test_eval;
8
9 TODO: {
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;
25 tum ti tum
26 method';
27     test_eval 'no warnings "reserved"; open method, "</dev/null"';
28     test_eval '<method>';
29 }
30
31 sub 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 }