[pypy-svn] r66463 - in pypy/branch/parser-compiler/pypy/interpreter/astcompiler: . test
benjamin at codespeak.net
benjamin at codespeak.net
Tue Jul 21 00:06:44 CEST 2009
Author: benjamin
Date: Tue Jul 21 00:06:43 2009
New Revision: 66463
Modified:
pypy/branch/parser-compiler/pypy/interpreter/astcompiler/astbuilder.py
pypy/branch/parser-compiler/pypy/interpreter/astcompiler/test/test_astbuilder.py
Log:
non-extended slices have a step of None
Modified: pypy/branch/parser-compiler/pypy/interpreter/astcompiler/astbuilder.py
==============================================================================
--- pypy/branch/parser-compiler/pypy/interpreter/astcompiler/astbuilder.py (original)
+++ pypy/branch/parser-compiler/pypy/interpreter/astcompiler/astbuilder.py Tue Jul 21 00:06:43 2009
@@ -935,7 +935,11 @@
if third_child.type == syms.test:
upper = self.handle_expr(third_child)
last_child = slice_node.children[-1]
- if last_child.type == syms.sliceop and len(last_child.children) == 2:
+ if last_child.type == syms.sliceop:
+ if len(last_child.children) == 1:
+ step = ast.Name("None", ast.Load, last_child.lineno,
+ last_child.column)
+ else:
step_child = last_child.children[1]
if step_child.type == syms.test:
step = self.handle_expr(step_child)
Modified: pypy/branch/parser-compiler/pypy/interpreter/astcompiler/test/test_astbuilder.py
==============================================================================
--- pypy/branch/parser-compiler/pypy/interpreter/astcompiler/test/test_astbuilder.py (original)
+++ pypy/branch/parser-compiler/pypy/interpreter/astcompiler/test/test_astbuilder.py Tue Jul 21 00:06:43 2009
@@ -965,26 +965,40 @@
assert sub.ctx == ast.Load
assert isinstance(sub.slice, ast.Index)
assert isinstance(sub.slice.value, ast.Name)
- for input in (":", "::"):
- slc = self.get_first_expr("x[%s]" % (input,)).slice
- assert slc.upper is None
- assert slc.lower is None
- assert slc.step is None
- for input in ("1:", "1::"):
- slc = self.get_first_expr("x[%s]" % (input,)).slice
- assert isinstance(slc.lower, ast.Num)
- assert slc.upper is None
- assert slc.step is None
- for input in (":2", ":2:"):
- slc = self.get_first_expr("x[%s]" % (input,)).slice
- assert slc.lower is None
- assert isinstance(slc.upper, ast.Num)
- assert slc.step is None
- for input in ("2:2:", "2:2"):
- slc = self.get_first_expr("x[%s]" % (input,)).slice
- assert isinstance(slc.lower, ast.Num)
- assert isinstance(slc.upper, ast.Num)
- assert slc.step is None
+ slc = self.get_first_expr("x[:]").slice
+ assert slc.upper is None
+ assert slc.lower is None
+ assert slc.step is None
+ slc = self.get_first_expr("x[::]").slice
+ assert slc.upper is None
+ assert slc.lower is None
+ assert isinstance(slc.step, ast.Name)
+ assert slc.step.id == "None"
+ assert slc.step.ctx == ast.Load
+ slc = self.get_first_expr("x[1:]").slice
+ assert isinstance(slc.lower, ast.Num)
+ assert slc.upper is None
+ assert slc.step is None
+ slc = self.get_first_expr("x[1::]").slice
+ assert isinstance(slc.lower, ast.Num)
+ assert slc.upper is None
+ assert isinstance(slc.step, ast.Name)
+ slc = self.get_first_expr("x[:2]").slice
+ assert slc.lower is None
+ assert isinstance(slc.upper, ast.Num)
+ assert slc.step is None
+ slc = self.get_first_expr("x[:2:]").slice
+ assert slc.lower is None
+ assert isinstance(slc.upper, ast.Num)
+ assert isinstance(slc.step, ast.Name)
+ slc = self.get_first_expr("x[2:2]").slice
+ assert isinstance(slc.lower, ast.Num)
+ assert isinstance(slc.upper, ast.Num)
+ assert slc.step is None
+ slc = self.get_first_expr("x[2:2:]").slice
+ assert isinstance(slc.lower, ast.Num)
+ assert isinstance(slc.upper, ast.Num)
+ assert isinstance(slc.step, ast.Name)
slc = self.get_first_expr("x[::2]").slice
assert slc.lower is None
assert slc.upper is None
More information about the Pypy-commit
mailing list