Tres Seaver wrote: > Philipp von Weitershausen wrote: >>> Log message for revision 68244: >>> Fix a test that was testing wrong behaviour: primitive types >>> werent' called if they were the result of a path expression, while >>> all other callables were called. This tests now tests the correct >>> behaviour (which happens to be already implemented by the Zope 3 >>> TALES engine) > >>> + assert ec.evaluate('x | python:int') == 0 > > Wait a minute -- that isn't a path expression there!
Yes it is. This line could explicitly written as: assert ec.evaluate('path: x | python:int') == 0 The python: expression is just part of the path expression. > The '|' is not supposed to change the rules for evaluation of the > subexpressions! It doesn't change the rules for the evaluation of the subexpressions themselves. But it might easily change the rules of what happens to the result of the expression afterwards. > If > 'int' or the like were somehow avaialbe at module scope, or via > 'options' or another top-level name, then they should be called *when > they are the last item in a path expression*. > > The test was actually correct beofore: because tne PathExpression, 'x', > raises, the PythonExpression, 'int', is evalutated. The result of a > subexpression is not suppoeed to be called, No, not the result of a subexpression, but the result of the overall path expression. That's how it works in both Zope 2 and Zope 3. Zope 2 just special-cases primitive types. Philipp _______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org http://mail.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope )