mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	Fix SF bug #1458903 with AST compiler.
def foo((x)): was getting recognized as requiring tuple unpacking which is not correct. Add tests for this case and the proper way to unpack a tuple of one: def foo((x,)): test_inpsect was incorrect before. I'm not sure why it was passing, but that has been corrected with a test for both functions above. This means the test (and therefore inspect.getargspec()) are broken in 2.4.
This commit is contained in:
		
							parent
							
								
									6c40359795
								
							
						
					
					
						commit
						33b730e33c
					
				
					 3 changed files with 19 additions and 6 deletions
				
			
		
							
								
								
									
										15
									
								
								Python/ast.c
									
										
									
									
									
								
							
							
						
						
									
										15
									
								
								Python/ast.c
									
										
									
									
									
								
							|  | @ -645,10 +645,17 @@ ast_for_arguments(struct compiling *c, const node *n) | |||
| 		    goto error; | ||||
| 		} | ||||
|                 if (NCH(ch) == 3) { | ||||
|                     asdl_seq_SET(args, k++,  | ||||
|                                     compiler_complex_args(c, CHILD(ch, 1)));  | ||||
| 		} | ||||
|                 else if (TYPE(CHILD(ch, 0)) == NAME) { | ||||
| 		    ch = CHILD(ch, 1); | ||||
| 		    /* def foo((x)): is not complex, special case. */ | ||||
| 		    if (NCH(ch) != 1) { | ||||
| 			/* We have complex arguments, setup for unpacking. */ | ||||
| 			asdl_seq_SET(args, k++, compiler_complex_args(c, ch)); | ||||
| 		    } else { | ||||
| 			/* def foo((x)): setup for checking NAME below. */ | ||||
| 			ch = CHILD(ch, 0); | ||||
| 		    } | ||||
|                 } | ||||
|                 if (TYPE(CHILD(ch, 0)) == NAME) { | ||||
| 		    expr_ty name; | ||||
| 		    if (!strcmp(STR(CHILD(ch, 0)), "None")) { | ||||
| 			    ast_error(CHILD(ch, 0), "assignment to None"); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Neal Norwitz
						Neal Norwitz