MCPcopy Index your code
hub / github.com/python/cpython / test_constant_folding_binop

Method test_constant_folding_binop

Lib/test/test_peepholer.py:323–434  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

321 self.check_lnotab(negzero)
322
323 def test_constant_folding_binop(self):
324 tests = [
325 ('1 + 2', 'NB_ADD', True, 'LOAD_SMALL_INT', 3),
326 ('1 + 2 + 3', 'NB_ADD', True, 'LOAD_SMALL_INT', 6),
327 ('1 + ""', 'NB_ADD', False, None, None),
328 ('1 - 2', 'NB_SUBTRACT', True, 'LOAD_CONST', -1),
329 ('1 - 2 - 3', 'NB_SUBTRACT', True, 'LOAD_CONST', -4),
330 ('1 - ""', 'NB_SUBTRACT', False, None, None),
331 ('2 * 2', 'NB_MULTIPLY', True, 'LOAD_SMALL_INT', 4),
332 ('2 * 2 * 2', 'NB_MULTIPLY', True, 'LOAD_SMALL_INT', 8),
333 ('2 / 2', 'NB_TRUE_DIVIDE', True, 'LOAD_CONST', 1.0),
334 ('2 / 2 / 2', 'NB_TRUE_DIVIDE', True, 'LOAD_CONST', 0.5),
335 ('2 / ""', 'NB_TRUE_DIVIDE', False, None, None),
336 ('2 // 2', 'NB_FLOOR_DIVIDE', True, 'LOAD_SMALL_INT', 1),
337 ('2 // 2 // 2', 'NB_FLOOR_DIVIDE', True, 'LOAD_SMALL_INT', 0),
338 ('2 // ""', 'NB_FLOOR_DIVIDE', False, None, None),
339 ('2 % 2', 'NB_REMAINDER', True, 'LOAD_SMALL_INT', 0),
340 ('2 % 2 % 2', 'NB_REMAINDER', True, 'LOAD_SMALL_INT', 0),
341 ('2 % ()', 'NB_REMAINDER', False, None, None),
342 ('2 ** 2', 'NB_POWER', True, 'LOAD_SMALL_INT', 4),
343 ('2 ** 2 ** 2', 'NB_POWER', True, 'LOAD_SMALL_INT', 16),
344 ('2 ** ""', 'NB_POWER', False, None, None),
345 ('2 << 2', 'NB_LSHIFT', True, 'LOAD_SMALL_INT', 8),
346 ('2 << 2 << 2', 'NB_LSHIFT', True, 'LOAD_SMALL_INT', 32),
347 ('2 << ""', 'NB_LSHIFT', False, None, None),
348 ('2 >> 2', 'NB_RSHIFT', True, 'LOAD_SMALL_INT', 0),
349 ('2 >> 2 >> 2', 'NB_RSHIFT', True, 'LOAD_SMALL_INT', 0),
350 ('2 >> ""', 'NB_RSHIFT', False, None, None),
351 ('2 | 2', 'NB_OR', True, 'LOAD_SMALL_INT', 2),
352 ('2 | 2 | 2', 'NB_OR', True, 'LOAD_SMALL_INT', 2),
353 ('2 | ""', 'NB_OR', False, None, None),
354 ('2 & 2', 'NB_AND', True, 'LOAD_SMALL_INT', 2),
355 ('2 & 2 & 2', 'NB_AND', True, 'LOAD_SMALL_INT', 2),
356 ('2 & ""', 'NB_AND', False, None, None),
357 ('2 ^ 2', 'NB_XOR', True, 'LOAD_SMALL_INT', 0),
358 ('2 ^ 2 ^ 2', 'NB_XOR', True, 'LOAD_SMALL_INT', 2),
359 ('2 ^ ""', 'NB_XOR', False, None, None),
360 ('(1, )[0]', 'NB_SUBSCR', True, 'LOAD_SMALL_INT', 1),
361 ('(1, )[-1]', 'NB_SUBSCR', True, 'LOAD_SMALL_INT', 1),
362 ('(1 + 2, )[0]', 'NB_SUBSCR', True, 'LOAD_SMALL_INT', 3),
363 ('(1, (1, 2))[1][1]', 'NB_SUBSCR', True, 'LOAD_SMALL_INT', 2),
364 ('(1, 2)[2-1]', 'NB_SUBSCR', True, 'LOAD_SMALL_INT', 2),
365 ('(1, (1, 2))[1][2-1]', 'NB_SUBSCR', True, 'LOAD_SMALL_INT', 2),
366 ('(1, (1, 2))[1:6][0][2-1]', 'NB_SUBSCR', True, 'LOAD_SMALL_INT', 2),
367 ('"a"[0]', 'NB_SUBSCR', True, 'LOAD_CONST', 'a'),
368 ('("a" + "b")[1]', 'NB_SUBSCR', True, 'LOAD_CONST', 'b'),
369 ('("a" + "b", )[0][1]', 'NB_SUBSCR', True, 'LOAD_CONST', 'b'),
370 ('("a" * 10)[9]', 'NB_SUBSCR', True, 'LOAD_CONST', 'a'),
371 ('(1, )[1]', 'NB_SUBSCR', False, None, None),
372 ('(1, )[-2]', 'NB_SUBSCR', False, None, None),
373 ('"a"[1]', 'NB_SUBSCR', False, None, None),
374 ('"a"[-2]', 'NB_SUBSCR', False, None, None),
375 ('("a" + "b")[2]', 'NB_SUBSCR', False, None, None),
376 ('("a" + "b", )[0][2]', 'NB_SUBSCR', False, None, None),
377 ('("a" + "b", )[1][0]', 'NB_SUBSCR', False, None, None),
378 ('("a" * 10)[10]', 'NB_SUBSCR', False, None, None),
379 ('(1, (1, 2))[2:6][0][2-1]', 'NB_SUBSCR', False, None, None),
380 ]

Callers

nothing calls this directly

Calls 7

check_lnotabMethod · 0.95
get_binop_argvalFunction · 0.85
assertNotInBytecodeMethod · 0.80
assertInBytecodeMethod · 0.80
assertNotInMethod · 0.80
compileFunction · 0.50
subTestMethod · 0.45

Tested by

no test coverage detected