@@ -214,99 +214,35 @@ def test_bad_numerical_literals(self):
214
214
check ("1e+" , "invalid decimal literal" )
215
215
216
216
def test_end_of_numerical_literals (self ):
217
- def check (test ):
218
- with self .assertWarns (DeprecationWarning ):
219
- compile (test , "<testcase>" , "eval" )
220
-
221
- def check_error (test ):
222
- with warnings .catch_warnings (record = True ) as w :
223
- with self .assertRaises (SyntaxError ):
224
- compile (test , "<testcase>" , "eval" )
225
- self .assertEqual (w , [])
226
-
227
- check_error ("0xfand x" )
228
- check ("0o7and x" )
229
- check ("0b1and x" )
230
- check ("9and x" )
231
- check ("0and x" )
232
- check ("1.and x" )
233
- check ("1e3and x" )
234
- check ("1jand x" )
235
-
236
- check ("0xfor x" )
237
- check ("0o7or x" )
238
- check ("0b1or x" )
239
- check ("9or x" )
240
- check_error ("0or x" )
241
- check ("1.or x" )
242
- check ("1e3or x" )
243
- check ("1jor x" )
244
-
245
- check ("0xfin x" )
246
- check ("0o7in x" )
247
- check ("0b1in x" )
248
- check ("9in x" )
249
- check ("0in x" )
250
- check ("1.in x" )
251
- check ("1e3in x" )
252
- check ("1jin x" )
253
-
254
- check ("0xfnot in x" )
255
- check ("0o7not in x" )
256
- check ("0b1not in x" )
257
- check ("9not in x" )
258
- check ("0not in x" )
259
- check ("1.not in x" )
260
- check ("1e3not in x" )
261
- check ("1jnot in x" )
262
-
263
- with warnings .catch_warnings ():
264
- warnings .simplefilter ('ignore' , SyntaxWarning )
265
- check ("0xfis x" )
266
- check ("0o7is x" )
267
- check ("0b1is x" )
268
- check ("9is x" )
269
- check ("0is x" )
270
- check ("1.is x" )
271
- check ("1e3is x" )
272
- check ("1jis x" )
273
-
274
- check ("0xfif x else y" )
275
- check ("0o7if x else y" )
276
- check ("0b1if x else y" )
277
- check ("9if x else y" )
278
- check ("0if x else y" )
279
- check ("1.if x else y" )
280
- check ("1e3if x else y" )
281
- check ("1jif x else y" )
282
-
283
- check_error ("x if 0xfelse y" )
284
- check ("x if 0o7else y" )
285
- check ("x if 0b1else y" )
286
- check ("x if 9else y" )
287
- check ("x if 0else y" )
288
- check ("x if 1.else y" )
289
- check ("x if 1e3else y" )
290
- check ("x if 1jelse y" )
217
+ def check (test , error = False ):
218
+ with self .subTest (expr = test ):
219
+ if error :
220
+ with warnings .catch_warnings (record = True ) as w :
221
+ with self .assertRaises (SyntaxError ):
222
+ compile (test , "<testcase>" , "eval" )
223
+ self .assertEqual (w , [])
224
+ else :
225
+ with self .assertWarns (DeprecationWarning ):
226
+ compile (test , "<testcase>" , "eval" )
227
+
228
+ for num in "0xf" , "0o7" , "0b1" , "9" , "0" , "1." , "1e3" , "1j" :
229
+ compile (num , "<testcase>" , "eval" )
230
+ check (f"{ num } and x" , error = (num == "0xf" ))
231
+ check (f"{ num } or x" , error = (num == "0" ))
232
+ check (f"{ num } in x" )
233
+ check (f"{ num } not in x" )
234
+ with warnings .catch_warnings ():
235
+ warnings .filterwarnings ('ignore' , '"is" with a literal' ,
236
+ SyntaxWarning )
237
+ check (f"{ num } is x" )
238
+ check (f"{ num } if x else y" )
239
+ check (f"x if { num } else y" , error = (num == "0xf" ))
240
+ check (f"[{ num } for x in ()]" )
241
+ check (f"{ num } spam" , error = True )
291
242
292
243
check ("[0x1ffor x in ()]" )
293
244
check ("[0x1for x in ()]" )
294
245
check ("[0xfor x in ()]" )
295
- check ("[0o7for x in ()]" )
296
- check ("[0b1for x in ()]" )
297
- check ("[9for x in ()]" )
298
- check ("[1.for x in ()]" )
299
- check ("[1e3for x in ()]" )
300
- check ("[1jfor x in ()]" )
301
-
302
- check_error ("0xfspam" )
303
- check_error ("0o7spam" )
304
- check_error ("0b1spam" )
305
- check_error ("9spam" )
306
- check_error ("0spam" )
307
- check_error ("1.spam" )
308
- check_error ("1e3spam" )
309
- check_error ("1jspam" )
310
246
311
247
def test_string_literals (self ):
312
248
x = '' ; y = "" ; self .assertTrue (len (x ) == 0 and x == y )
0 commit comments