@@ -135,6 +135,9 @@ def to_tuple(t):
135135 "@deco1\n @deco2()\n class C: pass" ,
136136 # Decorator with generator argument
137137 "@deco(a for a in b)\n def f(): pass" ,
138+ # Simple assignment expression
139+ "(a := 1)" ,
140+
138141]
139142
140143# These are compiled through "single"
@@ -276,6 +279,13 @@ def test_snippets(self):
276279 with self .subTest (action = "compiling" , input = i , kind = kind ):
277280 compile (ast_tree , "?" , kind )
278281
282+ def test_ast_validation (self ):
283+ # compile() is the only function that calls PyAST_Validate
284+ snippets_to_validate = exec_tests + single_tests + eval_tests
285+ for snippet in snippets_to_validate :
286+ tree = ast .parse (snippet )
287+ compile (tree , '<string>' , 'exec' )
288+
279289 def test_slice (self ):
280290 slc = ast .parse ("x[::]" ).body [0 ].value .slice
281291 self .assertIsNone (slc .upper )
@@ -1677,6 +1687,7 @@ def main():
16771687('Module' , [('AsyncFunctionDef' , (3 , 0 ), 'f' , ('arguments' , [], None , [], [], None , []), [('Pass' , (3 , 15 ))], [('Name' , (1 , 1 ), 'deco1' , ('Load' ,)), ('Call' , (2 , 0 ), ('Name' , (2 , 1 ), 'deco2' , ('Load' ,)), [], [])], None , None )], []),
16781688('Module' , [('ClassDef' , (3 , 0 ), 'C' , [], [], [('Pass' , (3 , 9 ))], [('Name' , (1 , 1 ), 'deco1' , ('Load' ,)), ('Call' , (2 , 0 ), ('Name' , (2 , 1 ), 'deco2' , ('Load' ,)), [], [])])], []),
16791689('Module' , [('FunctionDef' , (2 , 0 ), 'f' , ('arguments' , [], None , [], [], None , []), [('Pass' , (2 , 9 ))], [('Call' , (1 , 1 ), ('Name' , (1 , 1 ), 'deco' , ('Load' ,)), [('GeneratorExp' , (1 , 5 ), ('Name' , (1 , 6 ), 'a' , ('Load' ,)), [('comprehension' , ('Name' , (1 , 12 ), 'a' , ('Store' ,)), ('Name' , (1 , 17 ), 'b' , ('Load' ,)), [], 0 )])], [])], None , None )], []),
1690+ ('Module' , [('Expr' , (1 , 0 ), ('NamedExpr' , (1 , 1 ), ('Name' , (1 , 1 ), 'a' , ('Store' ,)), ('Constant' , (1 , 6 ), 1 , None )))], []),
16801691]
16811692single_results = [
16821693('Interactive' , [('Expr' , (1 , 0 ), ('BinOp' , (1 , 0 ), ('Constant' , (1 , 0 ), 1 , None ), ('Add' ,), ('Constant' , (1 , 2 ), 2 , None )))]),
0 commit comments