1 Check the lexical scoping of the switch keywords.
2 (The actual behaviour is tested in t/op/switch.t)
5 # No switch; given should be a bareword.
9 Unquoted string "given" may clash with future reserved word at - line 3.
12 # No switch; when should be a bareword.
16 Unquoted string "when" may clash with future reserved word at - line 3.
19 # No switch; default should be a bareword.
23 Unquoted string "default" may clash with future reserved word at - line 3.
26 # No switch; break should be a bareword.
30 Unquoted string "break" may clash with future reserved word at - line 3.
33 # No switch; but continue is still a keyword
34 print STDOUT continue;
36 syntax error at - line 2, near "STDOUT continue"
37 Execution of - aborted due to compilation errors.
39 # Use switch; so given is a keyword
41 given("okay\n") { print }
45 # Use switch; so when is a keyword
47 given(1) { when(1) { print "okay" } }
51 # Use switch; so default is a keyword
53 given(1) { default { print "okay" } }
57 # Use switch; so break is a keyword
61 Can't "break" outside a given block at - line 3.
63 # Use switch; so continue is a keyword
67 Can't "continue" outside a when block at - line 3.
69 # switch out of scope; given should be a bareword.
71 { use feature 'switch';
72 given (1) {print "Okay here\n";}
76 Unquoted string "given" may clash with future reserved word at - line 6.
80 # switch out of scope; when should be a bareword.
82 { use feature 'switch';
83 given (1) { when(1) {print "Okay here\n";} }
87 Unquoted string "when" may clash with future reserved word at - line 6.
91 # switch out of scope; default should be a bareword.
93 { use feature 'switch';
94 given (1) { default {print "Okay here\n";} }
98 Unquoted string "default" may clash with future reserved word at - line 6.
102 # switch out of scope; break should be a bareword.
104 { use feature 'switch';
109 Unquoted string "break" may clash with future reserved word at - line 6.
112 # switch out of scope; continue should not work
113 { use feature 'switch';
114 given (1) { default {continue} }
116 print STDOUT continue;
118 syntax error at - line 5, near "STDOUT continue"
119 Execution of - aborted due to compilation errors.
121 # C<no feature 'switch'> should work
123 use feature 'switch';
124 given (1) { when(1) {print "Okay here\n";} }
128 Unquoted string "when" may clash with future reserved word at - line 6.
132 # C<no feature> should work too
134 use feature 'switch';
135 given (1) { when(1) {print "Okay here\n";} }
139 Unquoted string "when" may clash with future reserved word at - line 6.
143 # Without the feature, no 'Unambiguous use of' warning:
145 @break = ($break = "break");
146 print ${break}, ${break[0]};
150 # With the feature, we get an 'Unambiguous use of' warning:
152 use feature 'switch';
153 @break = ($break = "break");
154 print ${break}, ${break[0]};
156 Ambiguous use of ${break} resolved to $break at - line 5.
157 Ambiguous use of ${break[...]} resolved to $break[...] at - line 5.