Skip to content

Commit f2413c9

Browse files
committed
beta1 updates
1 parent ae7302b commit f2413c9

2 files changed

Lines changed: 27 additions & 16 deletions

File tree

src/bytecode/instr.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,13 @@ class CommonConstant(enum.IntEnum):
269269
BUILTIN_TUPLE = 2
270270
BUILTIN_ALL = 3
271271
BUILTIN_ANY = 4
272+
BUILTIN_LIST = 5
273+
BUILTIN_SET = 6
274+
CONSTANT_NONE = 7
275+
CONSTANT_EMPTY_STR = 8
276+
CONSTANT_TRUE = 9
277+
CONSTANT_FALSE = 10
278+
CONSTANT_MINUS_ONE = 11
272279

273280

274281
# This make type checking happy but means it won't catch attempt to manipulate an unset

tests/test_concrete.py

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ def test_eq(self):
244244
def test_attr(self):
245245
code_obj = get_code("x = 5")
246246
code = ConcreteBytecode.from_code(code_obj)
247-
self.assertEqual(code.consts, [5, None])
247+
self.assertEqual(code.consts, [5] if PY315 else [5, None])
248248
self.assertEqual(code.names, ["x"])
249249
self.assertEqual(code.varnames, [])
250250
self.assertEqual(code.freevars, [])
@@ -256,7 +256,7 @@ def test_attr(self):
256256
ConcreteInstr("CACHE", 0, lineno=0),
257257
ConcreteInstr("LOAD_SMALL_INT", 5, lineno=1),
258258
ConcreteInstr("STORE_NAME", 0, lineno=1),
259-
ConcreteInstr("LOAD_CONST", 1, lineno=1),
259+
ConcreteInstr("LOAD_COMMON_CONSTANT", 7, lineno=1),
260260
ConcreteInstr("RETURN_VALUE", lineno=1),
261261
]
262262
if PY315
@@ -755,26 +755,30 @@ def foo(x: int, y: int):
755755
if PY315:
756756
ann_code = concrete.consts[0]
757757
func_code = concrete.consts[1]
758-
expected_py315 = [
759-
ConcreteInstr("RESUME", 0, lineno=0),
760-
ConcreteInstr("CACHE", 0, lineno=0),
761-
ConcreteInstr("LOAD_CONST", 0, lineno=1),
762-
ConcreteInstr("MAKE_FUNCTION", lineno=1),
763-
ConcreteInstr("LOAD_CONST", 1, lineno=1),
764-
ConcreteInstr("MAKE_FUNCTION", lineno=1),
765-
ConcreteInstr("SET_FUNCTION_ATTRIBUTE", 16, lineno=1),
766-
ConcreteInstr("STORE_NAME", 0, lineno=1),
767-
ConcreteInstr("LOAD_CONST", 2, lineno=1),
768-
ConcreteInstr("RETURN_VALUE", lineno=1),
769-
]
758+
if PY315:
759+
expected_py315 = [
760+
ConcreteInstr("RESUME", 0, lineno=0),
761+
ConcreteInstr("CACHE", 0, lineno=0),
762+
ConcreteInstr("LOAD_CONST", 0, lineno=1),
763+
ConcreteInstr("MAKE_FUNCTION", lineno=1),
764+
ConcreteInstr("LOAD_CONST", 1, lineno=1),
765+
ConcreteInstr("MAKE_FUNCTION", lineno=1),
766+
ConcreteInstr("SET_FUNCTION_ATTRIBUTE", 16, lineno=1),
767+
ConcreteInstr("STORE_NAME", 0, lineno=1),
768+
ConcreteInstr("LOAD_COMMON_CONSTANT", 7, lineno=1),
769+
ConcreteInstr("RETURN_VALUE", lineno=1),
770+
]
771+
expected_consts = [ann_code, func_code]
772+
else:
773+
expected_consts = [ann_code, func_code, None]
770774
self.assertSequenceEqual(concrete.names, ["foo"])
771-
self.assertSequenceEqual(concrete.consts, [ann_code, func_code, None])
775+
self.assertSequenceEqual(concrete.consts, expected_consts)
772776
self.assertInstructionListEqual(list(concrete), expected_py315)
773777
concrete = ConcreteBytecode.from_code(code_obj, extended_arg=True)
774778
ann_code = concrete.consts[0]
775779
func_code = concrete.consts[1]
776780
self.assertEqual(concrete.names, ["foo"])
777-
self.assertEqual(concrete.consts, [ann_code, func_code, None])
781+
self.assertEqual(concrete.consts, expected_consts)
778782
self.assertInstructionListEqual(list(concrete), expected_py315)
779783
return
780784
if PY314:

0 commit comments

Comments
 (0)