@@ -158,7 +158,7 @@ def test_leading_newlines(self):
158158 s256 = "" .join (["\n " ] * 256 + ["spam" ])
159159 co = compile (s256 , 'fn' , 'exec' )
160160 self .assertEqual (co .co_firstlineno , 1 )
161- self .assertEqual (list (co .co_lines ()), [(0 , 8 , 257 )])
161+ self .assertEqual (list (co .co_lines ()), [(0 , 2 , None ), ( 2 , 10 , 257 )])
162162
163163 def test_literals_with_leading_zeroes (self ):
164164 for arg in ["077787" , "0xj" , "0x." , "0e" , "090000000000000" ,
@@ -759,7 +759,7 @@ def unused_block_while_else():
759759
760760 for func in funcs :
761761 opcodes = list (dis .get_instructions (func ))
762- self .assertLessEqual (len (opcodes ), 3 )
762+ self .assertLessEqual (len (opcodes ), 4 )
763763 self .assertEqual ('LOAD_CONST' , opcodes [- 2 ].opname )
764764 self .assertEqual (None , opcodes [- 2 ].argval )
765765 self .assertEqual ('RETURN_VALUE' , opcodes [- 1 ].opname )
@@ -778,10 +778,10 @@ def continue_in_while():
778778 # Check that we did not raise but we also don't generate bytecode
779779 for func in funcs :
780780 opcodes = list (dis .get_instructions (func ))
781- self .assertEqual (2 , len (opcodes ))
782- self .assertEqual ('LOAD_CONST' , opcodes [0 ].opname )
783- self .assertEqual (None , opcodes [0 ].argval )
784- self .assertEqual ('RETURN_VALUE' , opcodes [1 ].opname )
781+ self .assertEqual (3 , len (opcodes ))
782+ self .assertEqual ('LOAD_CONST' , opcodes [1 ].opname )
783+ self .assertEqual (None , opcodes [1 ].argval )
784+ self .assertEqual ('RETURN_VALUE' , opcodes [2 ].opname )
785785
786786 def test_consts_in_conditionals (self ):
787787 def and_true (x ):
@@ -802,9 +802,9 @@ def or_false(x):
802802 for func in funcs :
803803 with self .subTest (func = func ):
804804 opcodes = list (dis .get_instructions (func ))
805- self .assertEqual ( 2 , len (opcodes ))
806- self .assertIn ('LOAD_' , opcodes [0 ].opname )
807- self .assertEqual ('RETURN_VALUE' , opcodes [1 ].opname )
805+ self .assertLessEqual ( len (opcodes ), 3 )
806+ self .assertIn ('LOAD_' , opcodes [- 2 ].opname )
807+ self .assertEqual ('RETURN_VALUE' , opcodes [- 1 ].opname )
808808
809809 def test_imported_load_method (self ):
810810 sources = [
@@ -906,7 +906,7 @@ def load_attr():
906906 o .
907907 a
908908 )
909- load_attr_lines = [ 2 , 3 , 1 ]
909+ load_attr_lines = [ 0 , 2 , 3 , 1 ]
910910
911911 def load_method ():
912912 return (
@@ -915,7 +915,7 @@ def load_method():
915915 0
916916 )
917917 )
918- load_method_lines = [ 2 , 3 , 4 , 3 , 1 ]
918+ load_method_lines = [ 0 , 2 , 3 , 4 , 3 , 1 ]
919919
920920 def store_attr ():
921921 (
@@ -924,7 +924,7 @@ def store_attr():
924924 ) = (
925925 v
926926 )
927- store_attr_lines = [ 5 , 2 , 3 ]
927+ store_attr_lines = [ 0 , 5 , 2 , 3 ]
928928
929929 def aug_store_attr ():
930930 (
@@ -933,7 +933,7 @@ def aug_store_attr():
933933 ) += (
934934 v
935935 )
936- aug_store_attr_lines = [ 2 , 3 , 5 , 1 , 3 ]
936+ aug_store_attr_lines = [ 0 , 2 , 3 , 5 , 1 , 3 ]
937937
938938 funcs = [ load_attr , load_method , store_attr , aug_store_attr ]
939939 func_lines = [ load_attr_lines , load_method_lines ,
@@ -942,7 +942,8 @@ def aug_store_attr():
942942 for func , lines in zip (funcs , func_lines , strict = True ):
943943 with self .subTest (func = func ):
944944 code_lines = [ line - func .__code__ .co_firstlineno
945- for (_ , _ , line ) in func .__code__ .co_lines () ]
945+ for (_ , _ , line ) in func .__code__ .co_lines ()
946+ if line is not None ]
946947 self .assertEqual (lines , code_lines )
947948
948949 def test_line_number_genexp (self ):
@@ -966,7 +967,7 @@ async def test(aseq):
966967 async for i in aseq :
967968 body
968969
969- expected_lines = [None , 1 , 2 , 1 ]
970+ expected_lines = [None , 0 , 1 , 2 , 1 ]
970971 code_lines = [ None if line is None else line - test .__code__ .co_firstlineno
971972 for (_ , _ , line ) in test .__code__ .co_lines () ]
972973 self .assertEqual (expected_lines , code_lines )
0 commit comments