@@ -142,6 +142,13 @@ def obj.foo2(&proc); proc.call; end
142
142
eval %q{$& = ""}
143
143
} . should raise_error ( SyntaxError , /Can't set variable \$ &/ )
144
144
end
145
+
146
+ it "is read-only when aliased" do
147
+ alias $predefined_spec_ampersand $&
148
+ -> {
149
+ $predefined_spec_ampersand = ""
150
+ } . should raise_error ( NameError , '$predefined_spec_ampersand is a read-only variable' )
151
+ end
145
152
end
146
153
147
154
describe "Predefined global $`" do
@@ -166,6 +173,13 @@ def obj.foo2(&proc); proc.call; end
166
173
eval %q{$` = ""}
167
174
} . should raise_error ( SyntaxError , /Can't set variable \$ `/ )
168
175
end
176
+
177
+ it "is read-only when aliased" do
178
+ alias $predefined_spec_backquote $`
179
+ -> {
180
+ $predefined_spec_backquote = ""
181
+ } . should raise_error ( NameError , '$predefined_spec_backquote is a read-only variable' )
182
+ end
169
183
end
170
184
171
185
describe "Predefined global $'" do
@@ -190,6 +204,13 @@ def obj.foo2(&proc); proc.call; end
190
204
eval %q{$' = ""}
191
205
} . should raise_error ( SyntaxError , /Can't set variable \$ '/ )
192
206
end
207
+
208
+ it "is read-only when aliased" do
209
+ alias $predefined_spec_single_quote $'
210
+ -> {
211
+ $predefined_spec_single_quote = ""
212
+ } . should raise_error ( NameError , '$predefined_spec_single_quote is a read-only variable' )
213
+ end
193
214
end
194
215
195
216
describe "Predefined global $+" do
@@ -214,6 +235,13 @@ def obj.foo2(&proc); proc.call; end
214
235
eval %q{$+ = ""}
215
236
} . should raise_error ( SyntaxError , /Can't set variable \$ \+ / )
216
237
end
238
+
239
+ it "is read-only when aliased" do
240
+ alias $predefined_spec_plus $+
241
+ -> {
242
+ $predefined_spec_plus = ""
243
+ } . should raise_error ( NameError , '$predefined_spec_plus is a read-only variable' )
244
+ end
217
245
end
218
246
219
247
describe "Predefined globals $1..N" do
@@ -1198,7 +1226,7 @@ def obj.foo2; yield; end
1198
1226
end
1199
1227
1200
1228
it "raises a SyntaxError if assigned to" do
1201
- -> { eval ( "nil = true" ) } . should raise_error ( SyntaxError )
1229
+ -> { eval ( "nil = true" ) } . should raise_error ( SyntaxError , /Can't assign to nil/ )
1202
1230
end
1203
1231
end
1204
1232
@@ -1208,7 +1236,7 @@ def obj.foo2; yield; end
1208
1236
end
1209
1237
1210
1238
it "raises a SyntaxError if assigned to" do
1211
- -> { eval ( "true = false" ) } . should raise_error ( SyntaxError )
1239
+ -> { eval ( "true = false" ) } . should raise_error ( SyntaxError , /Can't assign to true/ )
1212
1240
end
1213
1241
end
1214
1242
@@ -1218,13 +1246,13 @@ def obj.foo2; yield; end
1218
1246
end
1219
1247
1220
1248
it "raises a SyntaxError if assigned to" do
1221
- -> { eval ( "false = nil" ) } . should raise_error ( SyntaxError )
1249
+ -> { eval ( "false = nil" ) } . should raise_error ( SyntaxError , /Can't assign to false/ )
1222
1250
end
1223
1251
end
1224
1252
1225
1253
describe "The self pseudo-variable" do
1226
1254
it "raises a SyntaxError if assigned to" do
1227
- -> { eval ( "self = 1" ) } . should raise_error ( SyntaxError )
1255
+ -> { eval ( "self = 1" ) } . should raise_error ( SyntaxError , /Can't change the value of self/ )
1228
1256
end
1229
1257
end
1230
1258
0 commit comments