@@ -327,7 +327,26 @@ impl Node for ast::ExprLambda {
327327 . into_ref_with_type ( vm, pyast:: NodeExprLambda :: static_type ( ) . to_owned ( ) )
328328 . unwrap ( ) ;
329329 let dict = node. as_object ( ) . dict ( ) . unwrap ( ) ;
330- dict. set_item ( "args" , parameters. ast_to_object ( vm, source_file) , vm)
330+ // Lambda with no parameters should have an empty arguments object, not None
331+ let args = match parameters {
332+ Some ( params) => params. ast_to_object ( vm, source_file) ,
333+ None => {
334+ // Create an empty arguments object
335+ let args_node = NodeAst
336+ . into_ref_with_type ( vm, pyast:: NodeArguments :: static_type ( ) . to_owned ( ) )
337+ . unwrap ( ) ;
338+ let args_dict = args_node. as_object ( ) . dict ( ) . unwrap ( ) ;
339+ args_dict. set_item ( "posonlyargs" , vm. ctx . new_list ( vec ! [ ] ) . into ( ) , vm) . unwrap ( ) ;
340+ args_dict. set_item ( "args" , vm. ctx . new_list ( vec ! [ ] ) . into ( ) , vm) . unwrap ( ) ;
341+ args_dict. set_item ( "vararg" , vm. ctx . none ( ) , vm) . unwrap ( ) ;
342+ args_dict. set_item ( "kwonlyargs" , vm. ctx . new_list ( vec ! [ ] ) . into ( ) , vm) . unwrap ( ) ;
343+ args_dict. set_item ( "kw_defaults" , vm. ctx . new_list ( vec ! [ ] ) . into ( ) , vm) . unwrap ( ) ;
344+ args_dict. set_item ( "kwarg" , vm. ctx . none ( ) , vm) . unwrap ( ) ;
345+ args_dict. set_item ( "defaults" , vm. ctx . new_list ( vec ! [ ] ) . into ( ) , vm) . unwrap ( ) ;
346+ args_node. into ( )
347+ }
348+ } ;
349+ dict. set_item ( "args" , args, vm)
331350 . unwrap ( ) ;
332351 dict. set_item ( "body" , body. ast_to_object ( vm, source_file) , vm)
333352 . unwrap ( ) ;
0 commit comments