mirror of
https://github.com/python/cpython.git
synced 2025-08-01 15:43:13 +00:00
#4578: fix has_key() usage in compiler package.
This commit is contained in:
parent
cbc1ed5e28
commit
2d2fe572a4
5 changed files with 16 additions and 18 deletions
|
@ -14,13 +14,13 @@ class Set:
|
||||||
def __len__(self):
|
def __len__(self):
|
||||||
return len(self.elts)
|
return len(self.elts)
|
||||||
def __contains__(self, elt):
|
def __contains__(self, elt):
|
||||||
return self.elts.has_key(elt)
|
return elt in self.elts
|
||||||
def add(self, elt):
|
def add(self, elt):
|
||||||
self.elts[elt] = elt
|
self.elts[elt] = elt
|
||||||
def elements(self):
|
def elements(self):
|
||||||
return self.elts.keys()
|
return self.elts.keys()
|
||||||
def has_elt(self, elt):
|
def has_elt(self, elt):
|
||||||
return self.elts.has_key(elt)
|
return elt in self.elts
|
||||||
def remove(self, elt):
|
def remove(self, elt):
|
||||||
del self.elts[elt]
|
del self.elts[elt]
|
||||||
def copy(self):
|
def copy(self):
|
||||||
|
|
|
@ -210,7 +210,7 @@ def dfs_postorder(b, seen):
|
||||||
order = []
|
order = []
|
||||||
seen[b] = b
|
seen[b] = b
|
||||||
for c in b.get_children():
|
for c in b.get_children():
|
||||||
if seen.has_key(c):
|
if c in seen:
|
||||||
continue
|
continue
|
||||||
order = order + dfs_postorder(c, seen)
|
order = order + dfs_postorder(c, seen)
|
||||||
order.append(b)
|
order.append(b)
|
||||||
|
@ -406,7 +406,7 @@ class PyFlowGraph(FlowGraph):
|
||||||
seen = {}
|
seen = {}
|
||||||
|
|
||||||
def max_depth(b, d):
|
def max_depth(b, d):
|
||||||
if seen.has_key(b):
|
if b in seen:
|
||||||
return d
|
return d
|
||||||
seen[b] = 1
|
seen[b] = 1
|
||||||
d = d + depth[b]
|
d = d + depth[b]
|
||||||
|
@ -482,7 +482,7 @@ class PyFlowGraph(FlowGraph):
|
||||||
for name in self.cellvars:
|
for name in self.cellvars:
|
||||||
cells[name] = 1
|
cells[name] = 1
|
||||||
self.cellvars = [name for name in self.varnames
|
self.cellvars = [name for name in self.varnames
|
||||||
if cells.has_key(name)]
|
if name in cells]
|
||||||
for name in self.cellvars:
|
for name in self.cellvars:
|
||||||
del cells[name]
|
del cells[name]
|
||||||
self.cellvars = self.cellvars + cells.keys()
|
self.cellvars = self.cellvars + cells.keys()
|
||||||
|
|
|
@ -49,9 +49,9 @@ class Scope:
|
||||||
|
|
||||||
def add_global(self, name):
|
def add_global(self, name):
|
||||||
name = self.mangle(name)
|
name = self.mangle(name)
|
||||||
if self.uses.has_key(name) or self.defs.has_key(name):
|
if name in self.uses or name in self.defs:
|
||||||
pass # XXX warn about global following def/use
|
pass # XXX warn about global following def/use
|
||||||
if self.params.has_key(name):
|
if name in self.params:
|
||||||
raise SyntaxError, "%s in %s is global and parameter" % \
|
raise SyntaxError, "%s in %s is global and parameter" % \
|
||||||
(name, self.name)
|
(name, self.name)
|
||||||
self.globals[name] = 1
|
self.globals[name] = 1
|
||||||
|
@ -88,14 +88,13 @@ class Scope:
|
||||||
|
|
||||||
The scope of a name could be LOCAL, GLOBAL, FREE, or CELL.
|
The scope of a name could be LOCAL, GLOBAL, FREE, or CELL.
|
||||||
"""
|
"""
|
||||||
if self.globals.has_key(name):
|
if name in self.globals:
|
||||||
return SC_GLOBAL
|
return SC_GLOBAL
|
||||||
if self.cells.has_key(name):
|
if name in self.cells:
|
||||||
return SC_CELL
|
return SC_CELL
|
||||||
if self.defs.has_key(name):
|
if name in self.defs:
|
||||||
return SC_LOCAL
|
return SC_LOCAL
|
||||||
if self.nested and (self.frees.has_key(name) or
|
if self.nested and (name in self.frees or name in self.uses):
|
||||||
self.uses.has_key(name)):
|
|
||||||
return SC_FREE
|
return SC_FREE
|
||||||
if self.nested:
|
if self.nested:
|
||||||
return SC_UNKNOWN
|
return SC_UNKNOWN
|
||||||
|
@ -108,8 +107,7 @@ class Scope:
|
||||||
free = {}
|
free = {}
|
||||||
free.update(self.frees)
|
free.update(self.frees)
|
||||||
for name in self.uses.keys():
|
for name in self.uses.keys():
|
||||||
if not (self.defs.has_key(name) or
|
if name not in self.defs and name not in self.globals:
|
||||||
self.globals.has_key(name)):
|
|
||||||
free[name] = 1
|
free[name] = 1
|
||||||
return free.keys()
|
return free.keys()
|
||||||
|
|
||||||
|
@ -134,7 +132,7 @@ class Scope:
|
||||||
free.
|
free.
|
||||||
"""
|
"""
|
||||||
self.globals[name] = 1
|
self.globals[name] = 1
|
||||||
if self.frees.has_key(name):
|
if name in self.frees:
|
||||||
del self.frees[name]
|
del self.frees[name]
|
||||||
for child in self.children:
|
for child in self.children:
|
||||||
if child.check_name(name) == SC_FREE:
|
if child.check_name(name) == SC_FREE:
|
||||||
|
|
|
@ -81,7 +81,7 @@ def extractLineNo(ast):
|
||||||
|
|
||||||
def Node(*args):
|
def Node(*args):
|
||||||
kind = args[0]
|
kind = args[0]
|
||||||
if nodes.has_key(kind):
|
if kind in nodes:
|
||||||
try:
|
try:
|
||||||
return nodes[kind](*args[1:])
|
return nodes[kind](*args[1:])
|
||||||
except TypeError:
|
except TypeError:
|
||||||
|
@ -120,7 +120,7 @@ class Transformer:
|
||||||
def transform(self, tree):
|
def transform(self, tree):
|
||||||
"""Transform an AST into a modified parse tree."""
|
"""Transform an AST into a modified parse tree."""
|
||||||
if not (isinstance(tree, tuple) or isinstance(tree, list)):
|
if not (isinstance(tree, tuple) or isinstance(tree, list)):
|
||||||
tree = parser.ast2tuple(tree, line_info=1)
|
tree = parser.st2tuple(tree, line_info=1)
|
||||||
return self.compile_node(tree)
|
return self.compile_node(tree)
|
||||||
|
|
||||||
def parsesuite(self, text):
|
def parsesuite(self, text):
|
||||||
|
|
|
@ -84,7 +84,7 @@ class ExampleASTVisitor(ASTVisitor):
|
||||||
meth(node, *args)
|
meth(node, *args)
|
||||||
elif self.VERBOSE > 0:
|
elif self.VERBOSE > 0:
|
||||||
klass = node.__class__
|
klass = node.__class__
|
||||||
if not self.examples.has_key(klass):
|
if klass not in self.examples:
|
||||||
self.examples[klass] = klass
|
self.examples[klass] = klass
|
||||||
print
|
print
|
||||||
print self.visitor
|
print self.visitor
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue