mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	Merged revisions 56154-56264 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/p3yk
................
  r56155 | neal.norwitz | 2007-07-03 08:59:08 +0300 (Tue, 03 Jul 2007) | 1 line
  Get this test working after converting map to return an iterator
................
  r56202 | neal.norwitz | 2007-07-09 04:30:09 +0300 (Mon, 09 Jul 2007) | 37 lines
  Merged revisions 56124-56201 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk
  ........
    r56129 | georg.brandl | 2007-06-30 04:01:01 -0700 (Sat, 30 Jun 2007) | 2 lines
    Document smtp.SMTPAuthenticationError.
  ........
    r56137 | georg.brandl | 2007-07-01 01:11:35 -0700 (Sun, 01 Jul 2007) | 2 lines
    Fix a few webbrowser.py problems.
  ........
    r56143 | georg.brandl | 2007-07-02 04:54:28 -0700 (Mon, 02 Jul 2007) | 2 lines
    Remove duplicate sentence from alarm() doc.
  ........
    r56170 | mark.hammond | 2007-07-03 19:03:10 -0700 (Tue, 03 Jul 2007) | 3 lines
    copy built files to the PCBuild directory, where tools like
    distutils or external build processes can find them.
  ........
    r56176 | kurt.kaiser | 2007-07-05 15:03:39 -0700 (Thu, 05 Jul 2007) | 10 lines
    Many calls to tk.call involve an arglist containing a single tuple.
    Calls using METH_OLDARGS unpack this tuple; calls using METH_VARARG
    don't.  Tcl's concatenation of args was affected; IDLE doesn't start.
    Modify Tkapp_Call() to unpack single tuple arglists.
    Bug 1733943
    Ref http://mail.python.org/pipermail/python-checkins/2007-May/060454.html
  ........
    r56177 | neal.norwitz | 2007-07-05 21:13:39 -0700 (Thu, 05 Jul 2007) | 1 line
    Fix typo in comment
  ........
................
  r56251 | neal.norwitz | 2007-07-11 10:01:01 +0300 (Wed, 11 Jul 2007) | 1 line
  Get working with map returning an iterator (had to fix whitespace too)
................
  r56255 | thomas.wouters | 2007-07-11 13:41:37 +0300 (Wed, 11 Jul 2007) | 6 lines
  Clean up merge glitch or copy-paste error (the entire module was duplicated,
  except the first half even had some more copy-paste errors, referring to
  listcomps and genexps instead of setcomps)
................
  r56256 | thomas.wouters | 2007-07-11 15:16:01 +0300 (Wed, 11 Jul 2007) | 14 lines
  Dict comprehensions. Still needs doc changes (like many python-3000 features
  ;-). It generates bytecode similar to:
  x = {}
  for k, v in (generator here):
    x[k] = v
  except there is no tuple-packing and -unpacking involved. Trivial
  measurement suggests it's significantly faster than dict(generator here) (in
  the order of 2 to 3 times as fast) but I have not done extensive
  measurements.
................
  r56263 | guido.van.rossum | 2007-07-11 15:36:26 +0300 (Wed, 11 Jul 2007) | 3 lines
  Patch 1724999 by Ali Gholami Rudi -- avoid complaints about dict size
  change during iter in destroy call.
................
			
			
This commit is contained in:
		
							parent
							
								
									c6a55ee2a5
								
							
						
					
					
						commit
						992d4a3e6e
					
				
					 18 changed files with 280 additions and 384 deletions
				
			
		|  | @ -170,6 +170,7 @@ static int symtable_visit_expr(struct symtable *st, expr_ty s); | |||
| static int symtable_visit_genexp(struct symtable *st, expr_ty s); | ||||
| static int symtable_visit_listcomp(struct symtable *st, expr_ty s); | ||||
| static int symtable_visit_setcomp(struct symtable *st, expr_ty s); | ||||
| static int symtable_visit_dictcomp(struct symtable *st, expr_ty s); | ||||
| static int symtable_visit_arguments(struct symtable *st, arguments_ty); | ||||
| static int symtable_visit_excepthandler(struct symtable *st, excepthandler_ty); | ||||
| static int symtable_visit_alias(struct symtable *st, alias_ty); | ||||
|  | @ -183,7 +184,7 @@ static int symtable_visit_annotations(struct symtable *st, stmt_ty s); | |||
| 
 | ||||
| 
 | ||||
| static identifier top = NULL, lambda = NULL, genexpr = NULL, | ||||
|     listcomp = NULL, setcomp = NULL, __class__ = NULL; | ||||
|     listcomp = NULL, setcomp = NULL, dictcomp = NULL, __class__ = NULL; | ||||
| 
 | ||||
| #define GET_IDENTIFIER(VAR) \ | ||||
| 	((VAR) ? (VAR) : ((VAR) = PyUnicode_InternFromString(# VAR))) | ||||
|  | @ -1270,6 +1271,10 @@ symtable_visit_expr(struct symtable *st, expr_ty e) | |||
| 		if (!symtable_visit_setcomp(st, e)) | ||||
| 			return 0; | ||||
| 		break; | ||||
| 	case DictComp_kind: | ||||
| 		if (!symtable_visit_dictcomp(st, e)) | ||||
| 			return 0; | ||||
| 		break; | ||||
|         case Yield_kind: | ||||
| 		if (e->v.Yield.value) | ||||
| 			VISIT(st, expr, e->v.Yield.value); | ||||
|  | @ -1521,8 +1526,8 @@ symtable_visit_slice(struct symtable *st, slice_ty s) | |||
| 
 | ||||
| static int  | ||||
| symtable_handle_comprehension(struct symtable *st, expr_ty e, | ||||
|                               identifier scope_name, | ||||
|                               asdl_seq *generators, expr_ty elt) | ||||
|                               identifier scope_name, asdl_seq *generators, | ||||
|                               expr_ty elt, expr_ty value) | ||||
| { | ||||
| 	int is_generator = (e->kind == GeneratorExp_kind); | ||||
| 	int needs_tmp = !is_generator; | ||||
|  | @ -1550,6 +1555,8 @@ symtable_handle_comprehension(struct symtable *st, expr_ty e, | |||
| 	VISIT_SEQ_IN_BLOCK(st, expr, outermost->ifs, (void*)e); | ||||
| 	VISIT_SEQ_TAIL_IN_BLOCK(st, comprehension, | ||||
| 				generators, 1, (void*)e); | ||||
| 	if (value) | ||||
| 		VISIT_IN_BLOCK(st, expr, value, (void*)e); | ||||
| 	VISIT_IN_BLOCK(st, expr, elt, (void*)e); | ||||
| 	return symtable_exit_block(st, (void *)e); | ||||
| } | ||||
|  | @ -1559,7 +1566,7 @@ symtable_visit_genexp(struct symtable *st, expr_ty e) | |||
| { | ||||
| 	return symtable_handle_comprehension(st, e, GET_IDENTIFIER(genexpr), | ||||
|                                              e->v.GeneratorExp.generators, | ||||
|                                              e->v.GeneratorExp.elt); | ||||
|                                              e->v.GeneratorExp.elt, NULL); | ||||
| } | ||||
| 
 | ||||
| static int  | ||||
|  | @ -1567,7 +1574,7 @@ symtable_visit_listcomp(struct symtable *st, expr_ty e) | |||
| { | ||||
| 	return symtable_handle_comprehension(st, e, GET_IDENTIFIER(listcomp), | ||||
|                                              e->v.ListComp.generators, | ||||
|                                              e->v.ListComp.elt); | ||||
|                                              e->v.ListComp.elt, NULL); | ||||
| } | ||||
| 
 | ||||
| static int | ||||
|  | @ -1575,5 +1582,14 @@ symtable_visit_setcomp(struct symtable *st, expr_ty e) | |||
| { | ||||
| 	return symtable_handle_comprehension(st, e, GET_IDENTIFIER(setcomp), | ||||
| 					     e->v.SetComp.generators, | ||||
| 					     e->v.SetComp.elt); | ||||
| 					     e->v.SetComp.elt, NULL); | ||||
| } | ||||
| 
 | ||||
| static int | ||||
| symtable_visit_dictcomp(struct symtable *st, expr_ty e) | ||||
| { | ||||
| 	return symtable_handle_comprehension(st, e, GET_IDENTIFIER(dictcomp), | ||||
| 					     e->v.DictComp.generators, | ||||
| 					     e->v.DictComp.key, | ||||
| 					     e->v.DictComp.value); | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Guido van Rossum
						Guido van Rossum