@@ -315,8 +315,13 @@ impl Compiler {
315315 fn name ( & mut self , name : & str ) -> bytecode:: NameIdx {
316316 self . _name_inner ( name, |i| & mut i. name_cache )
317317 }
318- fn varname ( & mut self , name : & str ) -> bytecode:: NameIdx {
319- self . _name_inner ( name, |i| & mut i. varname_cache )
318+ fn varname ( & mut self , name : & str ) -> CompileResult < bytecode:: NameIdx > {
319+ if Compiler :: is_forbidden_arg_name ( name) {
320+ return Err ( self . error ( CodegenErrorType :: SyntaxError ( format ! (
321+ "cannot assign to {name}" ,
322+ ) ) ) ) ;
323+ }
324+ Ok ( self . _name_inner ( name, |i| & mut i. varname_cache ) )
320325 }
321326 fn _name_inner (
322327 & mut self ,
@@ -942,24 +947,17 @@ impl Compiler {
942947 . chain ( & args. args )
943948 . chain ( & args. kwonlyargs ) ;
944949 for name in args_iter {
945- if Compiler :: is_forbidden_arg_name ( & name. node . arg ) {
946- return Err ( self . error ( CodegenErrorType :: SyntaxError ( format ! (
947- "cannot assign to {}" ,
948- & name. node. arg
949- ) ) ) ) ;
950- }
951- self . varname ( & name. node . arg ) ;
950+ self . varname ( & name. node . arg ) ?;
952951 }
953952
954- let mut compile_varargs = |va : Option < & ast:: Arg > , flag| {
955- if let Some ( name) = va {
956- self . current_codeinfo ( ) . flags |= flag;
957- self . varname ( & name. node . arg ) ;
958- }
959- } ;
960-
961- compile_varargs ( args. vararg . as_deref ( ) , bytecode:: CodeFlags :: HAS_VARARGS ) ;
962- compile_varargs ( args. kwarg . as_deref ( ) , bytecode:: CodeFlags :: HAS_VARKEYWORDS ) ;
953+ if let Some ( name) = args. vararg . as_deref ( ) {
954+ self . current_codeinfo ( ) . flags |= bytecode:: CodeFlags :: HAS_VARARGS ;
955+ self . varname ( & name. node . arg ) ?;
956+ }
957+ if let Some ( name) = args. kwarg . as_deref ( ) {
958+ self . current_codeinfo ( ) . flags |= bytecode:: CodeFlags :: HAS_VARKEYWORDS ;
959+ self . varname ( & name. node . arg ) ?;
960+ }
963961
964962 Ok ( funcflags)
965963 }
@@ -2565,7 +2563,7 @@ impl Compiler {
25652563 0 ,
25662564 name. to_owned ( ) ,
25672565 ) ;
2568- let arg0 = self . varname ( ".0" ) ;
2566+ let arg0 = self . varname ( ".0" ) ? ;
25692567
25702568 let return_none = init_collection. is_none ( ) ;
25712569 // Create empty object of proper type:
0 commit comments