From: <fwi...@us...> - 2008-12-07 04:15:29
|
Revision: 5719 http://jython.svn.sourceforge.net/jython/?rev=5719&view=rev Author: fwierzbicki Date: 2008-12-07 04:15:26 +0000 (Sun, 07 Dec 2008) Log Message: ----------- Fixed bugs in mutable ast revealed by running sympy tests. Modified Paths: -------------- trunk/jython/src/org/python/antlr/adapter/CmpopAdapter.java trunk/jython/src/org/python/core/AstList.java Modified: trunk/jython/src/org/python/antlr/adapter/CmpopAdapter.java =================================================================== --- trunk/jython/src/org/python/antlr/adapter/CmpopAdapter.java 2008-12-06 22:50:19 UTC (rev 5718) +++ trunk/jython/src/org/python/antlr/adapter/CmpopAdapter.java 2008-12-07 04:15:26 UTC (rev 5719) @@ -22,12 +22,31 @@ public class CmpopAdapter implements AstAdapter { public Object py2ast(PyObject o) { - if (o == null) { - return o; + switch (((PyObject)o).asInt()) { + case 1: + return cmpopType.Eq; + case 2: + return cmpopType.NotEq; + case 3: + return cmpopType.Lt; + case 4: + return cmpopType.LtE; + case 5: + return cmpopType.Gt; + case 6: + return cmpopType.GtE; + case 7: + return cmpopType.Is; + case 8: + return cmpopType.IsNot; + case 9: + return cmpopType.In; + case 10: + return cmpopType.NotIn; } - return o; + //FIXME: investigate the right exception - //throw Py.TypeError("Can't convert " + o.getClass().getName() + " to cmpop node"); + throw Py.TypeError("Can't convert " + o.getClass().getName() + " to cmpop node"); } public PyObject ast2py(Object o) { Modified: trunk/jython/src/org/python/core/AstList.java =================================================================== --- trunk/jython/src/org/python/core/AstList.java 2008-12-06 22:50:19 UTC (rev 5718) +++ trunk/jython/src/org/python/core/AstList.java 2008-12-07 04:15:26 UTC (rev 5719) @@ -430,7 +430,12 @@ @ExposedMethod(defaults = "-1") final PyObject astlist_pop(int n) { - return (PyObject)data.remove(n); + if (adapter == null) { + return (PyObject)data.remove(n); + } + Object element = data.remove(n); + return (PyObject)adapter.ast2py(element); + } protected PyObject repeat(int count) { @@ -584,7 +589,12 @@ } public PyObject pyset(int index, PyObject element) { - return (PyObject)data.set(index, element); + if (adapter == null) { + return (PyObject)data.set(index, element); + } + Object o = adapter.py2ast(element); + data.set(index, o); + return element; } public Object remove(int index) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |