Author: Armin Rigo <ar...@tunes.org> Branch: Changeset: r74889:cd2dc9e91d09 Date: 2014-12-11 14:35 +0000 http://bitbucket.org/pypy/pypy/changeset/cd2dc9e91d09/
Log: Fix model.py for test__cffi_call diff --git a/pypy/module/pypyjit/test_pypy_c/model.py b/pypy/module/pypyjit/test_pypy_c/model.py --- a/pypy/module/pypyjit/test_pypy_c/model.py +++ b/pypy/module/pypyjit/test_pypy_c/model.py @@ -415,9 +415,12 @@ self.match_descr(op.descr, exp_descr) - def _next_op(self, iter_ops, assert_raises=False): + def _next_op(self, iter_ops, assert_raises=False, ignore_ops=set()): try: - op = iter_ops.next() + while True: + op = iter_ops.next() + if op.name not in ignore_ops: + break except StopIteration: self._assert(assert_raises, "not enough operations") return @@ -454,9 +457,7 @@ else: assert 0, "'{{{' not followed by '}}}'" while exp_ops: - op = self._next_op(iter_ops) - if op.name in ignore_ops: - continue + op = self._next_op(iter_ops, ignore_ops=ignore_ops) # match 'op' against any of the exp_ops; the first successful # match is kept, and the exp_op gets removed from the list for i, exp_op in enumerate(exp_ops): @@ -491,10 +492,7 @@ self.match_any_order(iter_exp_ops, iter_ops, ignore_ops) continue else: - while True: - op = self._next_op(iter_ops) - if op.name not in ignore_ops: - break + op = self._next_op(iter_ops, ignore_ops=ignore_ops) self.match_op(op, exp_op) except InvalidMatch, e: if type(exp_op) is not str and exp_op[4] is False: # optional operation @@ -504,7 +502,7 @@ raise # # make sure we exhausted iter_ops - self._next_op(iter_ops, assert_raises=True) + self._next_op(iter_ops, assert_raises=True, ignore_ops=ignore_ops) def match(self, expected_src, ignore_ops=[]): def format(src, opindex=None): diff --git a/pypy/module/pypyjit/test_pypy_c/test_00_model.py b/pypy/module/pypyjit/test_pypy_c/test_00_model.py --- a/pypy/module/pypyjit/test_pypy_c/test_00_model.py +++ b/pypy/module/pypyjit/test_pypy_c/test_00_model.py @@ -318,6 +318,16 @@ jump(i4, descr=...) """ assert self.match(loop, expected, ignore_ops=['force_token']) + # + loop = """ + [i0] + i1 = int_add(i0, 1) + i4 = force_token() + """ + expected = """ + i1 = int_add(i0, 1) + """ + assert self.match(loop, expected, ignore_ops=['force_token']) def test_match_dots_in_arguments(self): loop = """ _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit