You can subscribe to this list here.
2000 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
(107) |
Dec
(67) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2001 |
Jan
(76) |
Feb
(125) |
Mar
(72) |
Apr
(13) |
May
(18) |
Jun
(12) |
Jul
(129) |
Aug
(47) |
Sep
(1) |
Oct
(36) |
Nov
(128) |
Dec
(124) |
2002 |
Jan
(59) |
Feb
|
Mar
(14) |
Apr
(14) |
May
(72) |
Jun
(9) |
Jul
(3) |
Aug
(5) |
Sep
(18) |
Oct
(65) |
Nov
(28) |
Dec
(12) |
2003 |
Jan
(10) |
Feb
(2) |
Mar
(4) |
Apr
(33) |
May
(21) |
Jun
(9) |
Jul
(29) |
Aug
(34) |
Sep
(4) |
Oct
(8) |
Nov
(15) |
Dec
(4) |
2004 |
Jan
(26) |
Feb
(12) |
Mar
(11) |
Apr
(9) |
May
(7) |
Jun
|
Jul
(5) |
Aug
|
Sep
(3) |
Oct
(7) |
Nov
(1) |
Dec
(10) |
2005 |
Jan
(2) |
Feb
(72) |
Mar
(16) |
Apr
(39) |
May
(48) |
Jun
(97) |
Jul
(57) |
Aug
(13) |
Sep
(16) |
Oct
(24) |
Nov
(100) |
Dec
(24) |
2006 |
Jan
(15) |
Feb
(34) |
Mar
(33) |
Apr
(31) |
May
(79) |
Jun
(64) |
Jul
(41) |
Aug
(64) |
Sep
(31) |
Oct
(46) |
Nov
(55) |
Dec
(37) |
2007 |
Jan
(32) |
Feb
(61) |
Mar
(11) |
Apr
(58) |
May
(46) |
Jun
(30) |
Jul
(94) |
Aug
(93) |
Sep
(86) |
Oct
(69) |
Nov
(125) |
Dec
(177) |
2008 |
Jan
(169) |
Feb
(97) |
Mar
(74) |
Apr
(113) |
May
(120) |
Jun
(334) |
Jul
(215) |
Aug
(237) |
Sep
(72) |
Oct
(189) |
Nov
(126) |
Dec
(160) |
2009 |
Jan
(180) |
Feb
(45) |
Mar
(98) |
Apr
(140) |
May
(151) |
Jun
(71) |
Jul
(107) |
Aug
(119) |
Sep
(73) |
Oct
(121) |
Nov
(14) |
Dec
(6) |
2010 |
Jan
(13) |
Feb
(9) |
Mar
(10) |
Apr
(64) |
May
(3) |
Jun
(16) |
Jul
(7) |
Aug
(23) |
Sep
(17) |
Oct
(37) |
Nov
(5) |
Dec
(8) |
2011 |
Jan
(10) |
Feb
(11) |
Mar
(77) |
Apr
(11) |
May
(2) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <fwi...@us...> - 2008-12-05 03:33:34
|
Revision: 5697 http://jython.svn.sourceforge.net/jython/?rev=5697&view=rev Author: fwierzbicki Date: 2008-12-05 03:33:30 +0000 (Fri, 05 Dec 2008) Log Message: ----------- Fix missing exposed classes. Modified Paths: -------------- trunk/jython/CoreExposed.includes Modified: trunk/jython/CoreExposed.includes =================================================================== --- trunk/jython/CoreExposed.includes 2008-12-05 01:11:47 UTC (rev 5696) +++ trunk/jython/CoreExposed.includes 2008-12-05 03:33:30 UTC (rev 5697) @@ -1,3 +1,4 @@ +org/python/core/AstList.class org/python/core/PyArray.class org/python/core/PyBaseString.class org/python/core/PyBaseException.class @@ -56,63 +57,97 @@ org/python/modules/PyStruct.class org/python/modules/PyTeeIterator.class org/python/antlr/AST.class -org/python/antlr/ast/AsmModule.class -org/python/antlr/ast/And.class -org/python/antlr/ast/BitXor.class -org/python/antlr/ast/Gt.class -org/python/antlr/ast/AugLoad.class -org/python/antlr/ast/Mult.class -org/python/antlr/ast/NotEq.class -org/python/antlr/ast/LShift.class -org/python/antlr/ast/IsNot.class -org/python/antlr/ast/RShift.class -org/python/antlr/ast/Eq.class -org/python/antlr/ast/BitOr.class -org/python/antlr/ast/Div.class -org/python/antlr/ast/LtE.class -org/python/antlr/ast/Store.class -org/python/antlr/ast/Not.class -org/python/antlr/ast/BitAnd.class -org/python/antlr/ast/In.class -org/python/antlr/ast/UAdd.class -org/python/antlr/ast/GtE.class -org/python/antlr/ast/Lt.class -org/python/antlr/ast/Mod.class -org/python/antlr/ast/Sub.class -org/python/antlr/ast/Del.class -org/python/antlr/ast/Pow.class -org/python/antlr/ast/Invert.class -org/python/antlr/ast/Is.class -org/python/antlr/ast/Load.class -org/python/antlr/ast/Add.class -org/python/antlr/ast/AugStore.class +org/python/antlr/ast/alias.class +org/python/antlr/ast/arguments.class +org/python/antlr/ast/Assert.class +org/python/antlr/ast/Assign.class +org/python/antlr/ast/Attribute.class +org/python/antlr/ast/AugAssign.class +org/python/antlr/ast/BinOp.class +org/python/antlr/ast/BoolOp.class +org/python/antlr/ast/Break.class +org/python/antlr/ast/Call.class +org/python/antlr/ast/ClassDef.class +org/python/antlr/ast/Compare.class +org/python/antlr/ast/comprehension.class +org/python/antlr/ast/Continue.class org/python/antlr/ast/Delete.class +org/python/antlr/ast/Dict.class +org/python/antlr/ast/Ellipsis.class +org/python/antlr/ast/ExceptHandler.class +org/python/antlr/ast/Exec.class +org/python/antlr/ast/Expr.class +org/python/antlr/ast/Expression.class +org/python/antlr/ast/ExtSlice.class +org/python/antlr/ast/For.class +org/python/antlr/ast/FunctionDef.class org/python/antlr/ast/GeneratorExp.class +org/python/antlr/ast/Global.class +org/python/antlr/ast/If.class +org/python/antlr/ast/IfExp.class org/python/antlr/ast/Import.class -org/python/antlr/ast/comprehensionType.class -org/python/antlr/ast/With.class +org/python/antlr/ast/ImportFrom.class +org/python/antlr/ast/Index.class +org/python/antlr/ast/Interactive.class +org/python/antlr/ast/keyword.class +org/python/antlr/ast/Lambda.class +org/python/antlr/ast/List.class +org/python/antlr/ast/ListComp.class org/python/antlr/ast/Module.class -org/python/antlr/ast/Global.class -org/python/antlr/ast/Dict.class -org/python/antlr/ast/ClassDef.class -org/python/antlr/ast/ExceptHandler.class +org/python/antlr/ast/Name.class +org/python/antlr/ast/Num.class +org/python/antlr/ast/Pass.class +org/python/antlr/ast/Print.class +org/python/antlr/ast/Raise.class +org/python/antlr/ast/Repr.class +org/python/antlr/ast/Return.class +org/python/antlr/ast/Slice.class +org/python/antlr/ast/Str.class +org/python/antlr/ast/Subscript.class +org/python/antlr/ast/Suite.class org/python/antlr/ast/TryExcept.class +org/python/antlr/ast/TryFinally.class org/python/antlr/ast/Tuple.class -org/python/antlr/ast/ListComp.class -org/python/antlr/ast/TryFinally.class -org/python/antlr/ast/If.class -org/python/antlr/ast/ImportFrom.class -org/python/antlr/ast/FunctionDef.class -org/python/antlr/ast/argumentsType.class -org/python/antlr/ast/List.class -org/python/antlr/ast/Interactive.class -org/python/antlr/ast/ExtSlice.class -org/python/antlr/ast/Compare.class +org/python/antlr/ast/UnaryOp.class org/python/antlr/ast/While.class -org/python/antlr/ast/Call.class -org/python/antlr/ast/Assign.class -org/python/antlr/ast/For.class -org/python/antlr/ast/Suite.class -org/python/antlr/ast/BoolOp.class -org/python/antlr/ast/Print.class - +org/python/antlr/ast/With.class +org/python/antlr/ast/Yield.class +org/python/antlr/base/excepthandler.class +org/python/antlr/base/expr.class +org/python/antlr/base/mod.class +org/python/antlr/base/slice.class +org/python/antlr/base/stmt.class +org/python/antlr/op/Add.class +org/python/antlr/op/And.class +org/python/antlr/op/AugLoad.class +org/python/antlr/op/AugStore.class +org/python/antlr/op/BitAnd.class +org/python/antlr/op/BitOr.class +org/python/antlr/op/BitXor.class +org/python/antlr/op/Del.class +org/python/antlr/op/Div.class +org/python/antlr/op/Eq.class +org/python/antlr/op/FloorDiv.class +org/python/antlr/op/Gt.class +org/python/antlr/op/GtE.class +org/python/antlr/op/In.class +org/python/antlr/op/Invert.class +org/python/antlr/op/Is.class +org/python/antlr/op/IsNot.class +org/python/antlr/op/Load.class +org/python/antlr/op/LShift.class +org/python/antlr/op/Lt.class +org/python/antlr/op/LtE.class +org/python/antlr/op/Mod.class +org/python/antlr/op/Mult.class +org/python/antlr/op/Not.class +org/python/antlr/op/NotEq.class +org/python/antlr/op/NotIn.class +org/python/antlr/op/Or.class +org/python/antlr/op/Param.class +org/python/antlr/op/Pow.class +org/python/antlr/op/RShift.class +org/python/antlr/op/Store.class +org/python/antlr/op/Sub.class +org/python/antlr/op/UAdd.class +org/python/antlr/op/USub.class This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fwi...@us...> - 2008-12-05 01:11:50
|
Revision: 5696 http://jython.svn.sourceforge.net/jython/?rev=5696&view=rev Author: fwierzbicki Date: 2008-12-05 01:11:47 +0000 (Fri, 05 Dec 2008) Log Message: ----------- Ack missed these new files for the astwrite merge. Added Paths: ----------- trunk/jython/src/org/python/antlr/ast/alias.java trunk/jython/src/org/python/antlr/ast/arguments.java trunk/jython/src/org/python/antlr/ast/comprehension.java trunk/jython/src/org/python/antlr/ast/keyword.java Added: trunk/jython/src/org/python/antlr/ast/alias.java =================================================================== --- trunk/jython/src/org/python/antlr/ast/alias.java (rev 0) +++ trunk/jython/src/org/python/antlr/ast/alias.java 2008-12-05 01:11:47 UTC (rev 5696) @@ -0,0 +1,132 @@ +// Autogenerated AST node +package org.python.antlr.ast; +import org.antlr.runtime.CommonToken; +import org.antlr.runtime.Token; +import org.python.antlr.AST; +import org.python.antlr.PythonTree; +import org.python.antlr.adapter.AstAdapters; +import org.python.antlr.base.excepthandler; +import org.python.antlr.base.expr; +import org.python.antlr.base.mod; +import org.python.antlr.base.slice; +import org.python.antlr.base.stmt; +import org.python.core.ArgParser; +import org.python.core.AstList; +import org.python.core.Py; +import org.python.core.PyObject; +import org.python.core.PyString; +import org.python.core.PyType; +import org.python.expose.ExposedGet; +import org.python.expose.ExposedMethod; +import org.python.expose.ExposedNew; +import org.python.expose.ExposedSet; +import org.python.expose.ExposedType; +import java.io.DataOutputStream; +import java.io.IOException; +import java.util.ArrayList; + +@ExposedType(name = "_ast.alias", base = AST.class) +public class alias extends PythonTree { + public static final PyType TYPE = PyType.fromClass(alias.class); + private String name; + public String getInternalName() { + return name; + } + @ExposedGet(name = "name") + public PyObject getName() { + if (name == null) return Py.None; + return new PyString(name); + } + @ExposedSet(name = "name") + public void setName(PyObject name) { + this.name = AstAdapters.py2identifier(name); + } + + private String asname; + public String getInternalAsname() { + return asname; + } + @ExposedGet(name = "asname") + public PyObject getAsname() { + if (asname == null) return Py.None; + return new PyString(asname); + } + @ExposedSet(name = "asname") + public void setAsname(PyObject asname) { + this.asname = AstAdapters.py2identifier(asname); + } + + + private final static PyString[] fields = + new PyString[] {new PyString("name"), new PyString("asname")}; + @ExposedGet(name = "_fields") + public PyString[] get_fields() { return fields; } + + private final static PyString[] attributes = new PyString[0]; + @ExposedGet(name = "_attributes") + public PyString[] get_attributes() { return attributes; } + + public alias() { + this(TYPE); + } + public alias(PyType subType) { + super(subType); + } + @ExposedNew + @ExposedMethod + public void alias___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("alias", args, keywords, new String[] + {"name", "asname"}, 2); + setName(ap.getPyObject(0)); + setAsname(ap.getPyObject(1)); + } + + public alias(PyObject name, PyObject asname) { + setName(name); + setAsname(asname); + } + + public alias(Token token, String name, String asname) { + super(token); + this.name = name; + this.asname = asname; + } + + public alias(Integer ttype, Token token, String name, String asname) { + super(ttype, token); + this.name = name; + this.asname = asname; + } + + public alias(PythonTree tree, String name, String asname) { + super(tree); + this.name = name; + this.asname = asname; + } + + @ExposedGet(name = "repr") + public String toString() { + return "alias"; + } + + public String toStringTree() { + StringBuffer sb = new StringBuffer("alias("); + sb.append("name="); + sb.append(dumpThis(name)); + sb.append(","); + sb.append("asname="); + sb.append(dumpThis(asname)); + sb.append(","); + sb.append(")"); + return sb.toString(); + } + + public <R> R accept(VisitorIF<R> visitor) throws Exception { + traverse(visitor); + return null; + } + + public void traverse(VisitorIF visitor) throws Exception { + } + +} Added: trunk/jython/src/org/python/antlr/ast/arguments.java =================================================================== --- trunk/jython/src/org/python/antlr/ast/arguments.java (rev 0) +++ trunk/jython/src/org/python/antlr/ast/arguments.java 2008-12-05 01:11:47 UTC (rev 5696) @@ -0,0 +1,226 @@ +// Autogenerated AST node +package org.python.antlr.ast; +import org.antlr.runtime.CommonToken; +import org.antlr.runtime.Token; +import org.python.antlr.AST; +import org.python.antlr.PythonTree; +import org.python.antlr.adapter.AstAdapters; +import org.python.antlr.base.excepthandler; +import org.python.antlr.base.expr; +import org.python.antlr.base.mod; +import org.python.antlr.base.slice; +import org.python.antlr.base.stmt; +import org.python.core.ArgParser; +import org.python.core.AstList; +import org.python.core.Py; +import org.python.core.PyObject; +import org.python.core.PyString; +import org.python.core.PyType; +import org.python.expose.ExposedGet; +import org.python.expose.ExposedMethod; +import org.python.expose.ExposedNew; +import org.python.expose.ExposedSet; +import org.python.expose.ExposedType; +import java.io.DataOutputStream; +import java.io.IOException; +import java.util.ArrayList; + +@ExposedType(name = "_ast.arguments", base = AST.class) +public class arguments extends PythonTree { + public static final PyType TYPE = PyType.fromClass(arguments.class); + private java.util.List<expr> args; + public java.util.List<expr> getInternalArgs() { + return args; + } + @ExposedGet(name = "args") + public PyObject getArgs() { + return new AstList(args, AstAdapters.exprAdapter); + } + @ExposedSet(name = "args") + public void setArgs(PyObject args) { + this.args = AstAdapters.py2exprList(args); + } + + private String vararg; + public String getInternalVararg() { + return vararg; + } + @ExposedGet(name = "vararg") + public PyObject getVararg() { + if (vararg == null) return Py.None; + return new PyString(vararg); + } + @ExposedSet(name = "vararg") + public void setVararg(PyObject vararg) { + this.vararg = AstAdapters.py2identifier(vararg); + } + + private String kwarg; + public String getInternalKwarg() { + return kwarg; + } + @ExposedGet(name = "kwarg") + public PyObject getKwarg() { + if (kwarg == null) return Py.None; + return new PyString(kwarg); + } + @ExposedSet(name = "kwarg") + public void setKwarg(PyObject kwarg) { + this.kwarg = AstAdapters.py2identifier(kwarg); + } + + private java.util.List<expr> defaults; + public java.util.List<expr> getInternalDefaults() { + return defaults; + } + @ExposedGet(name = "defaults") + public PyObject getDefaults() { + return new AstList(defaults, AstAdapters.exprAdapter); + } + @ExposedSet(name = "defaults") + public void setDefaults(PyObject defaults) { + this.defaults = AstAdapters.py2exprList(defaults); + } + + + private final static PyString[] fields = + new PyString[] {new PyString("args"), new PyString("vararg"), new PyString("kwarg"), new + PyString("defaults")}; + @ExposedGet(name = "_fields") + public PyString[] get_fields() { return fields; } + + private final static PyString[] attributes = new PyString[0]; + @ExposedGet(name = "_attributes") + public PyString[] get_attributes() { return attributes; } + + public arguments() { + this(TYPE); + } + public arguments(PyType subType) { + super(subType); + } + @ExposedNew + @ExposedMethod + public void arguments___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("arguments", args, keywords, new String[] + {"args", "vararg", "kwarg", "defaults"}, 4); + setArgs(ap.getPyObject(0)); + setVararg(ap.getPyObject(1)); + setKwarg(ap.getPyObject(2)); + setDefaults(ap.getPyObject(3)); + } + + public arguments(PyObject args, PyObject vararg, PyObject kwarg, PyObject defaults) { + setArgs(args); + setVararg(vararg); + setKwarg(kwarg); + setDefaults(defaults); + } + + public arguments(Token token, java.util.List<expr> args, String vararg, String kwarg, + java.util.List<expr> defaults) { + super(token); + this.args = args; + if (args == null) { + this.args = new ArrayList<expr>(); + } + for(PythonTree t : this.args) { + addChild(t); + } + this.vararg = vararg; + this.kwarg = kwarg; + this.defaults = defaults; + if (defaults == null) { + this.defaults = new ArrayList<expr>(); + } + for(PythonTree t : this.defaults) { + addChild(t); + } + } + + public arguments(Integer ttype, Token token, java.util.List<expr> args, String vararg, String + kwarg, java.util.List<expr> defaults) { + super(ttype, token); + this.args = args; + if (args == null) { + this.args = new ArrayList<expr>(); + } + for(PythonTree t : this.args) { + addChild(t); + } + this.vararg = vararg; + this.kwarg = kwarg; + this.defaults = defaults; + if (defaults == null) { + this.defaults = new ArrayList<expr>(); + } + for(PythonTree t : this.defaults) { + addChild(t); + } + } + + public arguments(PythonTree tree, java.util.List<expr> args, String vararg, String kwarg, + java.util.List<expr> defaults) { + super(tree); + this.args = args; + if (args == null) { + this.args = new ArrayList<expr>(); + } + for(PythonTree t : this.args) { + addChild(t); + } + this.vararg = vararg; + this.kwarg = kwarg; + this.defaults = defaults; + if (defaults == null) { + this.defaults = new ArrayList<expr>(); + } + for(PythonTree t : this.defaults) { + addChild(t); + } + } + + @ExposedGet(name = "repr") + public String toString() { + return "arguments"; + } + + public String toStringTree() { + StringBuffer sb = new StringBuffer("arguments("); + sb.append("args="); + sb.append(dumpThis(args)); + sb.append(","); + sb.append("vararg="); + sb.append(dumpThis(vararg)); + sb.append(","); + sb.append("kwarg="); + sb.append(dumpThis(kwarg)); + sb.append(","); + sb.append("defaults="); + sb.append(dumpThis(defaults)); + sb.append(","); + sb.append(")"); + return sb.toString(); + } + + public <R> R accept(VisitorIF<R> visitor) throws Exception { + traverse(visitor); + return null; + } + + public void traverse(VisitorIF visitor) throws Exception { + if (args != null) { + for (PythonTree t : args) { + if (t != null) + t.accept(visitor); + } + } + if (defaults != null) { + for (PythonTree t : defaults) { + if (t != null) + t.accept(visitor); + } + } + } + +} Added: trunk/jython/src/org/python/antlr/ast/comprehension.java =================================================================== --- trunk/jython/src/org/python/antlr/ast/comprehension.java (rev 0) +++ trunk/jython/src/org/python/antlr/ast/comprehension.java 2008-12-05 01:11:47 UTC (rev 5696) @@ -0,0 +1,186 @@ +// Autogenerated AST node +package org.python.antlr.ast; +import org.antlr.runtime.CommonToken; +import org.antlr.runtime.Token; +import org.python.antlr.AST; +import org.python.antlr.PythonTree; +import org.python.antlr.adapter.AstAdapters; +import org.python.antlr.base.excepthandler; +import org.python.antlr.base.expr; +import org.python.antlr.base.mod; +import org.python.antlr.base.slice; +import org.python.antlr.base.stmt; +import org.python.core.ArgParser; +import org.python.core.AstList; +import org.python.core.Py; +import org.python.core.PyObject; +import org.python.core.PyString; +import org.python.core.PyType; +import org.python.expose.ExposedGet; +import org.python.expose.ExposedMethod; +import org.python.expose.ExposedNew; +import org.python.expose.ExposedSet; +import org.python.expose.ExposedType; +import java.io.DataOutputStream; +import java.io.IOException; +import java.util.ArrayList; + +@ExposedType(name = "_ast.comprehension", base = AST.class) +public class comprehension extends PythonTree { + public static final PyType TYPE = PyType.fromClass(comprehension.class); + private expr target; + public expr getInternalTarget() { + return target; + } + @ExposedGet(name = "target") + public PyObject getTarget() { + return target; + } + @ExposedSet(name = "target") + public void setTarget(PyObject target) { + this.target = AstAdapters.py2expr(target); + } + + private expr iter; + public expr getInternalIter() { + return iter; + } + @ExposedGet(name = "iter") + public PyObject getIter() { + return iter; + } + @ExposedSet(name = "iter") + public void setIter(PyObject iter) { + this.iter = AstAdapters.py2expr(iter); + } + + private java.util.List<expr> ifs; + public java.util.List<expr> getInternalIfs() { + return ifs; + } + @ExposedGet(name = "ifs") + public PyObject getIfs() { + return new AstList(ifs, AstAdapters.exprAdapter); + } + @ExposedSet(name = "ifs") + public void setIfs(PyObject ifs) { + this.ifs = AstAdapters.py2exprList(ifs); + } + + + private final static PyString[] fields = + new PyString[] {new PyString("target"), new PyString("iter"), new PyString("ifs")}; + @ExposedGet(name = "_fields") + public PyString[] get_fields() { return fields; } + + private final static PyString[] attributes = new PyString[0]; + @ExposedGet(name = "_attributes") + public PyString[] get_attributes() { return attributes; } + + public comprehension() { + this(TYPE); + } + public comprehension(PyType subType) { + super(subType); + } + @ExposedNew + @ExposedMethod + public void comprehension___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("comprehension", args, keywords, new String[] + {"target", "iter", "ifs"}, 3); + setTarget(ap.getPyObject(0)); + setIter(ap.getPyObject(1)); + setIfs(ap.getPyObject(2)); + } + + public comprehension(PyObject target, PyObject iter, PyObject ifs) { + setTarget(target); + setIter(iter); + setIfs(ifs); + } + + public comprehension(Token token, expr target, expr iter, java.util.List<expr> ifs) { + super(token); + this.target = target; + addChild(target); + this.iter = iter; + addChild(iter); + this.ifs = ifs; + if (ifs == null) { + this.ifs = new ArrayList<expr>(); + } + for(PythonTree t : this.ifs) { + addChild(t); + } + } + + public comprehension(Integer ttype, Token token, expr target, expr iter, java.util.List<expr> + ifs) { + super(ttype, token); + this.target = target; + addChild(target); + this.iter = iter; + addChild(iter); + this.ifs = ifs; + if (ifs == null) { + this.ifs = new ArrayList<expr>(); + } + for(PythonTree t : this.ifs) { + addChild(t); + } + } + + public comprehension(PythonTree tree, expr target, expr iter, java.util.List<expr> ifs) { + super(tree); + this.target = target; + addChild(target); + this.iter = iter; + addChild(iter); + this.ifs = ifs; + if (ifs == null) { + this.ifs = new ArrayList<expr>(); + } + for(PythonTree t : this.ifs) { + addChild(t); + } + } + + @ExposedGet(name = "repr") + public String toString() { + return "comprehension"; + } + + public String toStringTree() { + StringBuffer sb = new StringBuffer("comprehension("); + sb.append("target="); + sb.append(dumpThis(target)); + sb.append(","); + sb.append("iter="); + sb.append(dumpThis(iter)); + sb.append(","); + sb.append("ifs="); + sb.append(dumpThis(ifs)); + sb.append(","); + sb.append(")"); + return sb.toString(); + } + + public <R> R accept(VisitorIF<R> visitor) throws Exception { + traverse(visitor); + return null; + } + + public void traverse(VisitorIF visitor) throws Exception { + if (target != null) + target.accept(visitor); + if (iter != null) + iter.accept(visitor); + if (ifs != null) { + for (PythonTree t : ifs) { + if (t != null) + t.accept(visitor); + } + } + } + +} Added: trunk/jython/src/org/python/antlr/ast/keyword.java =================================================================== --- trunk/jython/src/org/python/antlr/ast/keyword.java (rev 0) +++ trunk/jython/src/org/python/antlr/ast/keyword.java 2008-12-05 01:11:47 UTC (rev 5696) @@ -0,0 +1,136 @@ +// Autogenerated AST node +package org.python.antlr.ast; +import org.antlr.runtime.CommonToken; +import org.antlr.runtime.Token; +import org.python.antlr.AST; +import org.python.antlr.PythonTree; +import org.python.antlr.adapter.AstAdapters; +import org.python.antlr.base.excepthandler; +import org.python.antlr.base.expr; +import org.python.antlr.base.mod; +import org.python.antlr.base.slice; +import org.python.antlr.base.stmt; +import org.python.core.ArgParser; +import org.python.core.AstList; +import org.python.core.Py; +import org.python.core.PyObject; +import org.python.core.PyString; +import org.python.core.PyType; +import org.python.expose.ExposedGet; +import org.python.expose.ExposedMethod; +import org.python.expose.ExposedNew; +import org.python.expose.ExposedSet; +import org.python.expose.ExposedType; +import java.io.DataOutputStream; +import java.io.IOException; +import java.util.ArrayList; + +@ExposedType(name = "_ast.keyword", base = AST.class) +public class keyword extends PythonTree { + public static final PyType TYPE = PyType.fromClass(keyword.class); + private String arg; + public String getInternalArg() { + return arg; + } + @ExposedGet(name = "arg") + public PyObject getArg() { + if (arg == null) return Py.None; + return new PyString(arg); + } + @ExposedSet(name = "arg") + public void setArg(PyObject arg) { + this.arg = AstAdapters.py2identifier(arg); + } + + private expr value; + public expr getInternalValue() { + return value; + } + @ExposedGet(name = "value") + public PyObject getValue() { + return value; + } + @ExposedSet(name = "value") + public void setValue(PyObject value) { + this.value = AstAdapters.py2expr(value); + } + + + private final static PyString[] fields = + new PyString[] {new PyString("arg"), new PyString("value")}; + @ExposedGet(name = "_fields") + public PyString[] get_fields() { return fields; } + + private final static PyString[] attributes = new PyString[0]; + @ExposedGet(name = "_attributes") + public PyString[] get_attributes() { return attributes; } + + public keyword() { + this(TYPE); + } + public keyword(PyType subType) { + super(subType); + } + @ExposedNew + @ExposedMethod + public void keyword___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("keyword", args, keywords, new String[] + {"arg", "value"}, 2); + setArg(ap.getPyObject(0)); + setValue(ap.getPyObject(1)); + } + + public keyword(PyObject arg, PyObject value) { + setArg(arg); + setValue(value); + } + + public keyword(Token token, String arg, expr value) { + super(token); + this.arg = arg; + this.value = value; + addChild(value); + } + + public keyword(Integer ttype, Token token, String arg, expr value) { + super(ttype, token); + this.arg = arg; + this.value = value; + addChild(value); + } + + public keyword(PythonTree tree, String arg, expr value) { + super(tree); + this.arg = arg; + this.value = value; + addChild(value); + } + + @ExposedGet(name = "repr") + public String toString() { + return "keyword"; + } + + public String toStringTree() { + StringBuffer sb = new StringBuffer("keyword("); + sb.append("arg="); + sb.append(dumpThis(arg)); + sb.append(","); + sb.append("value="); + sb.append(dumpThis(value)); + sb.append(","); + sb.append(")"); + return sb.toString(); + } + + public <R> R accept(VisitorIF<R> visitor) throws Exception { + traverse(visitor); + return null; + } + + public void traverse(VisitorIF visitor) throws Exception { + if (value != null) + value.accept(visitor); + } + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fwi...@us...> - 2008-12-05 01:11:01
|
Revision: 5695 http://jython.svn.sourceforge.net/jython/?rev=5695&view=rev Author: fwierzbicki Date: 2008-12-05 01:10:49 +0000 (Fri, 05 Dec 2008) Log Message: ----------- Merging the astwrite branch into trunk. While I was testing, I noticed some problems stemming from the package names and the "Type" at the end of some of the asdl_antlr.py generated code -- so I fixed that up as well. This checkin changes all of the access on ast nodes to be getters and setters with Lists instead of arrays. The ast nodes also now descend from PyObject instead of Antlr's CommonTree. There are new adapter classes that handle the back and forth of ast nodes from Java to Python. Merged revisions 5586-5592,5594-5595,5597,5612,5628,5633-5634,5636-5637,5641-5643,5660,5672,5677-5679,5683,5685-5686 via svnmerge from https://jython.svn.sourceforge.net/svnroot/jython/branches/astwrite Modified Paths: -------------- trunk/jython/CoreExposed.includes trunk/jython/Lib/ast.py trunk/jython/Lib/inspect.py trunk/jython/Lib/test/test_ast.py trunk/jython/ast/Python.asdl trunk/jython/ast/asdl_antlr.py trunk/jython/grammar/Python.g trunk/jython/src/org/python/antlr/AST.java trunk/jython/src/org/python/antlr/ErrorHandler.java trunk/jython/src/org/python/antlr/ExpressionParser.java trunk/jython/src/org/python/antlr/FailFastHandler.java trunk/jython/src/org/python/antlr/GrammarActions.java trunk/jython/src/org/python/antlr/InteractiveParser.java trunk/jython/src/org/python/antlr/ListErrorHandler.java trunk/jython/src/org/python/antlr/ModuleParser.java trunk/jython/src/org/python/antlr/PythonTree.java trunk/jython/src/org/python/antlr/ast/Assert.java trunk/jython/src/org/python/antlr/ast/Assign.java trunk/jython/src/org/python/antlr/ast/Attribute.java trunk/jython/src/org/python/antlr/ast/AugAssign.java trunk/jython/src/org/python/antlr/ast/BinOp.java trunk/jython/src/org/python/antlr/ast/BoolOp.java trunk/jython/src/org/python/antlr/ast/Break.java trunk/jython/src/org/python/antlr/ast/Call.java trunk/jython/src/org/python/antlr/ast/ClassDef.java trunk/jython/src/org/python/antlr/ast/Compare.java trunk/jython/src/org/python/antlr/ast/Continue.java trunk/jython/src/org/python/antlr/ast/Delete.java trunk/jython/src/org/python/antlr/ast/Dict.java trunk/jython/src/org/python/antlr/ast/Ellipsis.java trunk/jython/src/org/python/antlr/ast/ErrorExpr.java trunk/jython/src/org/python/antlr/ast/ErrorMod.java trunk/jython/src/org/python/antlr/ast/ErrorSlice.java trunk/jython/src/org/python/antlr/ast/ErrorStmt.java trunk/jython/src/org/python/antlr/ast/Exec.java trunk/jython/src/org/python/antlr/ast/Expr.java trunk/jython/src/org/python/antlr/ast/Expression.java trunk/jython/src/org/python/antlr/ast/ExtSlice.java trunk/jython/src/org/python/antlr/ast/For.java trunk/jython/src/org/python/antlr/ast/FunctionDef.java trunk/jython/src/org/python/antlr/ast/GeneratorExp.java trunk/jython/src/org/python/antlr/ast/Global.java trunk/jython/src/org/python/antlr/ast/If.java trunk/jython/src/org/python/antlr/ast/IfExp.java trunk/jython/src/org/python/antlr/ast/Import.java trunk/jython/src/org/python/antlr/ast/ImportFrom.java trunk/jython/src/org/python/antlr/ast/Index.java trunk/jython/src/org/python/antlr/ast/Interactive.java trunk/jython/src/org/python/antlr/ast/Lambda.java trunk/jython/src/org/python/antlr/ast/List.java trunk/jython/src/org/python/antlr/ast/ListComp.java trunk/jython/src/org/python/antlr/ast/Module.java trunk/jython/src/org/python/antlr/ast/Name.java trunk/jython/src/org/python/antlr/ast/Num.java trunk/jython/src/org/python/antlr/ast/Pass.java trunk/jython/src/org/python/antlr/ast/Print.java trunk/jython/src/org/python/antlr/ast/Raise.java trunk/jython/src/org/python/antlr/ast/Repr.java trunk/jython/src/org/python/antlr/ast/Return.java trunk/jython/src/org/python/antlr/ast/Slice.java trunk/jython/src/org/python/antlr/ast/Str.java trunk/jython/src/org/python/antlr/ast/Subscript.java trunk/jython/src/org/python/antlr/ast/Suite.java trunk/jython/src/org/python/antlr/ast/TryExcept.java trunk/jython/src/org/python/antlr/ast/TryFinally.java trunk/jython/src/org/python/antlr/ast/Tuple.java trunk/jython/src/org/python/antlr/ast/UnaryOp.java trunk/jython/src/org/python/antlr/ast/VisitorBase.java trunk/jython/src/org/python/antlr/ast/VisitorIF.java trunk/jython/src/org/python/antlr/ast/While.java trunk/jython/src/org/python/antlr/ast/With.java trunk/jython/src/org/python/antlr/ast/Yield.java trunk/jython/src/org/python/antlr/ast/boolopType.java trunk/jython/src/org/python/antlr/ast/cmpopType.java trunk/jython/src/org/python/antlr/ast/expr_contextType.java trunk/jython/src/org/python/antlr/ast/operatorType.java trunk/jython/src/org/python/antlr/ast/unaryopType.java trunk/jython/src/org/python/compiler/ArgListCompiler.java trunk/jython/src/org/python/compiler/CodeCompiler.java trunk/jython/src/org/python/compiler/Future.java trunk/jython/src/org/python/compiler/Module.java trunk/jython/src/org/python/compiler/ProxyMaker.java trunk/jython/src/org/python/compiler/ScopeInfo.java trunk/jython/src/org/python/compiler/ScopesCompiler.java trunk/jython/src/org/python/core/AbstractArray.java trunk/jython/src/org/python/core/CollectionProxy.java trunk/jython/src/org/python/core/ParserFacade.java trunk/jython/src/org/python/core/Py.java trunk/jython/src/org/python/core/PyInstance.java trunk/jython/src/org/python/core/PyList.java trunk/jython/src/org/python/core/__builtin__.java trunk/jython/src/org/python/core/imp.java trunk/jython/src/org/python/modules/Setup.java Added Paths: ----------- trunk/jython/src/org/python/antlr/adapter/ trunk/jython/src/org/python/antlr/adapter/AliasAdapter.java trunk/jython/src/org/python/antlr/adapter/AstAdapter.java trunk/jython/src/org/python/antlr/adapter/AstAdapters.java trunk/jython/src/org/python/antlr/adapter/CmpopAdapter.java trunk/jython/src/org/python/antlr/adapter/ComprehensionAdapter.java trunk/jython/src/org/python/antlr/adapter/ExcepthandlerAdapter.java trunk/jython/src/org/python/antlr/adapter/ExprAdapter.java trunk/jython/src/org/python/antlr/adapter/IdentifierAdapter.java trunk/jython/src/org/python/antlr/adapter/KeywordAdapter.java trunk/jython/src/org/python/antlr/adapter/SliceAdapter.java trunk/jython/src/org/python/antlr/adapter/StmtAdapter.java trunk/jython/src/org/python/antlr/ast/AstModule.java trunk/jython/src/org/python/antlr/ast/ExceptHandler.java trunk/jython/src/org/python/antlr/base/ trunk/jython/src/org/python/antlr/base/excepthandler.java trunk/jython/src/org/python/antlr/base/expr.java trunk/jython/src/org/python/antlr/base/mod.java trunk/jython/src/org/python/antlr/base/slice.java trunk/jython/src/org/python/antlr/base/stmt.java trunk/jython/src/org/python/antlr/op/ trunk/jython/src/org/python/antlr/op/Add.java trunk/jython/src/org/python/antlr/op/And.java trunk/jython/src/org/python/antlr/op/AugLoad.java trunk/jython/src/org/python/antlr/op/AugStore.java trunk/jython/src/org/python/antlr/op/BitAnd.java trunk/jython/src/org/python/antlr/op/BitOr.java trunk/jython/src/org/python/antlr/op/BitXor.java trunk/jython/src/org/python/antlr/op/Del.java trunk/jython/src/org/python/antlr/op/Div.java trunk/jython/src/org/python/antlr/op/Eq.java trunk/jython/src/org/python/antlr/op/FloorDiv.java trunk/jython/src/org/python/antlr/op/Gt.java trunk/jython/src/org/python/antlr/op/GtE.java trunk/jython/src/org/python/antlr/op/In.java trunk/jython/src/org/python/antlr/op/Invert.java trunk/jython/src/org/python/antlr/op/Is.java trunk/jython/src/org/python/antlr/op/IsNot.java trunk/jython/src/org/python/antlr/op/LShift.java trunk/jython/src/org/python/antlr/op/Load.java trunk/jython/src/org/python/antlr/op/Lt.java trunk/jython/src/org/python/antlr/op/LtE.java trunk/jython/src/org/python/antlr/op/Mod.java trunk/jython/src/org/python/antlr/op/Mult.java trunk/jython/src/org/python/antlr/op/Not.java trunk/jython/src/org/python/antlr/op/NotEq.java trunk/jython/src/org/python/antlr/op/NotIn.java trunk/jython/src/org/python/antlr/op/Or.java trunk/jython/src/org/python/antlr/op/Param.java trunk/jython/src/org/python/antlr/op/Pow.java trunk/jython/src/org/python/antlr/op/RShift.java trunk/jython/src/org/python/antlr/op/Store.java trunk/jython/src/org/python/antlr/op/Sub.java trunk/jython/src/org/python/antlr/op/UAdd.java trunk/jython/src/org/python/antlr/op/USub.java trunk/jython/src/org/python/core/AstList.java Removed Paths: ------------- trunk/jython/Lib/_ast.py trunk/jython/src/org/python/antlr/adapter/AliasAdapter.java trunk/jython/src/org/python/antlr/adapter/AstAdapter.java trunk/jython/src/org/python/antlr/adapter/AstAdapters.java trunk/jython/src/org/python/antlr/adapter/CmpopAdapter.java trunk/jython/src/org/python/antlr/adapter/ComprehensionAdapter.java trunk/jython/src/org/python/antlr/adapter/ExcepthandlerAdapter.java trunk/jython/src/org/python/antlr/adapter/ExprAdapter.java trunk/jython/src/org/python/antlr/adapter/IdentifierAdapter.java trunk/jython/src/org/python/antlr/adapter/KeywordAdapter.java trunk/jython/src/org/python/antlr/adapter/SliceAdapter.java trunk/jython/src/org/python/antlr/adapter/StmtAdapter.java trunk/jython/src/org/python/antlr/ast/aliasType.java trunk/jython/src/org/python/antlr/ast/argumentsType.java trunk/jython/src/org/python/antlr/ast/comprehensionType.java trunk/jython/src/org/python/antlr/ast/excepthandlerType.java trunk/jython/src/org/python/antlr/ast/exprType.java trunk/jython/src/org/python/antlr/ast/keywordType.java trunk/jython/src/org/python/antlr/ast/modType.java trunk/jython/src/org/python/antlr/ast/sliceType.java trunk/jython/src/org/python/antlr/ast/stmtType.java Property Changed: ---------------- trunk/jython/ trunk/jython/ast/ trunk/jython/src/org/python/antlr/ trunk/jython/src/org/python/antlr/ast/ trunk/jython/src/org/python/compiler/ Property changes on: trunk/jython ___________________________________________________________________ Modified: svnmerge-integrated - /branches/astwrite:1-5585 + /branches/astwrite:1-5692 Modified: trunk/jython/CoreExposed.includes =================================================================== --- trunk/jython/CoreExposed.includes 2008-12-05 00:26:54 UTC (rev 5694) +++ trunk/jython/CoreExposed.includes 2008-12-05 01:10:49 UTC (rev 5695) @@ -55,3 +55,64 @@ org/python/modules/zipimport/zipimporter.class org/python/modules/PyStruct.class org/python/modules/PyTeeIterator.class +org/python/antlr/AST.class +org/python/antlr/ast/AsmModule.class +org/python/antlr/ast/And.class +org/python/antlr/ast/BitXor.class +org/python/antlr/ast/Gt.class +org/python/antlr/ast/AugLoad.class +org/python/antlr/ast/Mult.class +org/python/antlr/ast/NotEq.class +org/python/antlr/ast/LShift.class +org/python/antlr/ast/IsNot.class +org/python/antlr/ast/RShift.class +org/python/antlr/ast/Eq.class +org/python/antlr/ast/BitOr.class +org/python/antlr/ast/Div.class +org/python/antlr/ast/LtE.class +org/python/antlr/ast/Store.class +org/python/antlr/ast/Not.class +org/python/antlr/ast/BitAnd.class +org/python/antlr/ast/In.class +org/python/antlr/ast/UAdd.class +org/python/antlr/ast/GtE.class +org/python/antlr/ast/Lt.class +org/python/antlr/ast/Mod.class +org/python/antlr/ast/Sub.class +org/python/antlr/ast/Del.class +org/python/antlr/ast/Pow.class +org/python/antlr/ast/Invert.class +org/python/antlr/ast/Is.class +org/python/antlr/ast/Load.class +org/python/antlr/ast/Add.class +org/python/antlr/ast/AugStore.class +org/python/antlr/ast/Delete.class +org/python/antlr/ast/GeneratorExp.class +org/python/antlr/ast/Import.class +org/python/antlr/ast/comprehensionType.class +org/python/antlr/ast/With.class +org/python/antlr/ast/Module.class +org/python/antlr/ast/Global.class +org/python/antlr/ast/Dict.class +org/python/antlr/ast/ClassDef.class +org/python/antlr/ast/ExceptHandler.class +org/python/antlr/ast/TryExcept.class +org/python/antlr/ast/Tuple.class +org/python/antlr/ast/ListComp.class +org/python/antlr/ast/TryFinally.class +org/python/antlr/ast/If.class +org/python/antlr/ast/ImportFrom.class +org/python/antlr/ast/FunctionDef.class +org/python/antlr/ast/argumentsType.class +org/python/antlr/ast/List.class +org/python/antlr/ast/Interactive.class +org/python/antlr/ast/ExtSlice.class +org/python/antlr/ast/Compare.class +org/python/antlr/ast/While.class +org/python/antlr/ast/Call.class +org/python/antlr/ast/Assign.class +org/python/antlr/ast/For.class +org/python/antlr/ast/Suite.class +org/python/antlr/ast/BoolOp.class +org/python/antlr/ast/Print.class + Deleted: trunk/jython/Lib/_ast.py =================================================================== --- trunk/jython/Lib/_ast.py 2008-12-05 00:26:54 UTC (rev 5694) +++ trunk/jython/Lib/_ast.py 2008-12-05 01:10:49 UTC (rev 5695) @@ -1,79 +0,0 @@ -from org.python.antlr.ast.boolopType import And,Or -from org.python.antlr.ast.operatorType import Add,Sub,Mult,Div,FloorDiv,Mod,LShift,RShift,BitOr,BitAnd,BitXor,Pow -from org.python.antlr.ast.cmpopType import Eq,Gt,GtE,In,Is,IsNot,Lt,LtE,NotEq,NotIn -from org.python.antlr.ast.unaryopType import Invert,Not,UAdd,USub -from org.python.core.PyTableCode import PyCF_ONLY_AST -from org.python.antlr.ast.expr_contextType import Load, Store, Del, AugLoad, AugStore, Param - -from org.python.antlr import AST - -from org.python.antlr.ast import Assert -from org.python.antlr.ast import Assign -from org.python.antlr.ast import Attribute -from org.python.antlr.ast import AugAssign -from org.python.antlr.ast import BinOp -from org.python.antlr.ast import BoolOp -from org.python.antlr.ast import Break -from org.python.antlr.ast import Call -from org.python.antlr.ast import ClassDef -from org.python.antlr.ast import Compare -from org.python.antlr.ast import Continue -from org.python.antlr.ast import Delete -from org.python.antlr.ast import Dict -from org.python.antlr.ast import Ellipsis -from org.python.antlr.ast import Exec -from org.python.antlr.ast import Expr -from org.python.antlr.ast import Expression -from org.python.antlr.ast import ExtSlice -from org.python.antlr.ast import For -from org.python.antlr.ast import FunctionDef -from org.python.antlr.ast import GeneratorExp -from org.python.antlr.ast import Global -from org.python.antlr.ast import If -from org.python.antlr.ast import IfExp -from org.python.antlr.ast import Import -from org.python.antlr.ast import ImportFrom -from org.python.antlr.ast import Index -from org.python.antlr.ast import Interactive -from org.python.antlr.ast import Lambda -from org.python.antlr.ast import List -from org.python.antlr.ast import ListComp -from org.python.antlr.ast import Module -from org.python.antlr.ast import Name -from org.python.antlr.ast import Num -from org.python.antlr.ast import Pass -from org.python.antlr.ast import Print -from org.python.antlr.ast import Raise -from org.python.antlr.ast import Repr -from org.python.antlr.ast import Return -from org.python.antlr.ast import Slice -from org.python.antlr.ast import Str -from org.python.antlr.ast import Subscript -from org.python.antlr.ast import Suite -from org.python.antlr.ast import TryExcept -from org.python.antlr.ast import TryFinally -from org.python.antlr.ast import Tuple -from org.python.antlr.ast import UnaryOp -#from org.python.antlr.ast import Unicode -from org.python.antlr.ast import While -from org.python.antlr.ast import With -from org.python.antlr.ast import Yield - -import org.python.antlr.ast.aliasType as alias -import org.python.antlr.ast.argumentsType as arguments -import org.python.antlr.ast.boolopType as boolop -import org.python.antlr.ast.cmpopType as cmpop -import org.python.antlr.ast.comprehensionType as comprehension -import org.python.antlr.ast.excepthandlerType as excepthandler -import org.python.antlr.ast.exprType as expr -import org.python.antlr.ast.expr_contextType as expr_context -import org.python.antlr.ast.keywordType as keyword -import org.python.antlr.ast.modType as mod -import org.python.antlr.ast.operatorType as operator -import org.python.antlr.ast.sliceType as slice -import org.python.antlr.ast.stmtType as stmt -import org.python.antlr.ast.unaryopType as unaryop - -#Set to the same value as the CPython version we are targetting. -#note that this number comes from the revision number in CPython's repository. -__version__ = 43614 Modified: trunk/jython/Lib/ast.py =================================================================== --- trunk/jython/Lib/ast.py 2008-12-05 00:26:54 UTC (rev 5694) +++ trunk/jython/Lib/ast.py 2008-12-05 01:10:49 UTC (rev 5695) @@ -29,31 +29,6 @@ from _ast import * from _ast import __version__ -if sys.platform.startswith('java'): - import array - - ast_list = array.ArrayType - - def get_class_name(t): - result = t.__class__.__name__ - if result in ("expr_contextType", - "boolopType", - "unaryopType", - "cmpopType", - "operatorType"): - result = str(t) - if result == "AugLoad": - result = "Load" - elif result == "AugStore": - result = "Store" - elif result.endswith("Type"): - result = result[:-4] - return result -else: - ast_list = list - get_class_name = lambda node: node.__class__.__name__ - - def parse(expr, filename='<unknown>', mode='exec'): """ Parse an expression into an AST node. @@ -105,7 +80,7 @@ def _format(node): if isinstance(node, AST): fields = [(a, _format(b)) for a, b in iter_fields(node)] - rv = '%s(%s' % (get_class_name(node), ', '.join( + rv = '%s(%s' % (node.__class__.__name__, ', '.join( ('%s=%s' % field for field in fields) if annotate_fields else (b for a, b in fields) @@ -115,11 +90,11 @@ rv += ', '.join('%s=%s' % (a, _format(getattr(node, a))) for a in node._attributes) return rv + ')' - elif isinstance(node, ast_list): + elif hasattr(node, "__iter__"): return '[%s]' % ', '.join(_format(x) for x in node) return repr(node) if not isinstance(node, AST): - raise TypeError('expected AST, got %r' % get_class_name(node)) + raise TypeError('expected AST, got %r' % node.__class__.__name__) return _format(node) @@ -193,7 +168,7 @@ for name, field in iter_fields(node): if isinstance(field, AST): yield field - elif isinstance(field, ast_list): + elif hasattr(field, "__iter__"): for item in field: if isinstance(item, AST): yield item @@ -206,7 +181,7 @@ will be raised. """ if not isinstance(node, (FunctionDef, ClassDef, Module)): - raise TypeError("%r can't have docstrings" % get_class_name(node)) + raise TypeError("%r can't have docstrings" % node.__class__.__name__) if node.body and isinstance(node.body[0], Expr) and \ isinstance(node.body[0].value, Str): if clean: @@ -251,14 +226,14 @@ def visit(self, node): """Visit a node.""" - method = 'visit_' + get_class_name(node) + method = 'visit_' + node.__class__.__name__ visitor = getattr(self, method, self.generic_visit) return visitor(node) def generic_visit(self, node): """Called if no explicit visitor function exists for a node.""" for field, value in iter_fields(node): - if isinstance(value, ast_list): + if hasattr(value, "__iter__"): for item in value: if isinstance(item, AST): self.visit(item) @@ -305,7 +280,7 @@ def generic_visit(self, node): for field, old_value in iter_fields(node): old_value = getattr(node, field, None) - if isinstance(old_value, ast_list): + if hasattr(old_value, "__iter__"): new_values = [] for value in old_value: if isinstance(value, AST): Modified: trunk/jython/Lib/inspect.py =================================================================== --- trunk/jython/Lib/inspect.py 2008-12-05 00:26:54 UTC (rev 5694) +++ trunk/jython/Lib/inspect.py 2008-12-05 01:10:49 UTC (rev 5695) @@ -315,6 +315,13 @@ return None if not isinstance(doc, types.StringTypes): return None + return cleandoc(doc) + +def cleandoc(doc): + """Clean up indentation from docstrings. + + Any whitespace that can be uniformly removed from the second line + onwards is removed.""" try: lines = string.split(string.expandtabs(doc), '\n') except UnicodeError: Modified: trunk/jython/Lib/test/test_ast.py =================================================================== --- trunk/jython/Lib/test/test_ast.py 2008-12-05 00:26:54 UTC (rev 5694) +++ trunk/jython/Lib/test/test_ast.py 2008-12-05 01:10:49 UTC (rev 5695) @@ -1,36 +1,22 @@ -#Taken and modified from CPython's release25-maint branch, revision 62446. -import sys,os, itertools +import sys, itertools, unittest +from test import test_support import ast -def get_class_name(t): - result = t.__class__.__name__ - if os.name.startswith('java'): - if result in ("expr_contextType", - "boolopType", - "unaryopType", - "cmpopType", - "operatorType"): - result = t.name() - else: - result = result.split(".")[-1] - if result.endswith("Type"): - result = result[:-4] - return result - def to_tuple(t): if t is None or isinstance(t, (basestring, int, long, complex)): return t - elif hasattr(t, '__iter__'): + elif hasattr(t, "__iter__"): return [to_tuple(e) for e in t] - result = [get_class_name(t)] + result = [t.__class__.__name__] if hasattr(t, 'lineno') and hasattr(t, 'col_offset'): result.append((t.lineno, t.col_offset)) - if not hasattr(t, '_fields') or t._fields is None: + if t._fields is None: return tuple(result) for f in t._fields: result.append(to_tuple(getattr(t, f))) return tuple(result) + # These tests are compiled through "exec" # There should be atleast one test per statement exec_tests = [ @@ -134,49 +120,192 @@ # TODO: expr_context, slice, boolop, operator, unaryop, cmpop, comprehension # excepthandler, arguments, keywords, alias -if __name__=='__main__' and sys.argv[1:] == ['-g']: - for statements, kind in ((exec_tests, "exec"), (single_tests, "single"), - (eval_tests, "eval")): - print kind+"_results = [" - for s in statements: - print repr(to_tuple(compile(s, "?", kind, 0x400)))+"," - print "]" - print "run_tests()" - raise SystemExit +class AST_Tests(unittest.TestCase): -def test_order(ast_node, parent_pos): - - if (not isinstance(ast_node, ast.AST) - or not hasattr(ast_node, '_fields') - or ast_node._fields == None): + def _assert_order(self, ast_node, parent_pos): + if not isinstance(ast_node, ast.AST) or ast_node._fields is None: return - if isinstance(ast_node, (ast.expr, ast.stmt, ast.excepthandler)): - node_pos = (ast_node.lineno, ast_node.col_offset) - assert node_pos >= parent_pos, (node_pos, parent_pos) - parent_pos = (ast_node.lineno, ast_node.col_offset) - for name in ast_node._fields: - value = getattr(ast_node, name) - if hasattr(value, '__iter__'): - for child in value: - test_order(child, parent_pos) - elif value != None: - test_order(value, parent_pos) + if isinstance(ast_node, (ast.expr, ast.stmt, ast.excepthandler)): + node_pos = (ast_node.lineno, ast_node.col_offset) + self.assert_(node_pos >= parent_pos) + parent_pos = (ast_node.lineno, ast_node.col_offset) + for name in ast_node._fields: + value = getattr(ast_node, name) + if hasattr(value, "__iter__"): + for child in value: + self._assert_order(child, parent_pos) + elif value is not None: + self._assert_order(value, parent_pos) -def run_tests(): - for input, output, kind in ((exec_tests, exec_results, "exec"), - (single_tests, single_results, "single"), - (eval_tests, eval_results, "eval")): - for i, o in itertools.izip(input, output): - ast_tree = compile(i, "?", kind, 0x400) - assert to_tuple(ast_tree) == o, "expected %s, got %s" % ( - o, to_tuple(ast_tree)) - test_order(ast_tree, (0, 0)) + def test_snippets(self): + for input, output, kind in ((exec_tests, exec_results, "exec"), + (single_tests, single_results, "single"), + (eval_tests, eval_results, "eval")): + for i, o in itertools.izip(input, output): + ast_tree = compile(i, "?", kind, ast.PyCF_ONLY_AST) + self.assertEquals(to_tuple(ast_tree), o) + self._assert_order(ast_tree, (0, 0)) -# XXX: AugStore added for Jython. Short term it is too hard to emit just "Store" as CPython does. + def test_nodeclasses(self): + x = ast.BinOp(1, 2, 3, lineno=0) + self.assertEquals(x.left.n, 1) + self.assertEquals(int(x.op), 2) + self.assertEquals(x.right.n, 3) + self.assertEquals(x.lineno, 0) + + # node raises exception when not given enough arguments + self.assertRaises(TypeError, ast.BinOp, 1, 2) + + # can set attributes through kwargs too + x = ast.BinOp(left=1, op=2, right=3, lineno=0) + self.assertEquals(x.left.n, 1) + self.assertEquals(int(x.op), 2) + self.assertEquals(x.right.n, 3) + self.assertEquals(x.lineno, 0) + + # this used to fail because Sub._fields was None + x = ast.Sub() + + def test_pickling(self): + import pickle + mods = [pickle] + try: + import cPickle + mods.append(cPickle) + except ImportError: + pass + protocols = [0, 1, 2] + for mod in mods: + for protocol in protocols: + for ast in (compile(i, "?", "exec", 0x400) for i in exec_tests): + ast2 = mod.loads(mod.dumps(ast, protocol)) + self.assertEquals(to_tuple(ast2), to_tuple(ast)) + + +class ASTHelpers_Test(unittest.TestCase): + + def test_parse(self): + a = ast.parse('foo(1 + 1)') + b = compile('foo(1 + 1)', '<unknown>', 'exec', ast.PyCF_ONLY_AST) + self.assertEqual(ast.dump(a), ast.dump(b)) + + def test_dump(self): + node = ast.parse('spam(eggs, "and cheese")') + self.assertEqual(ast.dump(node), + "Module(body=[Expr(value=Call(func=Name(id='spam', ctx=Load()), " + "args=[Name(id='eggs', ctx=Load()), Str(s='and cheese')], " + "keywords=[], starargs=None, kwargs=None))])" + ) + self.assertEqual(ast.dump(node, annotate_fields=False), + "Module([Expr(Call(Name('spam', Load()), [Name('eggs', Load()), " + "Str('and cheese')], [], None, None))])" + ) + self.assertEqual(ast.dump(node, include_attributes=True), + "Module(body=[Expr(value=Call(func=Name(id='spam', ctx=Load(), " + "lineno=1, col_offset=0), args=[Name(id='eggs', ctx=Load(), " + "lineno=1, col_offset=5), Str(s='and cheese', lineno=1, " + "col_offset=11)], keywords=[], starargs=None, kwargs=None, " + "lineno=1, col_offset=0), lineno=1, col_offset=0)])" + ) + + def test_copy_location(self): + src = ast.parse('1 + 1', mode='eval') + src.body.right = ast.copy_location(ast.Num(2), src.body.right) + self.assertEqual(ast.dump(src, include_attributes=True), + 'Expression(body=BinOp(left=Num(n=1, lineno=1, col_offset=0), ' + 'op=Add(), right=Num(n=2, lineno=1, col_offset=4), lineno=1, ' + 'col_offset=0))' + ) + + def test_fix_missing_locations(self): + src = ast.parse('write("spam")') + src.body.append(ast.Expr(ast.Call(ast.Name('spam', ast.Load()), + [ast.Str('eggs')], [], None, None))) + self.assertEqual(src, ast.fix_missing_locations(src)) + self.assertEqual(ast.dump(src, include_attributes=True), + "Module(body=[Expr(value=Call(func=Name(id='write', ctx=Load(), " + "lineno=1, col_offset=0), args=[Str(s='spam', lineno=1, " + "col_offset=6)], keywords=[], starargs=None, kwargs=None, " + "lineno=1, col_offset=0), lineno=1, col_offset=0), " + "Expr(value=Call(func=Name(id='spam', ctx=Load(), lineno=1, " + "col_offset=0), args=[Str(s='eggs', lineno=1, col_offset=0)], " + "keywords=[], starargs=None, kwargs=None, lineno=1, " + "col_offset=0), lineno=1, col_offset=0)])" + ) + + def test_increment_lineno(self): + src = ast.parse('1 + 1', mode='eval') + self.assertEqual(ast.increment_lineno(src, n=3), src) + self.assertEqual(ast.dump(src, include_attributes=True), + 'Expression(body=BinOp(left=Num(n=1, lineno=4, col_offset=0), ' + 'op=Add(), right=Num(n=1, lineno=4, col_offset=4), lineno=4, ' + 'col_offset=0))' + ) + + def test_iter_fields(self): + node = ast.parse('foo()', mode='eval') + d = dict(ast.iter_fields(node.body)) + self.assertEqual(d.pop('func').id, 'foo') + + #XXX: tests for equality between astlist and regular lists not + # working, breaking this test up into its components. + #self.assertEqual(d, {'keywords': [], 'kwargs': None, + # 'args': [], 'starargs': None}) + assert len(d) == 4 + assert d['keywords'] is not None + assert len(d['keywords']) == 0 + assert d['args'] is not None + assert len(d['args']) == 0 + assert d['kwargs'] is None + assert d['starargs'] is None + + def test_iter_child_nodes(self): + node = ast.parse("spam(23, 42, eggs='leek')", mode='eval') + self.assertEqual(len(list(ast.iter_child_nodes(node.body))), 4) + iterator = ast.iter_child_nodes(node.body) + self.assertEqual(iterator.next().id, 'spam') + self.assertEqual(iterator.next().n, 23) + self.assertEqual(iterator.next().n, 42) + self.assertEqual(ast.dump(iterator.next()), + "keyword(arg='eggs', value=Str(s='leek'))" + ) + + def test_get_docstring(self): + node = ast.parse('def foo():\n """line one\n line two"""') + self.assertEqual(ast.get_docstring(node.body[0]), + 'line one\nline two') + + def test_literal_eval(self): + self.assertEqual(ast.literal_eval('[1, 2, 3]'), [1, 2, 3]) + self.assertEqual(ast.literal_eval('{"foo": 42}'), {"foo": 42}) + self.assertEqual(ast.literal_eval('(True, False, None)'), (True, False, None)) + self.assertRaises(ValueError, ast.literal_eval, 'foo()') + + +def test_main(): + #XXX: AST pickling is left as a TODO for now. + del AST_Tests.test_pickling + + test_support.run_unittest(AST_Tests, ASTHelpers_Test) + +def main(): + if __name__ != '__main__': + return + if sys.argv[1:] == ['-g']: + for statements, kind in ((exec_tests, "exec"), (single_tests, "single"), + (eval_tests, "eval")): + print kind+"_results = [" + for s in statements: + print repr(to_tuple(compile(s, "?", kind, 0x400)))+"," + print "]" + print "main()" + raise SystemExit + test_main() + #### EVERYTHING BELOW IS GENERATED ##### exec_results = [ ('Module', [('FunctionDef', (1, 0), 'f', ('arguments', [], None, None, []), [('Pass', (1, 9))], [])]), -('Module', [('ClassDef', (1, 0), 'C', [], [('Pass', (1, 8))],[])]), +('Module', [('ClassDef', (1, 0), 'C', [], [('Pass', (1, 8))], [])]), ('Module', [('FunctionDef', (1, 0), 'f', ('arguments', [], None, None, []), [('Return', (1, 8), ('Num', (1, 15), 1))], [])]), ('Module', [('Delete', (1, 0), [('Name', (1, 4), 'v', ('Del',))])]), ('Module', [('Assign', (1, 0), [('Name', (1, 0), 'v', ('Store',))], ('Num', (1, 4), 1))]), @@ -186,7 +315,7 @@ ('Module', [('While', (1, 0), ('Name', (1, 6), 'v', ('Load',)), [('Pass', (1, 8))], [])]), ('Module', [('If', (1, 0), ('Name', (1, 3), 'v', ('Load',)), [('Pass', (1, 5))], [])]), ('Module', [('Raise', (1, 0), ('Name', (1, 6), 'Exception', ('Load',)), ('Str', (1, 17), 'string'), None)]), -('Module', [('TryExcept', (1, 0), [('Pass', (2, 2))], [('excepthandler', (3, 0), ('Name', (3, 7), 'Exception', ('Load',)), None, [('Pass', (4, 2))], 3, 0)], [])]), +('Module', [('TryExcept', (1, 0), [('Pass', (2, 2))], [('ExceptHandler', (3, 0), ('Name', (3, 7), 'Exception', ('Load',)), None, [('Pass', (4, 2))])], [])]), ('Module', [('TryFinally', (1, 0), [('Pass', (2, 2))], [('Pass', (4, 2))])]), ('Module', [('Assert', (1, 0), ('Name', (1, 7), 'v', ('Load',)), None)]), ('Module', [('Import', (1, 0), [('alias', 'sys', None)])]), @@ -221,4 +350,4 @@ ('Expression', ('Tuple', (1, 0), [('Num', (1, 0), 1), ('Num', (1, 2), 2), ('Num', (1, 4), 3)], ('Load',))), ('Expression', ('Call', (1, 0), ('Attribute', (1, 0), ('Attribute', (1, 0), ('Attribute', (1, 0), ('Name', (1, 0), 'a', ('Load',)), 'b', ('Load',)), 'c', ('Load',)), 'd', ('Load',)), [('Subscript', (1, 8), ('Attribute', (1, 8), ('Name', (1, 8), 'a', ('Load',)), 'b', ('Load',)), ('Slice', ('Num', (1, 12), 1), ('Num', (1, 14), 2), None), ('Load',))], [], None, None)), ] -run_tests() +main() Property changes on: trunk/jython/ast ___________________________________________________________________ Added: svn:ignore + .asdl_antlr.py.swp Modified: trunk/jython/ast/Python.asdl =================================================================== --- trunk/jython/ast/Python.asdl 2008-12-05 00:26:54 UTC (rev 5694) +++ trunk/jython/ast/Python.asdl 2008-12-05 01:10:49 UTC (rev 5695) @@ -1,6 +1,6 @@ -- ASDL's five builtin types are identifier, int, string, object, bool -module Python version "$Revision: 53731 $" +module Python version "$Revision: 62047 $" { mod = Module(stmt* body) | Interactive(stmt* body) @@ -10,9 +10,8 @@ | Suite(stmt* body) stmt = FunctionDef(identifier name, arguments args, - stmt* body, expr* decorators) - | ClassDef(identifier name, expr* bases, - stmt* body, expr* decorators) + stmt* body, expr* decorator_list) + | ClassDef(identifier name, expr* bases, stmt* body, expr *decorator_list) | Return(expr? value) | Delete(expr* targets) @@ -29,7 +28,8 @@ | With(expr context_expr, expr? optional_vars, stmt* body) -- 'type' is a bad name - | Raise(expr? type, expr? inst, expr? tback) + -- changed to 'type' to excepttype for Jython + | Raise(expr? excepttype, expr? inst, expr? tback) | TryExcept(stmt* body, excepthandler* handlers, stmt* orelse) | TryFinally(stmt* body, stmt* finalbody) | Assert(expr test, expr? msg) @@ -99,11 +99,9 @@ comprehension = (expr target, expr iter, expr* ifs) -- not sure what to call the first argument for raise and except - -- TODO(jhylton): Figure out if there is a better way to handle - -- lineno and col_offset fields, particularly when - -- ast is exposed to Python. - excepthandler = (expr? type, expr? name, stmt* body, int lineno, - int col_offset) + -- changed to 'type' to excepttype for Jython + excepthandler = ExceptHandler(expr? excepttype, expr? name, stmt* body) + attributes (int lineno, int col_offset) arguments = (expr* args, identifier? vararg, identifier? kwarg, expr* defaults) Modified: trunk/jython/ast/asdl_antlr.py =================================================================== --- trunk/jython/ast/asdl_antlr.py 2008-12-05 00:26:54 UTC (rev 5694) +++ trunk/jython/ast/asdl_antlr.py 2008-12-05 01:10:49 UTC (rev 5695) @@ -9,7 +9,7 @@ import asdl TABSIZE = 4 -MAX_COL = 80 +MAX_COL = 100 def reflow_lines(s, depth): """Reflow the line s indented depth tabs. @@ -51,17 +51,39 @@ self.dir = dir super(EmitVisitor, self).__init__() - def open(self, name, refersToPythonTree=1, useDataOutput=0): - self.file = open(os.path.join(self.dir, "%s.java" % name), "w") + def open(self, package, name, refersToPythonTree=1, useDataOutput=0): + path = os.path.join(self.dir, package, "%s.java" % name) + open(path, "w") + self.file = open(os.path.join(self.dir, package, "%s.java" % name), "w") print >> self.file, "// Autogenerated AST node" - print >> self.file, 'package org.python.antlr.ast;' + print >> self.file, 'package org.python.antlr.%s;' % package if refersToPythonTree: - print >> self.file, 'import org.python.antlr.PythonTree;' print >> self.file, 'import org.antlr.runtime.CommonToken;' print >> self.file, 'import org.antlr.runtime.Token;' + print >> self.file, 'import org.python.antlr.AST;' + print >> self.file, 'import org.python.antlr.PythonTree;' + print >> self.file, 'import org.python.antlr.adapter.AstAdapters;' + print >> self.file, 'import org.python.antlr.base.excepthandler;' + print >> self.file, 'import org.python.antlr.base.expr;' + print >> self.file, 'import org.python.antlr.base.mod;' + print >> self.file, 'import org.python.antlr.base.slice;' + print >> self.file, 'import org.python.antlr.base.stmt;' + print >> self.file, 'import org.python.core.ArgParser;' + print >> self.file, 'import org.python.core.AstList;' + print >> self.file, 'import org.python.core.Py;' + print >> self.file, 'import org.python.core.PyObject;' + print >> self.file, 'import org.python.core.PyString;' + print >> self.file, 'import org.python.core.PyType;' + print >> self.file, 'import org.python.expose.ExposedGet;' + print >> self.file, 'import org.python.expose.ExposedMethod;' + print >> self.file, 'import org.python.expose.ExposedNew;' + print >> self.file, 'import org.python.expose.ExposedSet;' + print >> self.file, 'import org.python.expose.ExposedType;' + if useDataOutput: print >> self.file, 'import java.io.DataOutputStream;' print >> self.file, 'import java.io.IOException;' + print >> self.file, 'import java.util.ArrayList;' print >> self.file def close(self): @@ -131,80 +153,140 @@ self.visit(type.value, type.name, depth) def visitSum(self, sum, name, depth): - if sum.simple: + if sum.simple and not name == "excepthandler": self.simple_sum(sum, name, depth) + self.simple_sum_wrappers(sum, name, depth) else: self.sum_with_constructor(sum, name, depth) def simple_sum(self, sum, name, depth): - self.open("%sType" % name, refersToPythonTree=0) + self.open("ast", "%sType" % name, refersToPythonTree=0) self.emit('import org.python.antlr.AST;', depth) self.emit('', 0) - self.emit("public enum %(name)sType implements AST {" % locals(), depth) + + self.emit("public enum %(name)sType {" % locals(), depth) self.emit("UNDEFINED,", depth + 1) for i in range(len(sum.types) - 1): type = sum.types[i] self.emit("%s," % type.name, depth + 1) self.emit("%s;" % sum.types[len(sum.types) - 1].name, depth + 1) - self.attributes(sum, depth, True); - self.emit("}", depth) self.close() - def attributes(self, obj, depth, always_emit=False): + def simple_sum_wrappers(self, sum, name, depth): + for i in range(len(sum.types)): + type = sum.types[i] + self.open("op", type.name, refersToPythonTree=0) + self.emit('import org.python.antlr.AST;', depth) + self.emit('import org.python.antlr.PythonTree;', depth) + self.emit('import org.python.core.Py;', depth) + self.emit('import org.python.core.PyObject;', depth) + self.emit('import org.python.core.PyString;', depth) + self.emit('import org.python.core.PyType;', depth) + self.emit('import org.python.expose.ExposedGet;', depth) + self.emit('import org.python.expose.ExposedMethod;', depth) + self.emit('import org.python.expose.ExposedNew;', depth) + self.emit('import org.python.expose.ExposedSet;', depth) + self.emit('import org.python.expose.ExposedType;', depth) + self.emit('', 0) + + self.emit('@ExposedType(name = "_ast.%s", base = AST.class)' % type.name, depth) + self.emit("public class %s extends PythonTree {" % type.name, depth) + self.emit('public static final PyType TYPE = PyType.fromClass(%s.class);' % type.name, depth + 1) + self.emit('', 0) + + self.emit("public %s() {" % (type.name), depth) + self.emit("}", depth) + self.emit('', 0) + + self.emit("public %s(PyType subType) {" % (type.name), depth) + self.emit("super(subType);", depth + 1) + self.emit("}", depth) + self.emit('', 0) + + self.emit("@ExposedNew", depth) + self.emit("@ExposedMethod", depth) + self.emit("public void %s___init__(PyObject[] args, String[] keywords) {}" % type.name, depth) + self.emit('', 0) + + self.attributes(type, name, depth); + + self.emit('@ExposedMethod', depth + 1) + self.emit('public PyObject __int__() {', depth + 1) + self.emit("return %s___int__();" % type.name, depth + 2) + self.emit("}", depth + 1) + self.emit('', 0) + + self.emit("final PyObject %s___int__() {" % type.name, depth + 1) + self.emit('return Py.newInteger(%s);' % str(i + 1), depth + 2) + self.emit("}", depth + 1) + self.emit('', 0) + + self.emit("}", depth) + self.close() + + + def attributes(self, obj, name, depth): field_list = [] if hasattr(obj, "fields"): for f in obj.fields: - field_list.append('"%s"' % f.name) + field_list.append('new PyString("%s")' % f.name) if len(field_list) > 0: - self.emit("private final static String[] fields = new String[] {%s};" % - ", ".join(field_list), depth+1) - self.emit("public String[] get_fields() { return fields; }", depth+1) + self.emit("private final static PyString[] fields =", depth + 1) + self.emit("new PyString[] {%s};" % ", ".join(field_list), depth+1) + self.emit('@ExposedGet(name = "_fields")', depth + 1) + self.emit("public PyString[] get_fields() { return fields; }", depth+1) self.emit("", 0) - elif always_emit: - self.emit("private final static String[] fields = new String[0];", depth+1) - self.emit("public String[] get_fields() { return fields; }", depth+1) + else: + self.emit("private final static PyString[] fields = new PyString[0];", depth+1) + self.emit('@ExposedGet(name = "_fields")', depth + 1) + self.emit("public PyString[] get_fields() { return fields; }", depth+1) self.emit("", 0) - att_list = [] - if hasattr(obj, "attributes"): - for a in obj.attributes: - att_list.append('"%s"' % a.name) - if len(att_list) > 0: - self.emit("private final static String[] attributes = new String[] {%s};" % - ", ".join(att_list), depth+1) - self.emit("public String[] get_attributes() { return attributes; }", depth+1) + if str(name) in ('stmt', 'expr', 'excepthandler'): + att_list = ['new PyString("lineno")', 'new PyString("col_offset")'] + self.emit("private final static PyString[] attributes =", depth + 1) + self.emit("new PyString[] {%s};" % ", ".join(att_list), depth + 1) + self.emit('@ExposedGet(name = "_attributes")', depth + 1) + self.emit("public PyString[] get_attributes() { return attributes; }", depth + 1) self.emit("", 0) - elif always_emit: - self.emit("private final static String[] attributes = new String[0];", depth+1) - self.emit("public String[] get_attributes() { return attributes; }", depth+1) + else: + self.emit("private final static PyString[] attributes = new PyString[0];", depth+1) + self.emit('@ExposedGet(name = "_attributes")', depth + 1) + self.emit("public PyString[] get_attributes() { return attributes; }", depth+1) self.emit("", 0) def sum_with_constructor(self, sum, name, depth): - self.open("%sType" % name) + self.open("base", "%s" % name) - self.emit("public abstract class %(name)sType extends PythonTree {" % + self.emit('@ExposedType(name = "_ast.%s", base = AST.class)' % name, depth) + self.emit("public abstract class %(name)s extends PythonTree {" % locals(), depth) self.emit("", 0) + self.emit("public static final PyType TYPE = PyType.fromClass(%s.class);" % name, depth + 1); - self.attributes(sum, depth); + self.attributes(sum, name, depth); - self.emit("public %(name)sType() {" % locals(), depth+1) + self.emit("public %(name)s() {" % locals(), depth+1) self.emit("}", depth+1) self.emit("", 0) - self.emit("public %(name)sType(int ttype, Token token) {" % locals(), depth+1) + self.emit("public %(name)s(PyType subType) {" % locals(), depth+1) + self.emit("}", depth+1) + self.emit("", 0) + + self.emit("public %(name)s(int ttype, Token token) {" % locals(), depth+1) self.emit("super(ttype, token);", depth+2) self.emit("}", depth+1) self.emit("", 0) - self.emit("public %(name)sType(Token token) {" % locals(), depth+1) + self.emit("public %(name)s(Token token) {" % locals(), depth+1) self.emit("super(token);", depth+2) self.emit("}", depth+1) self.emit("", 0) - self.emit("public %(name)sType(PythonTree node) {" % locals(), depth+1) + self.emit("public %(name)s(PythonTree node) {" % locals(), depth+1) self.emit("super(node);", depth+2) self.emit("}", depth+1) self.emit("", 0) @@ -216,22 +298,24 @@ def visitProduct(self, product, name, depth): - self.open("%sType" % name, useDataOutput=1) - self.emit("public class %(name)sType extends PythonTree {" % locals(), depth) + self.open("ast", "%s" % name, useDataOutput=1) + self.emit('@ExposedType(name = "_ast.%s", base = AST.class)' % name, depth) + self.emit("public class %(name)s extends PythonTree {" % locals(), depth) + self.emit("public static final PyType TYPE = PyType.fromClass(%s.class);" % name, depth + 1); for f in product.fields: self.visit(f, depth + 1) self.emit("", depth) - self.attributes(product, depth) + self.attributes(product, name, depth) - self.javaMethods(product, name, "%sType" % name, product.fields, + self.javaMethods(product, name, "%s" % name, product.fields, depth+1) self.emit("}", depth) self.close() def visitConstructor(self, cons, name, depth): - self.open(cons.name, useDataOutput=1) + self.open("ast", cons.name, useDataOutput=1) ifaces = [] for f in cons.fields: if str(f.type) == "expr_context": @@ -240,13 +324,15 @@ s = "implements %s " % ", ".join(ifaces) else: s = "" - self.emit("public class %s extends %sType %s{" % + self.emit('@ExposedType(name = "_ast.%s", base = AST.class)' % cons.name, depth); + self.emit("public class %s extends %s %s{" % (cons.name, name, s), depth) + self.emit("public static final PyType TYPE = PyType.fromClass(%s.class);" % cons.name, depth); for f in cons.fields: self.visit(f, depth + 1) self.emit("", depth) - self.attributes(cons, depth) + self.attributes(cons, name, depth) self.javaMethods(cons, cons.name, cons.name, cons.fields, depth+1) @@ -256,9 +342,10 @@ self.emit("}", depth + 1) self.emit("", 0) - if str(name) in ('stmt', 'expr'): + if str(name) in ('stmt', 'expr', 'excepthandler'): # The lineno property self.emit("private int lineno = -1;", depth + 1) + self.emit('@ExposedGet(name = "lineno")', depth + 1) self.emit("public int getLineno() {", depth + 1) self.emit("if (lineno != -1) {", depth + 2); self.emit("return lineno;", depth + 3); @@ -266,6 +353,7 @@ self.emit('return getLine();', depth + 2) self.emit("}", depth + 1) self.emit("", 0) + self.emit('@ExposedSet(name = "lineno")', depth + 1) self.emit("public void setLineno(int num) {", depth + 1) self.emit("lineno = num;", depth + 2); self.emit("}", depth + 1) @@ -273,6 +361,7 @@ # The col_offset property self.emit("private int col_offset = -1;", depth + 1) + self.emit('@ExposedGet(name = "col_offset")', depth + 1) self.emit("public int getCol_offset() {", depth + 1) self.emit("if (col_offset != -1) {", depth + 2); self.emit("return col_offset;", depth + 3); @@ -280,75 +369,49 @@ self.emit('return getCharPositionInLine();', depth + 2) self.emit("}", depth + 1) self.emit("", 0) + self.emit('@ExposedSet(name = "col_offset")', depth + 1) self.emit("public void setCol_offset(int num) {", depth + 1) self.emit("col_offset = num;", depth + 2); self.emit("}", depth + 1) self.emit("", 0) + self.emit("}", depth) self.close() def javaConstructorHelper(self, fields, depth): for f in fields: + #if f.seq: + # self.emit("this.%s = new %s(%s);" % (f.name, + # self.javaType(f), f.name), depth+1) + #else: self.emit("this.%s = %s;" % (f.name, f.name), depth+1) + fparg = self.fieldDef(f) - #if field.typedef and field.typedef.simple: + not_simple = True if f.typedef is not None and f.typedef.simple: not_simple = False #For now ignoring String -- will want to revisit - if not_simple and not fparg.startswith("String"): + if not_simple and fparg.find("String") == -1: if f.seq: - self.emit("if (%s != null) {" % f.name, depth+1); - self.emit("for(int i%(name)s=0;i%(name)s<%(name)s.length;i%(name)s++) {" % {"name":f.name}, depth+2) - self.emit("addChild(%s[i%s]);" % (f.name, f.name), depth+3) - self.emit("}", depth+2) + self.emit("if (%s == null) {" % f.name, depth+1); + self.emit("this.%s = new ArrayList<%s>();" % (f.name, self.javaType(f, False)), depth+2) self.emit("}", depth+1) + self.emit("for(PythonTree t : this.%(name)s) {" % {"name":f.name}, depth+1) + self.emit("addChild(t);", depth+2) + self.emit("}", depth+1) elif str(f.type) == "expr": self.emit("addChild(%s);" % (f.name), depth+1) #XXX: this method used to emit a pickle(DataOutputStream ostream) for cPickle support. # If we want to re-add it, see Jython 2.2's pickle method in its ast nodes. def javaMethods(self, type, clsname, ctorname, fields, depth): - # The java ctors - fpargs = ", ".join([self.fieldDef(f) for f in fields]) - self.emit("public %s(%s) {" % (ctorname, fpargs), depth) - self.javaConstructorHelper(fields, depth) - self.emit("}", depth) - self.emit("", 0) + self.javaConstructors(type, clsname, ctorname, fields, depth) - token = asdl.Field('Token', 'token') - token.typedef = False - fpargs = ", ".join([self.fieldDef(f) for f in [token] + fields]) - self.emit("public %s(%s) {" % (ctorname, fpargs), depth) - self.emit("super(token);", depth+1) - self.javaConstructorHelper(fields, depth) - self.emit("}", depth) - self.emit("", 0) - - ttype = asdl.Field('int', 'ttype') - ttype.typedef = False - fpargs = ", ".join([self.fieldDef(f) for f in [ttype, token] + fields]) - self.emit("public %s(%s) {" % (ctorname, fpargs), depth) - self.emit("super(ttype, token);", depth+1) - self.javaConstructorHelper(fields, depth) - self.emit("}", depth) - self.emit("", 0) - - tree = asdl.Field('PythonTree', 'tree') - tree.typedef = False - fpargs = ", ".join([self.fieldDef(f) for f in [tree] + fields]) - self.emit("public %s(%s) {" % (ctorname, fpargs), depth) - self.emit("super(tree);", depth+1) - self.javaConstructorHelper(fields, depth) - self.emit("}", depth) - self.emit("", 0) - - if fpargs: - fpargs += ", " - # The toString() method + self.emit('@ExposedGet(name = "repr")', depth) self.emit("public String toString() {", depth) self.emit('return "%s";' % clsname, depth+1) self.emit("}", depth) @@ -386,10 +449,10 @@ continue if f.seq: self.emit('if (%s != null) {' % f.name, depth+1) - self.emit('for (int i = 0; i < %s.length; i++) {' % f.name, + self.emit('for (PythonTree t : %s) {' % f.name, depth+2) - self.emit('if (%s[i] != null)' % f.name, depth+3) - self.emit('%s[i].accept(visitor);' % f.name, depth+4) + self.emit('if (t != null)', depth+3) + self.emit('t.accept(visitor);', depth+4) self.emit('}', depth+2) self.emit('}', depth+1) else: @@ -398,26 +461,131 @@ self.emit('}', depth) self.emit("", 0) + def javaConstructors(self, type, clsname, ctorname, fields, depth): + if len(fields) > 0: + self.emit("public %s() {" % (ctorname), depth) + self.emit("this(TYPE);", depth + 1) + self.emit("}", depth) + + self.emit("public %s(PyType subType) {" % (ctorname), depth) + self.emit("super(subType);", depth + 1) + self.emit("}", depth) + + fpargs = ", ".join(['"%s"' % f.name for f in fields]) + self.emit("@ExposedNew", depth) + self.emit("@ExposedMethod", depth) + self.emit("public void %s___init__(PyObject[] args, String[] keywords) {" % ctorname, depth) + self.emit('ArgParser ap = new ArgParser("%s", args, keywords, new String[]' % ctorname, depth + 1) + self.emit('{%s}, %s);' % (fpargs, len(fields)), depth + 2) + i = 0 + for f in fields: + self.emit("set%s(ap.getPyObject(%s));" % (str(f.name).capitalize(), + str(i)), depth+1) + i += 1 + self.emit("}", depth) + self.emit("", 0) + + fpargs = ", ".join(["PyObject %s" % f.name for f in fields]) + self.emit("public %s(%s) {" % (ctorname, fpargs), depth) + for f in fields: + self.emit("set%s(%s);" % (str(f.name).capitalize(), + f.name), depth+1) + self.emit("}", depth) + self.emit("", 0) + + token = asdl.Field('Token', 'token') + token.typedef = False + fpargs = ", ".join([self.fieldDef(f) for f in [token] + fields]) + self.emit("public %s(%s) {" % (ctorname, fpargs), depth) + self.emit("super(token);", depth+1) + self.javaConstructorHelper(fields, depth) + self.emit("}", depth) + self.emit("", 0) + + ttype = asdl.Field('int', 'ttype') + ttype.typedef = False + fpargs = ", ".join([self.fieldDef(f) for f in [ttype, token] + fields]) + self.emit("public %s(%s) {" % (ctorname, fpargs), depth) + self.emit("super(ttype, token);", depth+1) + self.javaConstructorHelper(fields, depth) + self.emit("}", depth) + self.emit("", 0) + + tree = asdl.Field('PythonTree', 'tree') + tree.typedef = False + fpargs = ", ".join([self.fieldDef(f) for f in [tree] + fields]) + self.emit("public %s(%s) {" % (ctorname, fpargs), depth) + self.emit("super(tree);", depth+1) + self.javaConstructorHelper(fields, depth) + self.emit("}", depth) + self.emit("", 0) + + def visitField(self, field, depth): - self.emit("public %s;" % self.fieldDef(field), depth) + self.emit("private %s;" % self.fieldDef(field), depth) + self.emit("public %s getInternal%s() {" % (self.javaType(field), + str(field.name).capitalize()), depth) + self.emit("return %s;" % field.name, depth+1) + self.emit("}", depth) + self.emit('@ExposedGet(name = "%s")' % field.name, depth) + self.emit("public PyObject get%s() {" % (str(field.name).capitalize()), depth) + if field.seq: + self.emit("return new AstList(%s, AstAdapters.%sAdapter);" % (field.name, field.type), depth+1) + else: + if str(field.type) == 'identifier': + self.emit("if (%s == null) return Py.None;" % field.name, depth+1) + self.emit("return new PyString(%s);" % field.name, depth+1) + elif str(field.type) == 'string' or str(field.type) == 'object': + self.emit("return (PyObject)%s;" % field.name, depth+1) + elif str(field.type) == 'bool': + self.emit("if (%s) return Py.True;" % field.name, depth+1) + self.emit("return Py.False;" % field.name, depth+1) + elif str(field.type) == 'int': + self.emit("return Py.newInteger(%s);" % field.name, depth+1) + elif field.typedef.simple: + self.emit("return AstAdapters.%s2py(%s);" % (str(field.type), field.name), depth+1) + else: + self.emit("return %s;" % field.name, depth+1) + #self.emit("return Py.None;", depth+1) + self.emit("}", depth) + self.emit('@ExposedSet(name = "%s")' % field.name, depth) + self.emit("public void set%s(PyObject %s) {" % (str(field.name).capitalize(), + field.name), depth) + if field.seq: + #self.emit("this.%s = new %s(" % (field.name, self.javaType(field)), depth+1) + self.emit("this.%s = AstAdapters.py2... [truncated message content] |
From: <cg...@us...> - 2008-12-05 00:26:56
|
Revision: 5694 http://jython.svn.sourceforge.net/jython/?rev=5694&view=rev Author: cgroves Date: 2008-12-05 00:26:54 +0000 (Fri, 05 Dec 2008) Log Message: ----------- Expose __hash__ on Object. I'm amazed at the number of things that passed without this Modified Paths: -------------- branches/newstyle-java-types/src/org/python/core/PyJavaType.java Modified: branches/newstyle-java-types/src/org/python/core/PyJavaType.java =================================================================== --- branches/newstyle-java-types/src/org/python/core/PyJavaType.java 2008-12-04 23:52:01 UTC (rev 5693) +++ branches/newstyle-java-types/src/org/python/core/PyJavaType.java 2008-12-05 00:26:54 UTC (rev 5694) @@ -291,6 +291,13 @@ } }; dict.__setitem__("__eq__", new PyMethodDescr(this, equals)); + PyBuiltinCallable hash = new PyBuiltinMethodNarrow("__hash__", 0, 0) { + @Override + public PyObject __call__() { + return Py.newInteger(self.getJavaProxy().hashCode()); + } + }; + dict.__setitem__("__hash__", new PyMethodDescr(this, hash)); PyBuiltinCallable repr = new PyBuiltinMethodNarrow("__repr__", 0, 0) { @Override public PyObject __call__() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cg...@us...> - 2008-12-04 23:52:04
|
Revision: 5693 http://jython.svn.sourceforge.net/jython/?rev=5693&view=rev Author: cgroves Date: 2008-12-04 23:52:01 +0000 (Thu, 04 Dec 2008) Log Message: ----------- Expose __iter__ on Iterator in addition to Iterable and Map Modified Paths: -------------- branches/newstyle-java-types/src/org/python/core/PyJavaType.java Modified: branches/newstyle-java-types/src/org/python/core/PyJavaType.java =================================================================== --- branches/newstyle-java-types/src/org/python/core/PyJavaType.java 2008-12-04 02:30:34 UTC (rev 5692) +++ branches/newstyle-java-types/src/org/python/core/PyJavaType.java 2008-12-04 23:52:01 UTC (rev 5693) @@ -349,14 +349,18 @@ } } - private static class IterableIter extends PyIterator { + private static class IteratorIter extends PyIterator { private Iterator<Object> proxy; - public IterableIter(Iterable<Object> proxy) { - this.proxy = proxy.iterator(); + public IteratorIter(Iterable<Object> proxy) { + this(proxy.iterator()); } + public IteratorIter(Iterator<Object> proxy) { + this.proxy = proxy; + } + public PyObject __iternext__() { return proxy.hasNext() ? Py.java2py(proxy.next()) : null; } @@ -388,7 +392,7 @@ PyBuiltinMethodNarrow iterableProxy = new PyBuiltinMethodNarrow("__iter__", 0, 0) { public PyObject __call__() { - return new IterableIter(((Iterable)self.getJavaProxy())); + return new IteratorIter(((Iterable)self.getJavaProxy())); } }; collectionProxies.put(Iterable.class, new PyBuiltinMethod[] {iterableProxy}); @@ -411,6 +415,13 @@ collectionProxies.put(Collection.class, new PyBuiltinMethod[] {lenProxy, containsProxy}); + PyBuiltinMethodNarrow iteratorProxy = new PyBuiltinMethodNarrow("__iter__", 0, 0) { + public PyObject __call__() { + return new IteratorIter(((Iterator)self.getJavaProxy())); + } + }; + collectionProxies.put(Iterator.class, new PyBuiltinMethod[] {iteratorProxy}); + // Map doesn't extend Collection, so it needs its own version of len, iter and contains PyBuiltinMethodNarrow mapLenProxy = new MapMethod("__len__", 0, 0) { @Override @@ -421,7 +432,7 @@ PyBuiltinMethodNarrow mapIterProxy = new MapMethod("__iter__", 0, 0) { @Override public PyObject __call__() { - return new IterableIter(asMap().keySet()); + return new IteratorIter(asMap().keySet()); } }; PyBuiltinMethodNarrow mapContainsProxy = new MapMethod("__contains__", 1, 1) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cg...@us...> - 2008-12-04 02:30:38
|
Revision: 5692 http://jython.svn.sourceforge.net/jython/?rev=5692&view=rev Author: cgroves Date: 2008-12-04 02:30:34 +0000 (Thu, 04 Dec 2008) Log Message: ----------- Leave ExposedType annotations on processed types so they'll be visible at runtime. Use that to detect exposed inner classes in classes being loaded. Inner classes being loaded won't have set their builder in PyType yet, so they need to be added to BOOTSTRAP_TYPES so they're created as PyType instead of PyJavaType. Modified Paths: -------------- branches/newstyle-java-types/src/org/python/core/PyJavaType.java branches/newstyle-java-types/src/org/python/expose/generate/ExposedTypeProcessor.java branches/newstyle-java-types/src/org/python/expose/generate/ExposedTypeVisitor.java branches/newstyle-java-types/src/org/python/modules/_hashlib.java branches/newstyle-java-types/tests/java/org/python/expose/generate/ExposedTypeVisitorTest.java Modified: branches/newstyle-java-types/src/org/python/core/PyJavaType.java =================================================================== --- branches/newstyle-java-types/src/org/python/core/PyJavaType.java 2008-12-04 02:20:28 UTC (rev 5691) +++ branches/newstyle-java-types/src/org/python/core/PyJavaType.java 2008-12-04 02:30:34 UTC (rev 5692) @@ -16,6 +16,7 @@ import org.python.core.util.StringUtil; import org.python.expose.ExposeAsSuperclass; +import org.python.expose.ExposedType; import org.python.util.Generic; public class PyJavaType extends PyType implements ExposeAsSuperclass { @@ -245,8 +246,17 @@ dict.__setitem__("__init__", reflctr); } for (Class<?> inner : underlying_class.getClasses()) { - // Only add the class if there isn't something else with that name - if (dict.__finditem__(inner.getSimpleName()) == null) { + // Only add the class if there isn't something else with that name and it came from this + // class + if (inner.getDeclaringClass() == underlying_class && + dict.__finditem__(inner.getSimpleName()) == null) { + // If this class is currently being loaded, any exposed types it contains won't have + // set their builder in PyType yet, so add them to BOOTSTRAP_TYPES so they're + // created as PyType instead of PyJavaType + if (inner.getAnnotation(ExposedType.class) != null + || ExposeAsSuperclass.class.isAssignableFrom(inner)) { + Py.BOOTSTRAP_TYPES.add(inner); + } dict.__setitem__(inner.getSimpleName(), PyType.fromClass(inner)); } } Modified: branches/newstyle-java-types/src/org/python/expose/generate/ExposedTypeProcessor.java =================================================================== --- branches/newstyle-java-types/src/org/python/expose/generate/ExposedTypeProcessor.java 2008-12-04 02:20:28 UTC (rev 5691) +++ branches/newstyle-java-types/src/org/python/expose/generate/ExposedTypeProcessor.java 2008-12-04 02:30:34 UTC (rev 5692) @@ -130,8 +130,9 @@ @Override public AnnotationVisitor visitAnnotation(String desc, boolean visible) { + AnnotationVisitor visitor = super.visitAnnotation(desc, visible); if(desc.equals(EXPOSED_TYPE.getDescriptor())) { - return new ExposedTypeVisitor(onType) { + return new ExposedTypeVisitor(onType, visitor) { @Override public void handleResult(String name) { @@ -148,7 +149,7 @@ } }; } - return super.visitAnnotation(desc, visible); + return visitor; } private void throwInvalid(String msg) { Modified: branches/newstyle-java-types/src/org/python/expose/generate/ExposedTypeVisitor.java =================================================================== --- branches/newstyle-java-types/src/org/python/expose/generate/ExposedTypeVisitor.java 2008-12-04 02:20:28 UTC (rev 5691) +++ branches/newstyle-java-types/src/org/python/expose/generate/ExposedTypeVisitor.java 2008-12-04 02:30:34 UTC (rev 5692) @@ -1,5 +1,6 @@ package org.python.expose.generate; +import org.python.objectweb.asm.AnnotationVisitor; import org.python.objectweb.asm.Type; /** @@ -15,8 +16,11 @@ private boolean isBaseType = true; - public ExposedTypeVisitor(Type onType) { + private final AnnotationVisitor passthrough; + + public ExposedTypeVisitor(Type onType, AnnotationVisitor passthrough) { this.onType = onType; + this.passthrough = passthrough; } @Override @@ -30,6 +34,9 @@ } else { super.visit(name, value); } + if (passthrough != null) { + passthrough.visit(name, value); + } } @Override @@ -41,6 +48,9 @@ handleResult(typeName); handleResult(base); handleResult(isBaseType); + if (passthrough != null) { + passthrough.visitEnd(); + } } public abstract void handleResult(Type base); Modified: branches/newstyle-java-types/src/org/python/modules/_hashlib.java =================================================================== --- branches/newstyle-java-types/src/org/python/modules/_hashlib.java 2008-12-04 02:20:28 UTC (rev 5691) +++ branches/newstyle-java-types/src/org/python/modules/_hashlib.java 2008-12-04 02:30:34 UTC (rev 5692) @@ -121,16 +121,18 @@ put("sha-512", 128); }}; - public Hash(String name) { - super(TYPE); - this.name = name; + private static final MessageDigest getDigest(String name) { try { - digest = MessageDigest.getInstance(name); + return MessageDigest.getInstance(name); } catch (NoSuchAlgorithmException nsae) { throw Py.ValueError("unsupported hash type"); } } + public Hash(String name) { + this(name, getDigest(name)); + } + private Hash(String name, MessageDigest digest) { super(TYPE); this.name = name; @@ -192,10 +194,10 @@ // Make hex version of the digest char[] hexDigest = new char[result.length * 2]; for (int i = 0, j = 0; i < result.length; i++) { - int c = (int)((result[i] >> 4) & 0xf); + int c = ((result[i] >> 4) & 0xf); c = c > 9 ? c + 'a' - 10 : c + '0'; hexDigest[j++] = (char)c; - c = (int)result[i] & 0xf; + c = result[i] & 0xf; c = c > 9 ? c + 'a' - 10 : c + '0'; hexDigest[j++] = (char)c; } Modified: branches/newstyle-java-types/tests/java/org/python/expose/generate/ExposedTypeVisitorTest.java =================================================================== --- branches/newstyle-java-types/tests/java/org/python/expose/generate/ExposedTypeVisitorTest.java 2008-12-04 02:20:28 UTC (rev 5691) +++ branches/newstyle-java-types/tests/java/org/python/expose/generate/ExposedTypeVisitorTest.java 2008-12-04 02:30:34 UTC (rev 5692) @@ -9,7 +9,7 @@ public class ExposedTypeVisitorTest extends TestCase { public void setUp() { - etv = new ExposedTypeVisitor(Type.getType("Lsimpletype;")) { + etv = new ExposedTypeVisitor(Type.getType("Lsimpletype;"), null) { @Override public void handleResult(String name) { @@ -47,7 +47,7 @@ ExposedTypeVisitor etv; private String result; - + private Type baseResult; private boolean isBaseTypeResult; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fwi...@us...> - 2008-12-04 02:20:31
|
Revision: 5691 http://jython.svn.sourceforge.net/jython/?rev=5691&view=rev Author: fwierzbicki Date: 2008-12-04 02:20:28 +0000 (Thu, 04 Dec 2008) Log Message: ----------- Initialized merge tracking via "svnmerge" with revisions "1-5585" from https://jython.svn.sourceforge.net/svnroot/jython/branches/astwrite Property Changed: ---------------- trunk/jython/ Property changes on: trunk/jython ___________________________________________________________________ Added: svnmerge-integrated + /branches/astwrite:1-5585 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fwi...@us...> - 2008-12-04 02:12:01
|
Revision: 5690 http://jython.svn.sourceforge.net/jython/?rev=5690&view=rev Author: fwierzbicki Date: 2008-12-04 02:11:59 +0000 (Thu, 04 Dec 2008) Log Message: ----------- Merged revisions 5687 via svnmerge from https://jython.svn.sourceforge.net/svnroot/jython/trunk/jython ........ r5687 | nriley | 2008-12-03 17:08:15 -0500 (Wed, 03 Dec 2008) | 1 line avoid test_asynchat on Windows too; refs #1064 ........ Modified Paths: -------------- branches/astwrite/Lib/test/test_asynchat.py Property Changed: ---------------- branches/astwrite/ Property changes on: branches/astwrite ___________________________________________________________________ Modified: svnmerge-integrated - /trunk/jython:1-5683 + /trunk/jython:1-5689 Modified: branches/astwrite/Lib/test/test_asynchat.py =================================================================== --- branches/astwrite/Lib/test/test_asynchat.py 2008-12-04 01:27:28 UTC (rev 5689) +++ branches/astwrite/Lib/test/test_asynchat.py 2008-12-04 02:11:59 UTC (rev 5690) @@ -7,7 +7,7 @@ import platform os_name = platform.java_ver()[3][0] -if os_name == 'Mac OS X' or 'BSD' in os_name: +if os_name == 'Mac OS X' or 'BSD' in os_name or 'Windows' in os_name: raise test_support.TestSkipped('test_asynchat deadlocks on Jython/BSD: ' 'http://bugs.jython.org/issue1064') This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cg...@us...> - 2008-12-04 01:27:37
|
Revision: 5689 http://jython.svn.sourceforge.net/jython/?rev=5689&view=rev Author: cgroves Date: 2008-12-04 01:27:28 +0000 (Thu, 04 Dec 2008) Log Message: ----------- Only add inner classes to the dict of a Java type if there isn't already something with that name. Fixes test_cpickle Modified Paths: -------------- branches/newstyle-java-types/src/org/python/core/PyJavaType.java Modified: branches/newstyle-java-types/src/org/python/core/PyJavaType.java =================================================================== --- branches/newstyle-java-types/src/org/python/core/PyJavaType.java 2008-12-04 01:10:43 UTC (rev 5688) +++ branches/newstyle-java-types/src/org/python/core/PyJavaType.java 2008-12-04 01:27:28 UTC (rev 5689) @@ -245,7 +245,10 @@ dict.__setitem__("__init__", reflctr); } for (Class<?> inner : underlying_class.getClasses()) { - dict.__setitem__(inner.getSimpleName(), PyType.fromClass(inner)); + // Only add the class if there isn't something else with that name + if (dict.__finditem__(inner.getSimpleName()) == null) { + dict.__setitem__(inner.getSimpleName(), PyType.fromClass(inner)); + } } for (Map.Entry<Class<?>, PyBuiltinMethod[]> entry : getCollectionProxies().entrySet()) { if (entry.getKey() == underlying_class) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cg...@us...> - 2008-12-04 01:10:50
|
Revision: 5688 http://jython.svn.sourceforge.net/jython/?rev=5688&view=rev Author: cgroves Date: 2008-12-04 01:10:43 +0000 (Thu, 04 Dec 2008) Log Message: ----------- Switch to using getJavaProxy() != null from getType() instanceof PyJavaType to detect if a PyObject is wrapping a Java object or a subclass of a Java object. This keeps PyObject subclasses from appearing to be proxy types. The old way was breaking copy as instances of classic classes - which have a type of PyJavaType by virtue of PyClass being a non-type subclass of PyObject - didn't have a Java proxy and were getting a different id with each call. Modified Paths: -------------- branches/newstyle-java-types/src/org/python/core/IdImpl.java branches/newstyle-java-types/src/org/python/core/Py.java branches/newstyle-java-types/src/org/python/core/PyInstance.java branches/newstyle-java-types/src/org/python/core/PyObject.java branches/newstyle-java-types/src/org/python/core/StdoutWrapper.java branches/newstyle-java-types/src/org/python/core/__builtin__.java branches/newstyle-java-types/src/org/python/core/imp.java Modified: branches/newstyle-java-types/src/org/python/core/IdImpl.java =================================================================== --- branches/newstyle-java-types/src/org/python/core/IdImpl.java 2008-12-03 22:08:15 UTC (rev 5687) +++ branches/newstyle-java-types/src/org/python/core/IdImpl.java 2008-12-04 01:10:43 UTC (rev 5688) @@ -2,36 +2,39 @@ import java.lang.ref.ReferenceQueue; import java.lang.ref.WeakReference; -import java.util.HashMap; +import java.util.Map; +import org.python.util.Generic; + public class IdImpl { public static class WeakIdentityMap { - private transient ReferenceQueue refqueue = new ReferenceQueue(); - private HashMap hashmap = new HashMap(); + private transient ReferenceQueue<Object> idKeys = new ReferenceQueue<Object>(); + private Map<WeakIdKey, Object> objHashcodeToPyId = Generic.map(); + private void cleanup() { Object k; - while ((k = this.refqueue.poll()) != null) { - this.hashmap.remove(k); + while ((k = idKeys.poll()) != null) { + objHashcodeToPyId.remove(k); } } - private class WeakIdKey extends WeakReference { - private int hashcode; + private class WeakIdKey extends WeakReference<Object> { + private final int hashcode; WeakIdKey(Object obj) { - super(obj,WeakIdentityMap.this.refqueue); - this.hashcode = System.identityHashCode(obj); + super(obj, idKeys); + hashcode = System.identityHashCode(obj); } public int hashCode() { - return this.hashcode; + return hashcode; } public boolean equals(Object other) { - Object obj = this.get(); + Object obj = get(); if (obj != null) { return obj == ((WeakIdKey)other).get(); } else { @@ -40,50 +43,45 @@ } } - public int _internal_map_size() { - return this.hashmap.size(); - } - - public void put(Object key,Object val) { + public void put(Object key, Object val) { cleanup(); - this.hashmap.put(new WeakIdKey(key),val); + objHashcodeToPyId.put(new WeakIdKey(key), val); } public Object get(Object key) { cleanup(); - return this.hashmap.get(new WeakIdKey(key)); + return objHashcodeToPyId.get(new WeakIdKey(key)); } public void remove(Object key) { cleanup(); - this.hashmap.remove(new WeakIdKey(key)); + objHashcodeToPyId.remove(new WeakIdKey(key)); } } - private WeakIdentityMap id_map = new WeakIdentityMap(); - private long sequential_id = 0; + private WeakIdentityMap idMap = new WeakIdentityMap(); - public long id(PyObject o) { - if (o.getType() instanceof PyJavaType) { - return java_obj_id(o.getJavaProxy()); + private long sequentialId; + + public synchronized long id(PyObject o) { + Object javaProxy = o.getJavaProxy(); + if (javaProxy != null) { + return java_obj_id(javaProxy); } else { return java_obj_id(o); } } - // XXX maybe should display both this id and identityHashCode - // XXX preserve the old "at ###" style? public String idstr(PyObject o) { return Long.toString(id(o)); } - public synchronized long java_obj_id(Object o) { - Long cand = (Long)this.id_map.get(o); + public long java_obj_id(Object o) { + Long cand = (Long)idMap.get(o); if (cand == null) { - this.sequential_id++; - long new_id = this.sequential_id; - this.id_map.put(o,new Long(new_id)); + long new_id = ++sequentialId; + idMap.put(o, new_id); return new_id; } return cand.longValue(); Modified: branches/newstyle-java-types/src/org/python/core/Py.java =================================================================== --- branches/newstyle-java-types/src/org/python/core/Py.java 2008-12-03 22:08:15 UTC (rev 5687) +++ branches/newstyle-java-types/src/org/python/core/Py.java 2008-12-04 01:10:43 UTC (rev 5688) @@ -993,7 +993,7 @@ } } - if (value.getType() instanceof PyJavaType) { + if (value.getJavaProxy() != null) { Object javaError = value.__tojava__(Throwable.class); if (javaError != null && javaError != Py.NoConversion) { @@ -1947,7 +1947,7 @@ name = "fixed file"; this.file = file; - if (file.getType() instanceof PyJavaType) { + if (file.getJavaProxy() != null) { Object tojava = file.__tojava__(OutputStream.class); if (tojava != null && tojava != Py.NoConversion) { this.file = new PyFile((OutputStream) tojava); Modified: branches/newstyle-java-types/src/org/python/core/PyInstance.java =================================================================== --- branches/newstyle-java-types/src/org/python/core/PyInstance.java 2008-12-03 22:08:15 UTC (rev 5687) +++ branches/newstyle-java-types/src/org/python/core/PyInstance.java 2008-12-04 01:10:43 UTC (rev 5688) @@ -374,11 +374,10 @@ public int hashCode() { PyObject ret; ret = invoke_ex("__hash__"); - if (ret == null) { - if (__findattr__("__eq__") != null || - __findattr__("__cmp__") != null) + if (__findattr__("__eq__") != null || __findattr__("__cmp__") != null) { throw Py.TypeError("unhashable instance"); + } return super.hashCode(); } if (ret instanceof PyInteger) { @@ -399,9 +398,9 @@ if (coerced != null) { v = coerced[0]; w = coerced[1]; - if (!(v instanceof PyInstance) && - !(w instanceof PyInstance)) + if (!(v instanceof PyInstance) && !(w instanceof PyInstance)) { return v._cmp(w); + } } else { v = this; w = other; Modified: branches/newstyle-java-types/src/org/python/core/PyObject.java =================================================================== --- branches/newstyle-java-types/src/org/python/core/PyObject.java 2008-12-03 22:08:15 UTC (rev 5687) +++ branches/newstyle-java-types/src/org/python/core/PyObject.java 2008-12-04 01:10:43 UTC (rev 5688) @@ -3447,7 +3447,7 @@ } return __call__(pargs); } catch (PyException e) { - if (e.value.getType() instanceof PyJavaType) { + if (e.value.getJavaProxy() != null) { Object t = e.value.__tojava__(Throwable.class); if (t != null && t != Py.NoConversion) { throw (Throwable) t; Modified: branches/newstyle-java-types/src/org/python/core/StdoutWrapper.java =================================================================== --- branches/newstyle-java-types/src/org/python/core/StdoutWrapper.java 2008-12-03 22:08:15 UTC (rev 5687) +++ branches/newstyle-java-types/src/org/python/core/StdoutWrapper.java 2008-12-04 01:10:43 UTC (rev 5688) @@ -26,7 +26,7 @@ if (obj == null) { throw Py.AttributeError("missing sys." + this.name); } - if (obj.getType() instanceof PyJavaType) { + if (obj.getJavaProxy() != null) { PyFile f = null; Object tojava = obj.__tojava__(OutputStream.class); Modified: branches/newstyle-java-types/src/org/python/core/__builtin__.java =================================================================== --- branches/newstyle-java-types/src/org/python/core/__builtin__.java 2008-12-03 22:08:15 UTC (rev 5687) +++ branches/newstyle-java-types/src/org/python/core/__builtin__.java 2008-12-04 01:10:43 UTC (rev 5688) @@ -1579,7 +1579,7 @@ ArgParser ap = new ArgParser("file", args, kwds, new String[] {"name", "mode", "bufsize"}, 1); PyObject obj = ap.getPyObject(0); - if (obj.getType() instanceof PyJavaType) { + if (obj.getJavaProxy() != null) { int bufsize = ap.getInt(2, -1); if (obj.javaProxy instanceof InputStream) { Py.warning(Py.DeprecationWarning, warning); Modified: branches/newstyle-java-types/src/org/python/core/imp.java =================================================================== --- branches/newstyle-java-types/src/org/python/core/imp.java 2008-12-03 22:08:15 UTC (rev 5687) +++ branches/newstyle-java-types/src/org/python/core/imp.java 2008-12-04 01:10:43 UTC (rev 5688) @@ -281,7 +281,7 @@ throw Py.JavaError(e); } } - return PyJavaType.fromClass(c); // xxx? + return PyType.fromClass(c); // xxx? } static PyObject getPathImporter(PyObject cache, PyList hooks, PyObject p) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nr...@us...> - 2008-12-03 22:08:17
|
Revision: 5687 http://jython.svn.sourceforge.net/jython/?rev=5687&view=rev Author: nriley Date: 2008-12-03 22:08:15 +0000 (Wed, 03 Dec 2008) Log Message: ----------- avoid test_asynchat on Windows too; refs #1064 Modified Paths: -------------- trunk/jython/Lib/test/test_asynchat.py Modified: trunk/jython/Lib/test/test_asynchat.py =================================================================== --- trunk/jython/Lib/test/test_asynchat.py 2008-12-03 21:42:59 UTC (rev 5686) +++ trunk/jython/Lib/test/test_asynchat.py 2008-12-03 22:08:15 UTC (rev 5687) @@ -7,7 +7,7 @@ import platform os_name = platform.java_ver()[3][0] -if os_name == 'Mac OS X' or 'BSD' in os_name: +if os_name == 'Mac OS X' or 'BSD' in os_name or 'Windows' in os_name: raise test_support.TestSkipped('test_asynchat deadlocks on Jython/BSD: ' 'http://bugs.jython.org/issue1064') This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fwi...@us...> - 2008-12-03 21:55:16
|
Revision: 5686 http://jython.svn.sourceforge.net/jython/?rev=5686&view=rev Author: fwierzbicki Date: 2008-12-03 21:42:59 +0000 (Wed, 03 Dec 2008) Log Message: ----------- Only 2 fails left in 2.6 version of test_ast.py. Modified Paths: -------------- branches/astwrite/Lib/ast.py branches/astwrite/Lib/test/test_ast.py branches/astwrite/ast/asdl_antlr.py branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java branches/astwrite/src/org/python/antlr/adapter/ExprAdapter.java branches/astwrite/src/org/python/antlr/ast/Assert.java branches/astwrite/src/org/python/antlr/ast/Assign.java branches/astwrite/src/org/python/antlr/ast/AstModule.java branches/astwrite/src/org/python/antlr/ast/Attribute.java branches/astwrite/src/org/python/antlr/ast/AugAssign.java branches/astwrite/src/org/python/antlr/ast/BinOp.java branches/astwrite/src/org/python/antlr/ast/BoolOp.java branches/astwrite/src/org/python/antlr/ast/Break.java branches/astwrite/src/org/python/antlr/ast/Call.java branches/astwrite/src/org/python/antlr/ast/ClassDef.java branches/astwrite/src/org/python/antlr/ast/Compare.java branches/astwrite/src/org/python/antlr/ast/Continue.java branches/astwrite/src/org/python/antlr/ast/Delete.java branches/astwrite/src/org/python/antlr/ast/Dict.java branches/astwrite/src/org/python/antlr/ast/Ellipsis.java branches/astwrite/src/org/python/antlr/ast/ExceptHandler.java branches/astwrite/src/org/python/antlr/ast/Exec.java branches/astwrite/src/org/python/antlr/ast/Expr.java branches/astwrite/src/org/python/antlr/ast/Expression.java branches/astwrite/src/org/python/antlr/ast/ExtSlice.java branches/astwrite/src/org/python/antlr/ast/For.java branches/astwrite/src/org/python/antlr/ast/FunctionDef.java branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java branches/astwrite/src/org/python/antlr/ast/Global.java branches/astwrite/src/org/python/antlr/ast/If.java branches/astwrite/src/org/python/antlr/ast/IfExp.java branches/astwrite/src/org/python/antlr/ast/Import.java branches/astwrite/src/org/python/antlr/ast/ImportFrom.java branches/astwrite/src/org/python/antlr/ast/Index.java branches/astwrite/src/org/python/antlr/ast/Interactive.java branches/astwrite/src/org/python/antlr/ast/Lambda.java branches/astwrite/src/org/python/antlr/ast/List.java branches/astwrite/src/org/python/antlr/ast/ListComp.java branches/astwrite/src/org/python/antlr/ast/Module.java branches/astwrite/src/org/python/antlr/ast/Name.java branches/astwrite/src/org/python/antlr/ast/Num.java branches/astwrite/src/org/python/antlr/ast/Pass.java branches/astwrite/src/org/python/antlr/ast/Print.java branches/astwrite/src/org/python/antlr/ast/Raise.java branches/astwrite/src/org/python/antlr/ast/Repr.java branches/astwrite/src/org/python/antlr/ast/Return.java branches/astwrite/src/org/python/antlr/ast/Slice.java branches/astwrite/src/org/python/antlr/ast/Str.java branches/astwrite/src/org/python/antlr/ast/Subscript.java branches/astwrite/src/org/python/antlr/ast/Suite.java branches/astwrite/src/org/python/antlr/ast/TryExcept.java branches/astwrite/src/org/python/antlr/ast/TryFinally.java branches/astwrite/src/org/python/antlr/ast/Tuple.java branches/astwrite/src/org/python/antlr/ast/UnaryOp.java branches/astwrite/src/org/python/antlr/ast/VisitorBase.java branches/astwrite/src/org/python/antlr/ast/While.java branches/astwrite/src/org/python/antlr/ast/With.java branches/astwrite/src/org/python/antlr/ast/Yield.java branches/astwrite/src/org/python/antlr/ast/aliasType.java branches/astwrite/src/org/python/antlr/ast/argumentsType.java branches/astwrite/src/org/python/antlr/ast/comprehensionType.java branches/astwrite/src/org/python/antlr/ast/excepthandlerType.java branches/astwrite/src/org/python/antlr/ast/exprType.java branches/astwrite/src/org/python/antlr/ast/keywordType.java branches/astwrite/src/org/python/antlr/ast/modType.java branches/astwrite/src/org/python/antlr/ast/sliceType.java branches/astwrite/src/org/python/antlr/ast/stmtType.java branches/astwrite/src/org/python/core/AstList.java Modified: branches/astwrite/Lib/ast.py =================================================================== --- branches/astwrite/Lib/ast.py 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/Lib/ast.py 2008-12-03 21:42:59 UTC (rev 5686) @@ -32,7 +32,7 @@ if sys.platform.startswith('java'): import java.util.List - ast_list = java.util.List + ast_list = astlist def get_class_name(t): result = t.__class__.__name__ Modified: branches/astwrite/Lib/test/test_ast.py =================================================================== --- branches/astwrite/Lib/test/test_ast.py 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/Lib/test/test_ast.py 2008-12-03 21:42:59 UTC (rev 5686) @@ -253,10 +253,10 @@ node = ast.parse("spam(23, 42, eggs='leek')", mode='eval') self.assertEqual(len(list(ast.iter_child_nodes(node.body))), 4) iterator = ast.iter_child_nodes(node.body) - self.assertEqual(next(iterator).id, 'spam') - self.assertEqual(next(iterator).n, 23) - self.assertEqual(next(iterator).n, 42) - self.assertEqual(ast.dump(next(iterator)), + self.assertEqual(iterator.next().id, 'spam') + self.assertEqual(iterator.next().n, 23) + self.assertEqual(iterator.next().n, 42) + self.assertEqual(ast.dump(iterator.next()), "keyword(arg='eggs', value=Str(s='leek'))" ) Modified: branches/astwrite/ast/asdl_antlr.py =================================================================== --- branches/astwrite/ast/asdl_antlr.py 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/ast/asdl_antlr.py 2008-12-03 21:42:59 UTC (rev 5686) @@ -61,6 +61,7 @@ print >> self.file, 'import org.python.antlr.AST;' print >> self.file, 'import org.python.antlr.PythonTree;' print >> self.file, 'import org.python.antlr.adapter.AstAdapters;' + print >> self.file, 'import org.python.core.ArgParser;' print >> self.file, 'import org.python.core.AstList;' print >> self.file, 'import org.python.core.Py;' print >> self.file, 'import org.python.core.PyObject;' @@ -463,9 +464,19 @@ self.emit("super(subType);", depth + 1) self.emit("}", depth) + fpargs = ", ".join(['"%s"' % f.name for f in fields]) self.emit("@ExposedNew", depth) self.emit("@ExposedMethod", depth) - self.emit("public void %s___init__(PyObject[] args, String[] keywords) {}" % ctorname, depth) + self.emit("public void %s___init__(PyObject[] args, String[] keywords) {" % ctorname, depth) + self.emit('ArgParser ap = new ArgParser("%s", args, keywords, new String[]' % ctorname, depth + 1) + self.emit('{%s}, %s);' % (fpargs, len(fields)), depth + 2) + i = 0 + for f in fields: + self.emit("set%s(ap.getPyObject(%s));" % (str(f.name).capitalize(), + str(i)), depth+1) + i += 1 + self.emit("}", depth) + self.emit("", 0) fpargs = ", ".join(["PyObject %s" % f.name for f in fields]) self.emit("public %s(%s) {" % (ctorname, fpargs), depth) Modified: branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -101,11 +101,9 @@ return (stmtType)stmtAdapter.py2ast(o); } - public static String py2string(Object o) { - if (o == null || o instanceof String) { - return (String)o; - } else if (o instanceof PyString) { - return ((PyObject)o).toString(); + public static Object py2string(Object o) { + if (o == null || o instanceof PyString) { + return o; } //FIXME: investigate the right exception throw Py.TypeError("Can't convert " + o.getClass().getName() + " to string node"); Modified: branches/astwrite/src/org/python/antlr/adapter/ExprAdapter.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/ExprAdapter.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/adapter/ExprAdapter.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -20,15 +20,14 @@ public class ExprAdapter implements AstAdapter { public Object py2ast(PyObject o) { - if (o == null) { + if (o == null || o instanceof exprType) { return o; - } - if (o instanceof exprType) { - return o; } else if (o instanceof PyInteger || o instanceof PyLong || o instanceof PyFloat || o instanceof PyComplex) { return new Num(o); } else if (o instanceof PyString || o instanceof PyUnicode) { return new Str(o); + } else if (o == Py.None) { + return null; } //FIXME: investigate the right exception Modified: branches/astwrite/src/org/python/antlr/ast/Assert.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Assert.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Assert.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -67,7 +68,13 @@ } @ExposedNew @ExposedMethod - public void Assert___init__(PyObject[] args, String[] keywords) {} + public void Assert___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Assert", args, keywords, new String[] + {"test", "msg"}, 2); + setTest(ap.getPyObject(0)); + setMsg(ap.getPyObject(1)); + } + public Assert(PyObject test, PyObject msg) { setTest(test); setMsg(msg); Modified: branches/astwrite/src/org/python/antlr/ast/Assign.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Assign.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Assign.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -67,7 +68,13 @@ } @ExposedNew @ExposedMethod - public void Assign___init__(PyObject[] args, String[] keywords) {} + public void Assign___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Assign", args, keywords, new String[] + {"targets", "value"}, 2); + setTargets(ap.getPyObject(0)); + setValue(ap.getPyObject(1)); + } + public Assign(PyObject targets, PyObject value) { setTargets(targets); setValue(value); Modified: branches/astwrite/src/org/python/antlr/ast/AstModule.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/AstModule.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/AstModule.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -1,5 +1,6 @@ package org.python.antlr.ast; +import org.python.core.AstList; import org.python.core.ClassDictInit; import org.python.core.imp; import org.python.core.Py; @@ -22,6 +23,8 @@ dict.__setitem__("__version__", new PyString("62047")); dict.__setitem__("PyCF_ONLY_AST", new PyInteger(PyTableCode.PyCF_ONLY_AST)); + dict.__setitem__("astlist", AstList.TYPE); + dict.__setitem__("AST", AST.TYPE); dict.__setitem__("Module", Module.TYPE); dict.__setitem__("Assert", Assert.TYPE); Modified: branches/astwrite/src/org/python/antlr/ast/Attribute.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Attribute.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Attribute.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -81,7 +82,14 @@ } @ExposedNew @ExposedMethod - public void Attribute___init__(PyObject[] args, String[] keywords) {} + public void Attribute___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Attribute", args, keywords, new String[] + {"value", "attr", "ctx"}, 3); + setValue(ap.getPyObject(0)); + setAttr(ap.getPyObject(1)); + setCtx(ap.getPyObject(2)); + } + public Attribute(PyObject value, PyObject attr, PyObject ctx) { setValue(value); setAttr(attr); Modified: branches/astwrite/src/org/python/antlr/ast/AugAssign.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/AugAssign.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/AugAssign.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -80,7 +81,14 @@ } @ExposedNew @ExposedMethod - public void AugAssign___init__(PyObject[] args, String[] keywords) {} + public void AugAssign___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("AugAssign", args, keywords, new String[] + {"target", "op", "value"}, 3); + setTarget(ap.getPyObject(0)); + setOp(ap.getPyObject(1)); + setValue(ap.getPyObject(2)); + } + public AugAssign(PyObject target, PyObject op, PyObject value) { setTarget(target); setOp(op); Modified: branches/astwrite/src/org/python/antlr/ast/BinOp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BinOp.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/BinOp.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -80,7 +81,14 @@ } @ExposedNew @ExposedMethod - public void BinOp___init__(PyObject[] args, String[] keywords) {} + public void BinOp___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("BinOp", args, keywords, new String[] + {"left", "op", "right"}, 3); + setLeft(ap.getPyObject(0)); + setOp(ap.getPyObject(1)); + setRight(ap.getPyObject(2)); + } + public BinOp(PyObject left, PyObject op, PyObject right) { setLeft(left); setOp(op); Modified: branches/astwrite/src/org/python/antlr/ast/BoolOp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BoolOp.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/BoolOp.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -67,7 +68,13 @@ } @ExposedNew @ExposedMethod - public void BoolOp___init__(PyObject[] args, String[] keywords) {} + public void BoolOp___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("BoolOp", args, keywords, new String[] + {"op", "values"}, 2); + setOp(ap.getPyObject(0)); + setValues(ap.getPyObject(1)); + } + public BoolOp(PyObject op, PyObject values) { setOp(op); setValues(values); Modified: branches/astwrite/src/org/python/antlr/ast/Break.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Break.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Break.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; Modified: branches/astwrite/src/org/python/antlr/ast/Call.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Call.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Call.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -107,7 +108,16 @@ } @ExposedNew @ExposedMethod - public void Call___init__(PyObject[] args, String[] keywords) {} + public void Call___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Call", args, keywords, new String[] + {"func", "args", "keywords", "starargs", "kwargs"}, 5); + setFunc(ap.getPyObject(0)); + setArgs(ap.getPyObject(1)); + setKeywords(ap.getPyObject(2)); + setStarargs(ap.getPyObject(3)); + setKwargs(ap.getPyObject(4)); + } + public Call(PyObject func, PyObject args, PyObject keywords, PyObject starargs, PyObject kwargs) { setFunc(func); Modified: branches/astwrite/src/org/python/antlr/ast/ClassDef.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ClassDef.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/ClassDef.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -95,7 +96,15 @@ } @ExposedNew @ExposedMethod - public void ClassDef___init__(PyObject[] args, String[] keywords) {} + public void ClassDef___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("ClassDef", args, keywords, new String[] + {"name", "bases", "body", "decorator_list"}, 4); + setName(ap.getPyObject(0)); + setBases(ap.getPyObject(1)); + setBody(ap.getPyObject(2)); + setDecorator_list(ap.getPyObject(3)); + } + public ClassDef(PyObject name, PyObject bases, PyObject body, PyObject decorator_list) { setName(name); setBases(bases); Modified: branches/astwrite/src/org/python/antlr/ast/Compare.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Compare.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Compare.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -80,7 +81,14 @@ } @ExposedNew @ExposedMethod - public void Compare___init__(PyObject[] args, String[] keywords) {} + public void Compare___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Compare", args, keywords, new String[] + {"left", "ops", "comparators"}, 3); + setLeft(ap.getPyObject(0)); + setOps(ap.getPyObject(1)); + setComparators(ap.getPyObject(2)); + } + public Compare(PyObject left, PyObject ops, PyObject comparators) { setLeft(left); setOps(ops); Modified: branches/astwrite/src/org/python/antlr/ast/Continue.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Continue.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Continue.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; Modified: branches/astwrite/src/org/python/antlr/ast/Delete.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Delete.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Delete.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -54,7 +55,12 @@ } @ExposedNew @ExposedMethod - public void Delete___init__(PyObject[] args, String[] keywords) {} + public void Delete___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Delete", args, keywords, new String[] + {"targets"}, 1); + setTargets(ap.getPyObject(0)); + } + public Delete(PyObject targets) { setTargets(targets); } Modified: branches/astwrite/src/org/python/antlr/ast/Dict.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Dict.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Dict.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -67,7 +68,13 @@ } @ExposedNew @ExposedMethod - public void Dict___init__(PyObject[] args, String[] keywords) {} + public void Dict___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Dict", args, keywords, new String[] + {"keys", "values"}, 2); + setKeys(ap.getPyObject(0)); + setValues(ap.getPyObject(1)); + } + public Dict(PyObject keys, PyObject values) { setKeys(keys); setValues(values); Modified: branches/astwrite/src/org/python/antlr/ast/Ellipsis.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Ellipsis.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Ellipsis.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; Modified: branches/astwrite/src/org/python/antlr/ast/ExceptHandler.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ExceptHandler.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/ExceptHandler.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -80,7 +81,14 @@ } @ExposedNew @ExposedMethod - public void ExceptHandler___init__(PyObject[] args, String[] keywords) {} + public void ExceptHandler___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("ExceptHandler", args, keywords, new String[] + {"excepttype", "name", "body"}, 3); + setExcepttype(ap.getPyObject(0)); + setName(ap.getPyObject(1)); + setBody(ap.getPyObject(2)); + } + public ExceptHandler(PyObject excepttype, PyObject name, PyObject body) { setExcepttype(excepttype); setName(name); Modified: branches/astwrite/src/org/python/antlr/ast/Exec.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Exec.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Exec.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -80,7 +81,14 @@ } @ExposedNew @ExposedMethod - public void Exec___init__(PyObject[] args, String[] keywords) {} + public void Exec___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Exec", args, keywords, new String[] + {"body", "globals", "locals"}, 3); + setBody(ap.getPyObject(0)); + setGlobals(ap.getPyObject(1)); + setLocals(ap.getPyObject(2)); + } + public Exec(PyObject body, PyObject globals, PyObject locals) { setBody(body); setGlobals(globals); Modified: branches/astwrite/src/org/python/antlr/ast/Expr.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Expr.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Expr.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -54,7 +55,12 @@ } @ExposedNew @ExposedMethod - public void Expr___init__(PyObject[] args, String[] keywords) {} + public void Expr___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Expr", args, keywords, new String[] + {"value"}, 1); + setValue(ap.getPyObject(0)); + } + public Expr(PyObject value) { setValue(value); } Modified: branches/astwrite/src/org/python/antlr/ast/Expression.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Expression.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Expression.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -53,7 +54,12 @@ } @ExposedNew @ExposedMethod - public void Expression___init__(PyObject[] args, String[] keywords) {} + public void Expression___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Expression", args, keywords, new String[] + {"body"}, 1); + setBody(ap.getPyObject(0)); + } + public Expression(PyObject body) { setBody(body); } Modified: branches/astwrite/src/org/python/antlr/ast/ExtSlice.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ExtSlice.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/ExtSlice.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -53,7 +54,12 @@ } @ExposedNew @ExposedMethod - public void ExtSlice___init__(PyObject[] args, String[] keywords) {} + public void ExtSlice___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("ExtSlice", args, keywords, new String[] + {"dims"}, 1); + setDims(ap.getPyObject(0)); + } + public ExtSlice(PyObject dims) { setDims(dims); } Modified: branches/astwrite/src/org/python/antlr/ast/For.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/For.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/For.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -94,7 +95,15 @@ } @ExposedNew @ExposedMethod - public void For___init__(PyObject[] args, String[] keywords) {} + public void For___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("For", args, keywords, new String[] + {"target", "iter", "body", "orelse"}, 4); + setTarget(ap.getPyObject(0)); + setIter(ap.getPyObject(1)); + setBody(ap.getPyObject(2)); + setOrelse(ap.getPyObject(3)); + } + public For(PyObject target, PyObject iter, PyObject body, PyObject orelse) { setTarget(target); setIter(iter); Modified: branches/astwrite/src/org/python/antlr/ast/FunctionDef.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/FunctionDef.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/FunctionDef.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -95,7 +96,15 @@ } @ExposedNew @ExposedMethod - public void FunctionDef___init__(PyObject[] args, String[] keywords) {} + public void FunctionDef___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("FunctionDef", args, keywords, new String[] + {"name", "args", "body", "decorator_list"}, 4); + setName(ap.getPyObject(0)); + setArgs(ap.getPyObject(1)); + setBody(ap.getPyObject(2)); + setDecorator_list(ap.getPyObject(3)); + } + public FunctionDef(PyObject name, PyObject args, PyObject body, PyObject decorator_list) { setName(name); setArgs(args); Modified: branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -67,7 +68,13 @@ } @ExposedNew @ExposedMethod - public void GeneratorExp___init__(PyObject[] args, String[] keywords) {} + public void GeneratorExp___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("GeneratorExp", args, keywords, new String[] + {"elt", "generators"}, 2); + setElt(ap.getPyObject(0)); + setGenerators(ap.getPyObject(1)); + } + public GeneratorExp(PyObject elt, PyObject generators) { setElt(elt); setGenerators(generators); Modified: branches/astwrite/src/org/python/antlr/ast/Global.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Global.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Global.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -54,7 +55,12 @@ } @ExposedNew @ExposedMethod - public void Global___init__(PyObject[] args, String[] keywords) {} + public void Global___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Global", args, keywords, new String[] + {"names"}, 1); + setNames(ap.getPyObject(0)); + } + public Global(PyObject names) { setNames(names); } Modified: branches/astwrite/src/org/python/antlr/ast/If.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/If.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/If.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -80,7 +81,14 @@ } @ExposedNew @ExposedMethod - public void If___init__(PyObject[] args, String[] keywords) {} + public void If___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("If", args, keywords, new String[] + {"test", "body", "orelse"}, 3); + setTest(ap.getPyObject(0)); + setBody(ap.getPyObject(1)); + setOrelse(ap.getPyObject(2)); + } + public If(PyObject test, PyObject body, PyObject orelse) { setTest(test); setBody(body); Modified: branches/astwrite/src/org/python/antlr/ast/IfExp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/IfExp.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/IfExp.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -80,7 +81,14 @@ } @ExposedNew @ExposedMethod - public void IfExp___init__(PyObject[] args, String[] keywords) {} + public void IfExp___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("IfExp", args, keywords, new String[] + {"test", "body", "orelse"}, 3); + setTest(ap.getPyObject(0)); + setBody(ap.getPyObject(1)); + setOrelse(ap.getPyObject(2)); + } + public IfExp(PyObject test, PyObject body, PyObject orelse) { setTest(test); setBody(body); Modified: branches/astwrite/src/org/python/antlr/ast/Import.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Import.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Import.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -54,7 +55,12 @@ } @ExposedNew @ExposedMethod - public void Import___init__(PyObject[] args, String[] keywords) {} + public void Import___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Import", args, keywords, new String[] + {"names"}, 1); + setNames(ap.getPyObject(0)); + } + public Import(PyObject names) { setNames(names); } Modified: branches/astwrite/src/org/python/antlr/ast/ImportFrom.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ImportFrom.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/ImportFrom.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -81,7 +82,14 @@ } @ExposedNew @ExposedMethod - public void ImportFrom___init__(PyObject[] args, String[] keywords) {} + public void ImportFrom___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("ImportFrom", args, keywords, new String[] + {"module", "names", "level"}, 3); + setModule(ap.getPyObject(0)); + setNames(ap.getPyObject(1)); + setLevel(ap.getPyObject(2)); + } + public ImportFrom(PyObject module, PyObject names, PyObject level) { setModule(module); setNames(names); Modified: branches/astwrite/src/org/python/antlr/ast/Index.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Index.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Index.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -53,7 +54,12 @@ } @ExposedNew @ExposedMethod - public void Index___init__(PyObject[] args, String[] keywords) {} + public void Index___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Index", args, keywords, new String[] + {"value"}, 1); + setValue(ap.getPyObject(0)); + } + public Index(PyObject value) { setValue(value); } Modified: branches/astwrite/src/org/python/antlr/ast/Interactive.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Interactive.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Interactive.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -53,7 +54,12 @@ } @ExposedNew @ExposedMethod - public void Interactive___init__(PyObject[] args, String[] keywords) {} + public void Interactive___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Interactive", args, keywords, new String[] + {"body"}, 1); + setBody(ap.getPyObject(0)); + } + public Interactive(PyObject body) { setBody(body); } Modified: branches/astwrite/src/org/python/antlr/ast/Lambda.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Lambda.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Lambda.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -67,7 +68,13 @@ } @ExposedNew @ExposedMethod - public void Lambda___init__(PyObject[] args, String[] keywords) {} + public void Lambda___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Lambda", args, keywords, new String[] + {"args", "body"}, 2); + setArgs(ap.getPyObject(0)); + setBody(ap.getPyObject(1)); + } + public Lambda(PyObject args, PyObject body) { setArgs(args); setBody(body); Modified: branches/astwrite/src/org/python/antlr/ast/List.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/List.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/List.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -67,7 +68,13 @@ } @ExposedNew @ExposedMethod - public void List___init__(PyObject[] args, String[] keywords) {} + public void List___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("List", args, keywords, new String[] + {"elts", "ctx"}, 2); + setElts(ap.getPyObject(0)); + setCtx(ap.getPyObject(1)); + } + public List(PyObject elts, PyObject ctx) { setElts(elts); setCtx(ctx); Modified: branches/astwrite/src/org/python/antlr/ast/ListComp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ListComp.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/ListComp.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -67,7 +68,13 @@ } @ExposedNew @ExposedMethod - public void ListComp___init__(PyObject[] args, String[] keywords) {} + public void ListComp___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("ListComp", args, keywords, new String[] + {"elt", "generators"}, 2); + setElt(ap.getPyObject(0)); + setGenerators(ap.getPyObject(1)); + } + public ListComp(PyObject elt, PyObject generators) { setElt(elt); setGenerators(generators); Modified: branches/astwrite/src/org/python/antlr/ast/Module.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Module.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Module.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -53,7 +54,12 @@ } @ExposedNew @ExposedMethod - public void Module___init__(PyObject[] args, String[] keywords) {} + public void Module___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Module", args, keywords, new String[] + {"body"}, 1); + setBody(ap.getPyObject(0)); + } + public Module(PyObject body) { setBody(body); } Modified: branches/astwrite/src/org/python/antlr/ast/Name.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Name.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Name.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -68,7 +69,13 @@ } @ExposedNew @ExposedMethod - public void Name___init__(PyObject[] args, String[] keywords) {} + public void Name___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Name", args, keywords, new String[] + {"id", "ctx"}, 2); + setId(ap.getPyObject(0)); + setCtx(ap.getPyObject(1)); + } + public Name(PyObject id, PyObject ctx) { setId(id); setCtx(ctx); Modified: branches/astwrite/src/org/python/antlr/ast/Num.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Num.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Num.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -54,7 +55,12 @@ } @ExposedNew @ExposedMethod - public void Num___init__(PyObject[] args, String[] keywords) {} + public void Num___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Num", args, keywords, new String[] + {"n"}, 1); + setN(ap.getPyObject(0)); + } + public Num(PyObject n) { setN(n); } Modified: branches/astwrite/src/org/python/antlr/ast/Pass.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Pass.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Pass.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; Modified: branches/astwrite/src/org/python/antlr/ast/Print.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Print.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Print.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -81,7 +82,14 @@ } @ExposedNew @ExposedMethod - public void Print___init__(PyObject[] args, String[] keywords) {} + public void Print___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Print", args, keywords, new String[] + {"dest", "values", "nl"}, 3); + setDest(ap.getPyObject(0)); + setValues(ap.getPyObject(1)); + setNl(ap.getPyObject(2)); + } + public Print(PyObject dest, PyObject values, PyObject nl) { setDest(dest); setValues(values); Modified: branches/astwrite/src/org/python/antlr/ast/Raise.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Raise.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Raise.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -80,7 +81,14 @@ } @ExposedNew @ExposedMethod - public void Raise___init__(PyObject[] args, String[] keywords) {} + public void Raise___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Raise", args, keywords, new String[] + {"excepttype", "inst", "tback"}, 3); + setExcepttype(ap.getPyObject(0)); + setInst(ap.getPyObject(1)); + setTback(ap.getPyObject(2)); + } + public Raise(PyObject excepttype, PyObject inst, PyObject tback) { setExcepttype(excepttype); setInst(inst); Modified: branches/astwrite/src/org/python/antlr/ast/Repr.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Repr.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Repr.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -54,7 +55,12 @@ } @ExposedNew @ExposedMethod - public void Repr___init__(PyObject[] args, String[] keywords) {} + public void Repr___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Repr", args, keywords, new String[] + {"value"}, 1); + setValue(ap.getPyObject(0)); + } + public Repr(PyObject value) { setValue(value); } Modified: branches/astwrite/src/org/python/antlr/ast/Return.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Return.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Return.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -54,7 +55,12 @@ } @ExposedNew @ExposedMethod - public void Return___init__(PyObject[] args, String[] keywords) {} + public void Return___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Return", args, keywords, new String[] + {"value"}, 1); + setValue(ap.getPyObject(0)); + } + public Return(PyObject value) { setValue(value); } Modified: branches/astwrite/src/org/python/antlr/ast/Slice.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Slice.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Slice.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -79,7 +80,14 @@ } @ExposedNew @ExposedMethod - public void Slice___init__(PyObject[] args, String[] keywords) {} + public void Slice___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Slice", args, keywords, new String[] + {"lower", "upper", "step"}, 3); + setLower(ap.getPyObject(0)); + setUpper(ap.getPyObject(1)); + setStep(ap.getPyObject(2)); + } + public Slice(PyObject lower, PyObject upper, PyObject step) { setLower(lower); setUpper(upper); Modified: branches/astwrite/src/org/python/antlr/ast/Str.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Str.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Str.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -54,7 +55,12 @@ } @ExposedNew @ExposedMethod - public void Str___init__(PyObject[] args, String[] keywords) {} + public void Str___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Str", args, keywords, new String[] + {"s"}, 1); + setS(ap.getPyObject(0)); + } + public Str(PyObject s) { setS(s); } Modified: branches/astwrite/src/org/python/antlr/ast/Subscript.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Subscript.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Subscript.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -80,7 +81,14 @@ } @ExposedNew @ExposedMethod - public void Subscript___init__(PyObject[] args, String[] keywords) {} + public void Subscript___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Subscript", args, keywords, new String[] + {"value", "slice", "ctx"}, 3); + setValue(ap.getPyObject(0)); + setSlice(ap.getPyObject(1)); + setCtx(ap.getPyObject(2)); + } + public Subscript(PyObject value, PyObject slice, PyObject ctx) { setValue(value); setSlice(slice); Modified: branches/astwrite/src/org/python/antlr/ast/Suite.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Suite.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Suite.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -53,7 +54,12 @@ } @ExposedNew @ExposedMethod - public void Suite___init__(PyObject[] args, String[] keywords) {} + public void Suite___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Suite", args, keywords, new String[] + {"body"}, 1); + setBody(ap.getPyObject(0)); + } + public Suite(PyObject body) { setBody(body); } Modified: branches/astwrite/src/org/python/antlr/ast/TryExcept.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/TryExcept.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/TryExcept.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -80,7 +81,14 @@ } @ExposedNew @ExposedMethod - public void TryExcept___init__(PyObject[] args, String[] keywords) {} + public void TryExcept___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("TryExcept", args, keywords, new String[] + {"body", "handlers", "orelse"}, 3); + setBody(ap.getPyObject(0)); + setHandlers(ap.getPyObject(1)); + setOrelse(ap.getPyObject(2)); + } + public TryExcept(PyObject body, PyObject handlers, PyObject orelse) { setBody(body); setHandlers(handlers); Modified: branches/astwrite/src/org/python/antlr/ast/TryFinally.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/TryFinally.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/TryFinally.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -67,7 +68,13 @@ } @ExposedNew @ExposedMethod - public void TryFinally___init__(PyObject[] args, String[] keywords) {} + public void TryFinally___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("TryFinally", args, keywords, new String[] + {"body", "finalbody"}, 2); + setBody(ap.getPyObject(0)); + setFinalbody(ap.getPyObject(1)); + } + public TryFinally(PyObject body, PyObject finalbody) { setBody(body); setFinalbody(finalbody); Modified: branches/astwrite/src/org/python/antlr/ast/Tuple.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Tuple.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/Tuple.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -67,7 +68,13 @@ } @ExposedNew @ExposedMethod - public void Tuple___init__(PyObject[] args, String[] keywords) {} + public void Tuple___init__(PyObject[] args, String[] keywords) { + ArgParser ap = new ArgParser("Tuple", args, keywords, new String[] + {"elts", "ctx"}, 2); + setElts(ap.getPyObject(0)); + setCtx(ap.getPyObject(1)); + } + public Tuple(PyObject elts, PyObject ctx) { setElts(elts); setCtx(ctx); Modified: branches/astwrite/src/org/python/antlr/ast/UnaryOp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/UnaryOp.java 2008-12-03 19:38:43 UTC (rev 5685) +++ branches/astwrite/src/org/python/antlr/ast/UnaryOp.java 2008-12-03 21:42:59 UTC (rev 5686) @@ -5,6 +5,7 @@ import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; +import org.python.core.ArgParser; import org.python.core.AstList; import org.python.core.Py; import org.python.core.PyObject; @@ -67,7 +68,13 @@ } @ExposedNew @ExposedMethod - public void UnaryOp___init__(PyObject[] args, String[] keywords) {} + pub... [truncated message content] |
From: <fwi...@us...> - 2008-12-03 19:38:46
|
Revision: 5685 http://jython.svn.sourceforge.net/jython/?rev=5685&view=rev Author: fwierzbicki Date: 2008-12-03 19:38:43 +0000 (Wed, 03 Dec 2008) Log Message: ----------- More of 2.6 test_ast.py now passes. Modified Paths: -------------- branches/astwrite/ast/asdl_antlr.py branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java branches/astwrite/src/org/python/antlr/ast/Assert.java branches/astwrite/src/org/python/antlr/ast/Assign.java branches/astwrite/src/org/python/antlr/ast/Attribute.java branches/astwrite/src/org/python/antlr/ast/AugAssign.java branches/astwrite/src/org/python/antlr/ast/BinOp.java branches/astwrite/src/org/python/antlr/ast/BoolOp.java branches/astwrite/src/org/python/antlr/ast/Break.java branches/astwrite/src/org/python/antlr/ast/Call.java branches/astwrite/src/org/python/antlr/ast/ClassDef.java branches/astwrite/src/org/python/antlr/ast/Compare.java branches/astwrite/src/org/python/antlr/ast/Continue.java branches/astwrite/src/org/python/antlr/ast/Delete.java branches/astwrite/src/org/python/antlr/ast/Dict.java branches/astwrite/src/org/python/antlr/ast/ExceptHandler.java branches/astwrite/src/org/python/antlr/ast/Exec.java branches/astwrite/src/org/python/antlr/ast/Expr.java branches/astwrite/src/org/python/antlr/ast/For.java branches/astwrite/src/org/python/antlr/ast/FunctionDef.java branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java branches/astwrite/src/org/python/antlr/ast/Global.java branches/astwrite/src/org/python/antlr/ast/If.java branches/astwrite/src/org/python/antlr/ast/IfExp.java branches/astwrite/src/org/python/antlr/ast/Import.java branches/astwrite/src/org/python/antlr/ast/ImportFrom.java branches/astwrite/src/org/python/antlr/ast/Lambda.java branches/astwrite/src/org/python/antlr/ast/List.java branches/astwrite/src/org/python/antlr/ast/ListComp.java branches/astwrite/src/org/python/antlr/ast/Name.java branches/astwrite/src/org/python/antlr/ast/Num.java branches/astwrite/src/org/python/antlr/ast/Pass.java branches/astwrite/src/org/python/antlr/ast/Print.java branches/astwrite/src/org/python/antlr/ast/Raise.java branches/astwrite/src/org/python/antlr/ast/Repr.java branches/astwrite/src/org/python/antlr/ast/Return.java branches/astwrite/src/org/python/antlr/ast/Str.java branches/astwrite/src/org/python/antlr/ast/Subscript.java branches/astwrite/src/org/python/antlr/ast/TryExcept.java branches/astwrite/src/org/python/antlr/ast/TryFinally.java branches/astwrite/src/org/python/antlr/ast/Tuple.java branches/astwrite/src/org/python/antlr/ast/UnaryOp.java branches/astwrite/src/org/python/antlr/ast/While.java branches/astwrite/src/org/python/antlr/ast/With.java branches/astwrite/src/org/python/antlr/ast/Yield.java branches/astwrite/src/org/python/core/AstList.java Modified: branches/astwrite/ast/asdl_antlr.py =================================================================== --- branches/astwrite/ast/asdl_antlr.py 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/ast/asdl_antlr.py 2008-12-03 19:38:43 UTC (rev 5685) @@ -202,7 +202,7 @@ self.emit("public void %s___init__(PyObject[] args, String[] keywords) {}" % type.name, depth) self.emit('', 0) - self.attributes(type, depth); + self.attributes(type, name, depth); self.emit('@ExposedMethod', depth + 1) self.emit('public PyObject __int__() {', depth + 1) @@ -219,7 +219,7 @@ self.close() - def attributes(self, obj, depth): + def attributes(self, obj, name, depth): field_list = [] if hasattr(obj, "fields"): for f in obj.fields: @@ -236,11 +236,8 @@ self.emit("public PyString[] get_fields() { return fields; }", depth+1) self.emit("", 0) - att_list = [] - if hasattr(obj, "attributes"): - for a in obj.attributes: - att_list.append('new PyString("%s")' % a.name) - if len(att_list) > 0: + if str(name) in ('stmt', 'expr', 'excepthandler'): + att_list = ['new PyString("lineno")', 'new PyString("col_offset")'] self.emit("private final static PyString[] attributes =", depth + 1) self.emit("new PyString[] {%s};" % ", ".join(att_list), depth + 1) self.emit('@ExposedGet(name = "_attributes")', depth + 1) @@ -261,7 +258,7 @@ self.emit("", 0) self.emit("public static final PyType TYPE = PyType.fromClass(%sType.class);" % name, depth + 1); - self.attributes(sum, depth); + self.attributes(sum, name, depth); self.emit("public %(name)sType() {" % locals(), depth+1) self.emit("}", depth+1) @@ -301,7 +298,7 @@ self.visit(f, depth + 1) self.emit("", depth) - self.attributes(product, depth) + self.attributes(product, name, depth) self.javaMethods(product, name, "%sType" % name, product.fields, depth+1) @@ -327,7 +324,7 @@ self.visit(f, depth + 1) self.emit("", depth) - self.attributes(cons, depth) + self.attributes(cons, name, depth) self.javaMethods(cons, cons.name, cons.name, cons.fields, depth+1) Modified: branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -73,6 +73,21 @@ public static expr_contextType py2expr_context(Object o) { if (o == null || o instanceof expr_contextType) { return (expr_contextType)o; + } else if (o instanceof PyObject) { + switch (((PyObject)o).asInt()) { + case 1: + return expr_contextType.Load; + case 2: + return expr_contextType.Store; + case 3: + return expr_contextType.Del; + case 4: + return expr_contextType.AugLoad; + case 5: + return expr_contextType.AugStore; + case 6: + return expr_contextType.Param; + } } //FIXME: investigate the right exception throw Py.TypeError("Can't convert " + o.getClass().getName() + " to expr_context node"); @@ -89,6 +104,8 @@ public static String py2string(Object o) { if (o == null || o instanceof String) { return (String)o; + } else if (o instanceof PyString) { + return ((PyObject)o).toString(); } //FIXME: investigate the right exception throw Py.TypeError("Can't convert " + o.getClass().getName() + " to string node"); @@ -103,6 +120,26 @@ return operatorType.Add; case 2: return operatorType.Sub; + case 3: + return operatorType.Mult; + case 4: + return operatorType.Div; + case 5: + return operatorType.Mod; + case 6: + return operatorType.Pow; + case 7: + return operatorType.LShift; + case 8: + return operatorType.RShift; + case 9: + return operatorType.BitOr; + case 10: + return operatorType.BitXor; + case 11: + return operatorType.BitAnd; + case 12: + return operatorType.FloorDiv; } } //FIXME: investigate the right exception @@ -189,6 +226,13 @@ public static boolopType py2boolop(Object o) { if (o == null || o instanceof boolopType) { return (boolopType)o; + } else if (o instanceof PyObject) { + switch (((PyObject)o).asInt()) { + case 1: + return boolopType.And; + case 2: + return boolopType.Or; + } } //FIXME: investigate the right exception throw Py.TypeError("Can't convert " + o.getClass().getName() + " to boolop node"); Modified: branches/astwrite/src/org/python/antlr/ast/Assert.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Assert.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Assert.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -54,7 +54,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Assign.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Assign.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Assign.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -54,7 +54,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Attribute.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Attribute.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Attribute.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -68,7 +68,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/AugAssign.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/AugAssign.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/AugAssign.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -67,7 +67,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/BinOp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BinOp.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/BinOp.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -67,7 +67,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/BoolOp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BoolOp.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/BoolOp.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -54,7 +54,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Break.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Break.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Break.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -27,7 +27,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Call.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Call.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Call.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -94,7 +94,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/ClassDef.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ClassDef.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/ClassDef.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -82,7 +82,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Compare.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Compare.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Compare.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -67,7 +67,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Continue.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Continue.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Continue.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -27,7 +27,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Delete.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Delete.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Delete.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -41,7 +41,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Dict.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Dict.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Dict.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -54,7 +54,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/ExceptHandler.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ExceptHandler.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/ExceptHandler.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -67,7 +67,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Exec.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Exec.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Exec.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -67,7 +67,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Expr.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Expr.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Expr.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -41,7 +41,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/For.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/For.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/For.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -81,7 +81,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/FunctionDef.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/FunctionDef.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/FunctionDef.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -82,7 +82,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -54,7 +54,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Global.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Global.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Global.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -41,7 +41,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/If.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/If.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/If.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -67,7 +67,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/IfExp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/IfExp.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/IfExp.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -67,7 +67,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Import.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Import.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Import.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -41,7 +41,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/ImportFrom.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ImportFrom.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/ImportFrom.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -68,7 +68,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Lambda.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Lambda.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Lambda.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -54,7 +54,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/List.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/List.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/List.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -54,7 +54,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/ListComp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ListComp.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/ListComp.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -54,7 +54,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Name.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Name.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Name.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -55,7 +55,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Num.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Num.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Num.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -41,7 +41,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Pass.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Pass.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Pass.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -27,7 +27,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Print.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Print.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Print.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -68,7 +68,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Raise.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Raise.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Raise.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -67,7 +67,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Repr.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Repr.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Repr.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -41,7 +41,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Return.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Return.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Return.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -41,7 +41,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Str.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Str.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Str.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -41,7 +41,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Subscript.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Subscript.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Subscript.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -67,7 +67,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/TryExcept.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/TryExcept.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/TryExcept.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -67,7 +67,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/TryFinally.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/TryFinally.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/TryFinally.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -54,7 +54,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Tuple.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Tuple.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Tuple.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -54,7 +54,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/UnaryOp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/UnaryOp.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/UnaryOp.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -54,7 +54,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/While.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/While.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/While.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -67,7 +67,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/With.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/With.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/With.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -68,7 +68,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/antlr/ast/Yield.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Yield.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/antlr/ast/Yield.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -41,7 +41,8 @@ @ExposedGet(name = "_fields") public PyString[] get_fields() { return fields; } - private final static PyString[] attributes = new PyString[0]; + private final static PyString[] attributes = + new PyString[] {new PyString("lineno"), new PyString("col_offset")}; @ExposedGet(name = "_attributes") public PyString[] get_attributes() { return attributes; } Modified: branches/astwrite/src/org/python/core/AstList.java =================================================================== --- branches/astwrite/src/org/python/core/AstList.java 2008-12-03 18:28:54 UTC (rev 5684) +++ branches/astwrite/src/org/python/core/AstList.java 2008-12-03 19:38:43 UTC (rev 5685) @@ -20,7 +20,7 @@ import java.util.List; import java.util.ListIterator; -@ExposedType(name = "_ast.astlist", base = PyObject.class) +@ExposedType(name = "_ast.astlist", base = PyList.class) public class AstList extends PySequence implements Cloneable, List { public static final PyType TYPE = PyType.fromClass(AstList.class); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fwi...@us...> - 2008-12-03 18:28:58
|
Revision: 5684 http://jython.svn.sourceforge.net/jython/?rev=5684&view=rev Author: fwierzbicki Date: 2008-12-03 18:28:54 +0000 (Wed, 03 Dec 2008) Log Message: ----------- Merged revisions 5639-5640,5644-5648,5655,5661,5670,5680-5682 via svnmerge from https://jython.svn.sourceforge.net/svnroot/jython/trunk/jython Modified Paths: -------------- branches/astwrite/Lib/test/test_genexps.py branches/astwrite/Lib/test/test_stringmap.py branches/astwrite/Lib/test/test_subprocess_jy.py branches/astwrite/build.xml branches/astwrite/src/org/python/antlr/GrammarActions.java branches/astwrite/src/org/python/antlr/PythonTree.java branches/astwrite/src/org/python/compiler/CodeCompiler.java branches/astwrite/src/org/python/core/PyDataDescr.java branches/astwrite/src/org/python/core/PyStringMap.java branches/astwrite/src/org/python/core/PySystemState.java branches/astwrite/src/org/python/expose/generate/DescriptorExposer.java branches/astwrite/src/org/python/expose/generate/Exposer.java branches/astwrite/src/org/python/modules/zipimport/zipimporter.java branches/astwrite/src/shell/jython branches/astwrite/src/shell/jython.bat branches/astwrite/tests/java/org/python/expose/generate/DescriptorExposerTest.java branches/astwrite/tests/java/org/python/expose/generate/ExposedTypeProcessorTest.java branches/astwrite/tests/java/org/python/expose/generate/MethodExposerTest.java branches/astwrite/tests/java/org/python/expose/generate/SimpleExposed.java Added Paths: ----------- branches/astwrite/Lib/test/test_genexps_jy.py branches/astwrite/extlibs/constantine-0.4.jar Removed Paths: ------------- branches/astwrite/extlibs/constantine.jar Property Changed: ---------------- branches/astwrite/ Property changes on: branches/astwrite ___________________________________________________________________ Modified: svnmerge-integrated - /trunk/jython:1-5634 + /trunk/jython:1-5683 Modified: branches/astwrite/Lib/test/test_genexps.py =================================================================== --- branches/astwrite/Lib/test/test_genexps.py 2008-12-03 17:59:13 UTC (rev 5683) +++ branches/astwrite/Lib/test/test_genexps.py 2008-12-03 18:28:54 UTC (rev 5684) @@ -1,9 +1,8 @@ -#From http://svn.python.org/projects/python/branches/release25-maint/Lib/test_genexps.py@51333 +# From http://svn.python.org/projects/python/branches/release25-maint/Lib/test_genexps.py@51333 -#Ignoring details of SyntaxError for now -- justified I think for "invalid +# Ignoring details of SyntaxError for now -- justified I think for "invalid # syntax" since that #message has very little info, where Antlr provides more -# detail. The others really are #differences that should be addressed, but I -# want to concentrate on the other errors for now. +# detail. doctests = """ Copied: branches/astwrite/Lib/test/test_genexps_jy.py (from rev 5682, trunk/jython/Lib/test/test_genexps_jy.py) =================================================================== --- branches/astwrite/Lib/test/test_genexps_jy.py (rev 0) +++ branches/astwrite/Lib/test/test_genexps_jy.py 2008-12-03 18:28:54 UTC (rev 5684) @@ -0,0 +1,23 @@ +"""Misc generator expression tests + +Made for Jython. +""" +import unittest +from test import test_support + +locals_test = list(local for local in locals() if not local.startswith('_')) + +class GeneratorExpressionsTestCase(unittest.TestCase): + + def test_module_level_locals(self): + # NOTE: The locals_test genexp used to cause a 'dictionary + # changed size during iteration' RuntimeError. If we've gotten + # this far we've already passed + self.assert_(sorted(locals_test) == ['test_support', 'unittest']) + + +def test_main(): + test_support.run_unittest(GeneratorExpressionsTestCase) + +if __name__ == '__main__': + test_main() Modified: branches/astwrite/Lib/test/test_stringmap.py =================================================================== --- branches/astwrite/Lib/test/test_stringmap.py 2008-12-03 17:59:13 UTC (rev 5683) +++ branches/astwrite/Lib/test/test_stringmap.py 2008-12-03 18:28:54 UTC (rev 5684) @@ -62,7 +62,10 @@ for i in r.keys(): self.assert_(d.has_key(i)) self.assert_(i in d) - + + # Test unhashability + self.assertRaises(TypeError, hash, d) + def test_stringmap_in_mapping(self): class A: def __init__(self): Modified: branches/astwrite/Lib/test/test_subprocess_jy.py =================================================================== --- branches/astwrite/Lib/test/test_subprocess_jy.py 2008-12-03 17:59:13 UTC (rev 5683) +++ branches/astwrite/Lib/test/test_subprocess_jy.py 2008-12-03 18:28:54 UTC (rev 5684) @@ -14,10 +14,30 @@ stdout=PIPE) self.assertEquals('something', p1.stdout.read()) + +# tests for (some parts of) issue #1187: JYTHON_OPTS should not be enriched by arguments +class JythonOptsTest(unittest.TestCase): + def testNoJythonOpts(self): + os.environ['JYTHON_OPTS'] = '' + p1 = Popen([sys.executable, "-c", + 'import os, sys; sys.stdout.write(os.environ["JYTHON_OPTS"])'], + stdout=PIPE) + self.assertEquals('', p1.stdout.read()) + + def testExistingJythonOpts(self): + options = '-Qold -Qwarn' + os.environ['JYTHON_OPTS'] = options + p1 = Popen([sys.executable, "-c", + 'import os, sys; sys.stdout.write(os.environ["JYTHON_OPTS"])'], + stdout=PIPE) + self.assertEquals(options, p1.stdout.read()) + def test_main(): - test_support.run_unittest(EnvironmentInheritanceTest) + test_classes = ( + EnvironmentInheritanceTest, + JythonOptsTest, + ) + test_support.run_unittest(*test_classes) if __name__ == '__main__': test_main() - - Modified: branches/astwrite/build.xml =================================================================== --- branches/astwrite/build.xml 2008-12-03 17:59:13 UTC (rev 5683) +++ branches/astwrite/build.xml 2008-12-03 18:28:54 UTC (rev 5684) @@ -526,7 +526,7 @@ <zipfileset src="extlibs/jna-posix.jar"/> <!-- <rule pattern="com.sun.jna.**" result="org.python.jna.@1"/> --> <rule pattern="org.jruby.ext.posix.**" result="org.python.posix.@1"/> - <zipfileset src="extlibs/constantine.jar"/> + <zipfileset src="extlibs/constantine-0.4.jar"/> <rule pattern="com.kenai.constantine.**" result="org.python.constantine.@1"/> </jarjar> <unjar src="${output.dir}/jarjar.jar" dest="${jarjar.dir}"> Copied: branches/astwrite/extlibs/constantine-0.4.jar (from rev 5682, trunk/jython/extlibs/constantine-0.4.jar) =================================================================== (Binary files differ) Deleted: branches/astwrite/extlibs/constantine.jar =================================================================== (Binary files differ) Modified: branches/astwrite/src/org/python/antlr/GrammarActions.java =================================================================== --- branches/astwrite/src/org/python/antlr/GrammarActions.java 2008-12-03 17:59:13 UTC (rev 5683) +++ branches/astwrite/src/org/python/antlr/GrammarActions.java 2008-12-03 18:28:54 UTC (rev 5684) @@ -2,7 +2,6 @@ import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; -import org.antlr.runtime.tree.Tree; import org.python.core.Py; import org.python.core.PyComplex; Modified: branches/astwrite/src/org/python/antlr/PythonTree.java =================================================================== --- branches/astwrite/src/org/python/antlr/PythonTree.java 2008-12-03 17:59:13 UTC (rev 5683) +++ branches/astwrite/src/org/python/antlr/PythonTree.java 2008-12-03 18:28:54 UTC (rev 5684) @@ -12,7 +12,6 @@ import java.util.List; public class PythonTree extends AST { - public boolean from_future_checked = false; private int charStartIndex = -1; private int charStopIndex = -1; @@ -449,5 +448,4 @@ child.setParent(this); } } - } Modified: branches/astwrite/src/org/python/compiler/CodeCompiler.java =================================================================== --- branches/astwrite/src/org/python/compiler/CodeCompiler.java 2008-12-03 17:59:13 UTC (rev 5683) +++ branches/astwrite/src/org/python/compiler/CodeCompiler.java 2008-12-03 18:28:54 UTC (rev 5684) @@ -2180,7 +2180,6 @@ @Override public Object visitGeneratorExp(GeneratorExp node) throws Exception { String bound_exp = "_(x)"; - String tmp_append ="_(" + node.getLine() + "_" + node.getCharPositionInLine() + ")"; setline(node); @@ -2220,7 +2219,7 @@ java.util.List<stmtType> bod = new ArrayList<stmtType>(); bod.add(n); - module.PyCode(new Suite(node, bod), tmp_append, true, + module.PyCode(new Suite(node, bod), "<genexpr>", true, className, false, false, node.getLine(), scope, cflags).get(code); @@ -2230,19 +2229,15 @@ } else { code.invokespecial( "org/python/core/PyFunction", "<init>", "(" + $pyObj + $pyObjArr + $pyCode + $pyObj + $pyObjArr + ")V"); } + int genExp = storeTop(); - set(new Name(node, tmp_append, expr_contextType.Store)); - visit(iter); - visit(new Name(node, tmp_append, expr_contextType.Load)); + code.aload(genExp); + code.freeLocal(genExp); code.swap(); code.invokevirtual("org/python/core/PyObject", "__iter__", "()Lorg/python/core/PyObject;"); code.invokevirtual("org/python/core/PyObject", "__call__", "(" + $pyObj + ")" + $pyObj); - java.util.List<exprType> targets = new ArrayList<exprType>(); - targets.add(new Name(n, tmp_append, expr_contextType.Del)); - visit(new Delete(n, targets)); - return null; } Modified: branches/astwrite/src/org/python/core/PyDataDescr.java =================================================================== --- branches/astwrite/src/org/python/core/PyDataDescr.java 2008-12-03 17:59:13 UTC (rev 5683) +++ branches/astwrite/src/org/python/core/PyDataDescr.java 2008-12-03 18:28:54 UTC (rev 5684) @@ -75,9 +75,12 @@ @ExposedMethod public void getset_descriptor___set__(PyObject obj, PyObject value) { checkGetterType(obj.getType()); + // XXX: We may want to special case value being PyUnicode and ofType being String + // (then explicitly value.encode() first) Object converted = value.__tojava__(ofType); if(converted == Py.NoConversion) { - throw Py.TypeError(""); // xxx + throw Py.TypeError(String.format("unsupported type for assignment to %s: '%.200s'", + name, value.getType().fastGetName())); } invokeSet(obj, converted); } Modified: branches/astwrite/src/org/python/core/PyStringMap.java =================================================================== --- branches/astwrite/src/org/python/core/PyStringMap.java 2008-12-03 17:59:13 UTC (rev 5683) +++ branches/astwrite/src/org/python/core/PyStringMap.java 2008-12-03 18:28:54 UTC (rev 5684) @@ -500,4 +500,8 @@ return pyKey; } } + + public int hashCode() { + throw Py.TypeError(String.format("unhashable type: '%.200s'", getType().fastGetName())); + } } Modified: branches/astwrite/src/org/python/core/PySystemState.java =================================================================== --- branches/astwrite/src/org/python/core/PySystemState.java 2008-12-03 17:59:13 UTC (rev 5683) +++ branches/astwrite/src/org/python/core/PySystemState.java 2008-12-03 18:28:54 UTC (rev 5684) @@ -34,6 +34,7 @@ protected static final String CACHEDIR_DEFAULT_NAME = "cachedir"; public static final String JYTHON_JAR = "jython.jar"; + public static final String JYTHON_COMPLETE_JAR = "jython-complete.jar"; private static final String JAR_URL_PREFIX = "jar:file:"; private static final String JAR_SEPARATOR = "!"; @@ -392,10 +393,14 @@ if (root == null) { String classpath = preProperties.getProperty("java.class.path"); if (classpath != null) { - int jpy = classpath.toLowerCase().indexOf(JYTHON_JAR); - if (jpy >= 0) { - int start = classpath.lastIndexOf(java.io.File.pathSeparator, jpy) + 1; - root = classpath.substring(start, jpy); + String lowerCaseClasspath = classpath.toLowerCase(); + int jarIndex = lowerCaseClasspath.indexOf(JYTHON_COMPLETE_JAR); + if (jarIndex < 0) { + jarIndex = lowerCaseClasspath.indexOf(JYTHON_JAR); + } + if (jarIndex >= 0) { + int start = classpath.lastIndexOf(java.io.File.pathSeparator, jarIndex) + 1; + root = classpath.substring(start, jarIndex); } else { // in case JYTHON_JAR is referenced from a MANIFEST inside another jar on the classpath root = jarFileName; Modified: branches/astwrite/src/org/python/expose/generate/DescriptorExposer.java =================================================================== --- branches/astwrite/src/org/python/expose/generate/DescriptorExposer.java 2008-12-03 17:59:13 UTC (rev 5683) +++ branches/astwrite/src/org/python/expose/generate/DescriptorExposer.java 2008-12-03 18:28:54 UTC (rev 5684) @@ -139,7 +139,7 @@ mv.visitVarInsn(ALOAD, 1); mv.visitTypeInsn(CHECKCAST, onType.getInternalName()); call(onType, getterMethodName, ofType); - if(PRIMITIVES.containsKey(ofType)) { + if(PRIMITIVES.containsKey(ofType) || ofType.equals(STRING)) { toPy(ofType); } endMethod(ARETURN); @@ -153,7 +153,7 @@ onType.getInternalName(), getterFieldName, ofType.getDescriptor()); - if(PRIMITIVES.containsKey(ofType)) { + if(PRIMITIVES.containsKey(ofType) || ofType.equals(STRING)) { toPy(ofType); } endMethod(ARETURN); Modified: branches/astwrite/src/org/python/expose/generate/Exposer.java =================================================================== --- branches/astwrite/src/org/python/expose/generate/Exposer.java 2008-12-03 17:59:13 UTC (rev 5683) +++ branches/astwrite/src/org/python/expose/generate/Exposer.java 2008-12-03 18:28:54 UTC (rev 5684) @@ -5,6 +5,7 @@ import org.python.objectweb.asm.ClassVisitor; import org.python.objectweb.asm.ClassWriter; +import org.python.objectweb.asm.Label; import org.python.objectweb.asm.MethodVisitor; import org.python.objectweb.asm.Opcodes; import org.python.objectweb.asm.Type; @@ -228,7 +229,16 @@ if(inputType.equals(VOID)) { getStatic(PY, "None", PYOBJ); } else if(inputType.equals(STRING)) { + Label newString = new Label(); + Label end = new Label(); + mv.visitInsn(DUP); + mv.visitJumpInsn(IFNONNULL, newString); + mv.visitInsn(POP); + getStatic(PY, "None", PYOBJ); + mv.visitJumpInsn(GOTO, end); + mv.visitLabel(newString); callStatic(PY, "newString", PYSTR, STRING); + mv.visitLabel(end); } else if(inputType.equals(BOOLEAN)) { callStatic(PY, "newBoolean", PYBOOLEAN, BOOLEAN); } else if(inputType.equals(INT) || inputType.equals(BYTE) || inputType.equals(SHORT)) { Modified: branches/astwrite/src/org/python/modules/zipimport/zipimporter.java =================================================================== --- branches/astwrite/src/org/python/modules/zipimport/zipimporter.java 2008-12-03 17:59:13 UTC (rev 5683) +++ branches/astwrite/src/org/python/modules/zipimport/zipimporter.java 2008-12-03 18:28:54 UTC (rev 5684) @@ -50,12 +50,12 @@ "a zipfile. ZipImportError is raised if 'archivepath' doesn't point to\n" + "a valid Zip archive."); - /** zip_searchorder defines how we search for a module in the Zip + /** zipSearchOrder defines how we search for a module in the Zip * archive */ static enum EntryType { IS_SOURCE, IS_BYTECODE, IS_PACKAGE }; - static final SearchOrderEntry[] zip_searchorder = new SearchOrderEntry[] { + static final SearchOrderEntry[] zipSearchOrder = new SearchOrderEntry[] { new SearchOrderEntry(File.separator + "__init__$py.class", EnumSet.of(EntryType.IS_PACKAGE, EntryType.IS_BYTECODE)), new SearchOrderEntry(File.separator + "__init__.py", @@ -126,9 +126,7 @@ break; } - String childFile = pathFile.getPath(); - prefix = childFile.substring(childFile.lastIndexOf(File.separator) + 1) - + File.separator + prefix; + prefix = pathFile.getName() + File.separator + prefix; pathFile = parentFile; } @@ -364,8 +362,7 @@ private ModuleInfo getModuleInfo(String fullname) { String path = makeFilename(prefix, getSubname(fullname)); - for (int i = 0; i < zip_searchorder.length; i++) { - SearchOrderEntry entry = zip_searchorder[i]; + for (SearchOrderEntry entry : zipSearchOrder) { PyObject tocEntry = files.__finditem__(path + entry.suffix); if (tocEntry == null) continue; @@ -392,8 +389,7 @@ return null; } - for (int i = 0; i < zip_searchorder.length; i++) { - SearchOrderEntry entry = zip_searchorder[i]; + for (SearchOrderEntry entry : zipSearchOrder) { String suffix = entry.suffix; String searchPath = path + suffix; @@ -606,7 +602,12 @@ @ExposedMethod(names = "__repr__") final String zipimporter_toString() { - return "<zipimporter object \"" + archive + "\">"; + String displayArchive = archive != null ? archive : "???"; + if (prefix != null && !"".equals(prefix)) { + return String.format("<zipimporter object \"%.300s%c%.150s\">", + displayArchive, File.separatorChar, prefix); + } + return String.format("<zipimporter object \"%.300s\">", displayArchive); } /** Modified: branches/astwrite/src/shell/jython =================================================================== --- branches/astwrite/src/shell/jython 2008-12-03 17:59:13 UTC (rev 5683) +++ branches/astwrite/src/shell/jython 2008-12-03 18:28:54 UTC (rev 5684) @@ -43,16 +43,24 @@ JAVA_CMD=("$JAVA_HOME/bin/java") fi +# try to dynamically determine jython home +# (this script typically resides in jython home, or in the /bin subdirectory) if [ -z "$JYTHON_HOME" ] ; then if [ "$PRG" = "./jython" ] ; then - # current dir is /bin dir - JYTHON_HOME_1=`pwd` # the ./bin dir - JYTHON_HOME=`dirname "$JYTHON_HOME_1"` # the . dir + # current dir is the script dir + JYTHON_HOME_1=`pwd` else - # current dir is not /bin dir - JYTHON_HOME_1=`dirname "$PRG"` # the ./bin dir - JYTHON_HOME=`dirname "$JYTHON_HOME_1"` # the . dir + # current dir is not the script dir + JYTHON_HOME_1=`dirname "$PRG"` fi + if [ -f "$JYTHON_HOME_1"/jython-complete.jar -o -f "$JYTHON_HOME_1"/jython.jar ] ; then + JYTHON_HOME="$JYTHON_HOME_1" + else + JYTHON_HOME=`dirname "$JYTHON_HOME_1"` + fi + if [ ! -f "$JYTHON_HOME"/jython-complete.jar -a ! -f "$JYTHON_HOME"/jython.jar ] ; then + JYTHON_HOME="$JYTHON_HOME_FALLBACK" + fi fi if [ -z "$JYTHON_OPTS" ] ; then @@ -117,6 +125,10 @@ -D*) python_args=("${python_args[@]}" "$1") ;; + # Print the command, don't execute it + --print) + print_requested=true + ;; # Run with the instrumented profiler: http://jiprof.sourceforge.net/ --profile) rm -f profile.txt # XXX do this? @@ -189,12 +201,17 @@ [ -n "$profile_requested" ] && echo "Running with instrumented profiler" java_args=("${java_args[@]}" -classpath "$CP$CP_DELIMITER$CLASSPATH") else - if [ -z $help_requested ] ; then + if [ -z "$help_requested" -a -z "$print_requested" ] ; then JAVA_CMD=(exec "${JAVA_CMD[@]}") fi - java_args=("${java_args[@]}" -Xbootclasspath/a:"$CP" -classpath "$CLASSPATH") + java_args=("${java_args[@]}" -Xbootclasspath/a:"$CP") + [ -n "$CLASSPATH" ] && java_args=("${java_args[@]}" -classpath "$CLASSPATH") fi +if [ -n "$print_requested" ] ; then + JAVA_CMD=(echo $JAVA_CMD) +fi + "${JAVA_CMD[@]}" $JAVA_OPTS "${java_args[@]}" -Dpython.home="$JYTHON_HOME" \ -Dpython.executable="$PRG" org.python.util.jython $JYTHON_OPTS "$@" @@ -205,6 +222,7 @@ echo "Jython launcher options:" >&2 echo "-Jarg : pass argument through to Java VM (e.g. -J-Xmx512m)" >&2 echo "--jdb : run under JDB" >&2 + echo "--print : print the Java command instead of executing it" >&2 echo "--profile: run with the Java Interactive Profiler (http://jiprof.sf.net)" >&2 echo "--verify : enable bytecode verifier for Jython classes (for development)" >&2 echo "-- : pass remaining arguments through to Jython" >&2 Modified: branches/astwrite/src/shell/jython.bat =================================================================== --- branches/astwrite/src/shell/jython.bat 2008-12-03 17:59:13 UTC (rev 5683) +++ branches/astwrite/src/shell/jython.bat 2008-12-03 18:28:54 UTC (rev 5684) @@ -24,6 +24,13 @@ set _JAVA_CMD="%JAVA_HOME:"=%\bin\java" ) +rem remove surrounding quotes from jython opts, to be able to safely empty-test it +set _TRIMMED_JYTHON_OPTS=%JYTHON_OPTS% +for /f "useback tokens=*" %%a in ('%_TRIMMED_JYTHON_OPTS%') do set _TRIMMED_JYTHON_OPTS=%%~a +if not "%_TRIMMED_JYTHON_OPTS%"=="" ( + set _JYTHON_OPTS="%_TRIMMED_JYTHON_OPTS%" +) + rem remove surrounding quotes from jython home, to be able to safely empty-test it set _TRIMMED_JYTHON_HOME=%JYTHON_HOME% for /f "useback tokens=*" %%a in ('%_TRIMMED_JYTHON_HOME%') do set _TRIMMED_JYTHON_HOME=%%~a @@ -31,9 +38,22 @@ set _JYTHON_HOME="%_TRIMMED_JYTHON_HOME%" goto gotHome ) + +rem try to dynamically determine jython home +rem (this script typically resides in jython home, or in the /bin subdirectory) +pushd "%~dp0%" +set _JYTHON_HOME="%CD%" +popd +if exist %_JYTHON_HOME%\jython.jar goto gotHome +if exist %_JYTHON_HOME%\jython-complete.jar goto gotHome pushd "%~dp0%\.." set _JYTHON_HOME="%CD%" popd +if exist %_JYTHON_HOME%\jython.jar goto gotHome +if exist %_JYTHON_HOME%\jython-complete.jar goto gotHome +rem jython home fallback (if all else fails) +rem if present, %JYTHON_HOME_FALLBACK% is already quoted +set _JYTHON_HOME=%JYTHON_HOME_FALLBACK% :gotHome if not exist %_JYTHON_HOME%\jython.jar goto tryComplete @@ -49,7 +69,7 @@ if exist %_JYTHON_HOME%/jython-complete.jar goto run echo Cannot find jython.jar or jython-complete.jar in %_JYTHON_HOME% -echo Try running this batch file from the 'bin' directory of an installed Jython +echo Try running this batch file from the 'bin' directory of an installed Jython, echo or setting JYTHON_HOME. goto cleanup @@ -68,6 +88,7 @@ set _ARGS=%_ARGS:"=_D% set _ARGS="%_ARGS%" +set _JYTHON_ARGS= :scanArgs rem split args by spaces into first and rest @@ -121,7 +142,7 @@ if "%_CMP2:"=\\%" == "-J" goto jvmArg :jythonArg -set JYTHON_OPTS=%JYTHON_OPTS% %_CMP% +set _JYTHON_ARGS=%_JYTHON_ARGS% %_CMP% goto nextArg :jvmArg @@ -140,7 +161,7 @@ goto scanArgs :argsDone -%_JAVA_CMD% %_JAVA_OPTS% %_JAVA_STACK% -Xbootclasspath/a:%_CP% -Dpython.home=%_JYTHON_HOME% -Dpython.executable="%~f0" -classpath "%CLASSPATH%" org.python.util.jython %JYTHON_OPTS% %_ARGS% +%_JAVA_CMD% %_JAVA_OPTS% %_JAVA_STACK% -Xbootclasspath/a:%_CP% -Dpython.home=%_JYTHON_HOME% -Dpython.executable="%~f0" -classpath "%CLASSPATH%" org.python.util.jython %_JYTHON_OPTS% %_JYTHON_ARGS% %_ARGS% set E=%ERRORLEVEL% :cleanup @@ -153,8 +174,11 @@ set _JAVA_OPTS= set _JAVA_STACK= set _JYTHON_HOME= +set _JYTHON_OPTS= +set _JYTHON_ARGS= set _TRIMMED_JAVA_HOME= set _TRIMMED_JYTHON_HOME= +set _TRIMMED_JYTHON_OPTS= :finish exit /b %E% Modified: branches/astwrite/tests/java/org/python/expose/generate/DescriptorExposerTest.java =================================================================== --- branches/astwrite/tests/java/org/python/expose/generate/DescriptorExposerTest.java 2008-12-03 17:59:13 UTC (rev 5683) +++ branches/astwrite/tests/java/org/python/expose/generate/DescriptorExposerTest.java 2008-12-03 18:28:54 UTC (rev 5684) @@ -76,7 +76,17 @@ assertFalse(instance.implementsDescrSet()); assertFalse(instance.implementsDescrDelete()); } + + public void testNullReturns() throws Exception { + PyDataDescr instance = makeDescriptor(new DescSetup() { + public void setup(DescriptorExposer de) { + de.addFieldGetter("nullString", STRING); + } + }); + assertEquals(Py.None, instance.__get__(se, PY_TYPE)); + } + public void testMethodSetter() throws Exception { PyDataDescr instance = makeDescriptor(new DescSetup() { @@ -224,5 +234,7 @@ public boolean bool; public String toStringVal = SimpleExposed.TO_STRING_RETURN; + + public String nullString = null; } } Modified: branches/astwrite/tests/java/org/python/expose/generate/ExposedTypeProcessorTest.java =================================================================== --- branches/astwrite/tests/java/org/python/expose/generate/ExposedTypeProcessorTest.java 2008-12-03 17:59:13 UTC (rev 5683) +++ branches/astwrite/tests/java/org/python/expose/generate/ExposedTypeProcessorTest.java 2008-12-03 18:28:54 UTC (rev 5684) @@ -18,7 +18,7 @@ .getResourceAsStream("org/python/expose/generate/SimpleExposed.class"); ExposedTypeProcessor ice = new ExposedTypeProcessor(in); assertEquals("simpleexposed", ice.getName()); - assertEquals(18, ice.getMethodExposers().size()); + assertEquals(19, ice.getMethodExposers().size()); assertNotNull(ice.getNewExposer()); assertEquals(1, ice.getDescriptorExposers().size()); assertEquals("simpleexposed", ice.getTypeExposer().getName()); Modified: branches/astwrite/tests/java/org/python/expose/generate/MethodExposerTest.java =================================================================== --- branches/astwrite/tests/java/org/python/expose/generate/MethodExposerTest.java 2008-12-03 17:59:13 UTC (rev 5683) +++ branches/astwrite/tests/java/org/python/expose/generate/MethodExposerTest.java 2008-12-03 18:28:54 UTC (rev 5684) @@ -189,6 +189,10 @@ assertEquals("a", createBound("charReturn", CHAR).__call__().toString()); } + public void testNullReturns() throws Exception { + assertEquals(Py.None, createBound("stringReturnNull", STRING).__call__()); + } + public void testClassMethod() throws Exception { ClassMethodExposer exp = new ClassMethodExposer(Type.getType(SimpleExposed.class), Opcodes.ACC_PUBLIC | Opcodes.ACC_STATIC, Modified: branches/astwrite/tests/java/org/python/expose/generate/SimpleExposed.java =================================================================== --- branches/astwrite/tests/java/org/python/expose/generate/SimpleExposed.java 2008-12-03 17:59:13 UTC (rev 5683) +++ branches/astwrite/tests/java/org/python/expose/generate/SimpleExposed.java 2008-12-03 18:28:54 UTC (rev 5684) @@ -123,6 +123,11 @@ return 'a'; } + @ExposedMethod + public String stringReturnNull() { + return null; + } + @ExposedClassMethod public static char classmethod(PyType onType) { return 'a'; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fwi...@us...> - 2008-12-03 17:59:23
|
Revision: 5683 http://jython.svn.sourceforge.net/jython/?rev=5683&view=rev Author: fwierzbicki Date: 2008-12-03 17:59:13 +0000 (Wed, 03 Dec 2008) Log Message: ----------- Now working on Python 2.6 style test_ast again. Modified Paths: -------------- branches/astwrite/Lib/test/test_ast.py branches/astwrite/ast/asdl_antlr.py branches/astwrite/src/org/python/antlr/AST.java branches/astwrite/src/org/python/antlr/PythonTree.java branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java branches/astwrite/src/org/python/antlr/ast/Add.java branches/astwrite/src/org/python/antlr/ast/And.java branches/astwrite/src/org/python/antlr/ast/Assert.java branches/astwrite/src/org/python/antlr/ast/Assign.java branches/astwrite/src/org/python/antlr/ast/AstModule.java branches/astwrite/src/org/python/antlr/ast/Attribute.java branches/astwrite/src/org/python/antlr/ast/AugAssign.java branches/astwrite/src/org/python/antlr/ast/AugLoad.java branches/astwrite/src/org/python/antlr/ast/AugStore.java branches/astwrite/src/org/python/antlr/ast/BinOp.java branches/astwrite/src/org/python/antlr/ast/BitAnd.java branches/astwrite/src/org/python/antlr/ast/BitOr.java branches/astwrite/src/org/python/antlr/ast/BitXor.java branches/astwrite/src/org/python/antlr/ast/BoolOp.java branches/astwrite/src/org/python/antlr/ast/Break.java branches/astwrite/src/org/python/antlr/ast/Call.java branches/astwrite/src/org/python/antlr/ast/ClassDef.java branches/astwrite/src/org/python/antlr/ast/Compare.java branches/astwrite/src/org/python/antlr/ast/Continue.java branches/astwrite/src/org/python/antlr/ast/Del.java branches/astwrite/src/org/python/antlr/ast/Delete.java branches/astwrite/src/org/python/antlr/ast/Dict.java branches/astwrite/src/org/python/antlr/ast/Div.java branches/astwrite/src/org/python/antlr/ast/Ellipsis.java branches/astwrite/src/org/python/antlr/ast/Eq.java branches/astwrite/src/org/python/antlr/ast/ExceptHandler.java branches/astwrite/src/org/python/antlr/ast/Exec.java branches/astwrite/src/org/python/antlr/ast/Expr.java branches/astwrite/src/org/python/antlr/ast/Expression.java branches/astwrite/src/org/python/antlr/ast/ExtSlice.java branches/astwrite/src/org/python/antlr/ast/FloorDiv.java branches/astwrite/src/org/python/antlr/ast/For.java branches/astwrite/src/org/python/antlr/ast/FunctionDef.java branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java branches/astwrite/src/org/python/antlr/ast/Global.java branches/astwrite/src/org/python/antlr/ast/Gt.java branches/astwrite/src/org/python/antlr/ast/GtE.java branches/astwrite/src/org/python/antlr/ast/If.java branches/astwrite/src/org/python/antlr/ast/IfExp.java branches/astwrite/src/org/python/antlr/ast/Import.java branches/astwrite/src/org/python/antlr/ast/ImportFrom.java branches/astwrite/src/org/python/antlr/ast/In.java branches/astwrite/src/org/python/antlr/ast/Index.java branches/astwrite/src/org/python/antlr/ast/Interactive.java branches/astwrite/src/org/python/antlr/ast/Invert.java branches/astwrite/src/org/python/antlr/ast/Is.java branches/astwrite/src/org/python/antlr/ast/IsNot.java branches/astwrite/src/org/python/antlr/ast/LShift.java branches/astwrite/src/org/python/antlr/ast/Lambda.java branches/astwrite/src/org/python/antlr/ast/List.java branches/astwrite/src/org/python/antlr/ast/ListComp.java branches/astwrite/src/org/python/antlr/ast/Load.java branches/astwrite/src/org/python/antlr/ast/Lt.java branches/astwrite/src/org/python/antlr/ast/LtE.java branches/astwrite/src/org/python/antlr/ast/Mod.java branches/astwrite/src/org/python/antlr/ast/Module.java branches/astwrite/src/org/python/antlr/ast/Mult.java branches/astwrite/src/org/python/antlr/ast/Name.java branches/astwrite/src/org/python/antlr/ast/Not.java branches/astwrite/src/org/python/antlr/ast/NotEq.java branches/astwrite/src/org/python/antlr/ast/NotIn.java branches/astwrite/src/org/python/antlr/ast/Num.java branches/astwrite/src/org/python/antlr/ast/Or.java branches/astwrite/src/org/python/antlr/ast/Param.java branches/astwrite/src/org/python/antlr/ast/Pass.java branches/astwrite/src/org/python/antlr/ast/Pow.java branches/astwrite/src/org/python/antlr/ast/Print.java branches/astwrite/src/org/python/antlr/ast/RShift.java branches/astwrite/src/org/python/antlr/ast/Raise.java branches/astwrite/src/org/python/antlr/ast/Repr.java branches/astwrite/src/org/python/antlr/ast/Return.java branches/astwrite/src/org/python/antlr/ast/Slice.java branches/astwrite/src/org/python/antlr/ast/Store.java branches/astwrite/src/org/python/antlr/ast/Str.java branches/astwrite/src/org/python/antlr/ast/Sub.java branches/astwrite/src/org/python/antlr/ast/Subscript.java branches/astwrite/src/org/python/antlr/ast/Suite.java branches/astwrite/src/org/python/antlr/ast/TryExcept.java branches/astwrite/src/org/python/antlr/ast/TryFinally.java branches/astwrite/src/org/python/antlr/ast/Tuple.java branches/astwrite/src/org/python/antlr/ast/UAdd.java branches/astwrite/src/org/python/antlr/ast/USub.java branches/astwrite/src/org/python/antlr/ast/UnaryOp.java branches/astwrite/src/org/python/antlr/ast/VisitorBase.java branches/astwrite/src/org/python/antlr/ast/While.java branches/astwrite/src/org/python/antlr/ast/With.java branches/astwrite/src/org/python/antlr/ast/Yield.java branches/astwrite/src/org/python/antlr/ast/aliasType.java branches/astwrite/src/org/python/antlr/ast/argumentsType.java branches/astwrite/src/org/python/antlr/ast/boolopType.java branches/astwrite/src/org/python/antlr/ast/cmpopType.java branches/astwrite/src/org/python/antlr/ast/comprehensionType.java branches/astwrite/src/org/python/antlr/ast/excepthandlerType.java branches/astwrite/src/org/python/antlr/ast/exprType.java branches/astwrite/src/org/python/antlr/ast/expr_contextType.java branches/astwrite/src/org/python/antlr/ast/keywordType.java branches/astwrite/src/org/python/antlr/ast/modType.java branches/astwrite/src/org/python/antlr/ast/operatorType.java branches/astwrite/src/org/python/antlr/ast/sliceType.java branches/astwrite/src/org/python/antlr/ast/stmtType.java branches/astwrite/src/org/python/antlr/ast/unaryopType.java branches/astwrite/src/org/python/core/AstList.java Modified: branches/astwrite/Lib/test/test_ast.py =================================================================== --- branches/astwrite/Lib/test/test_ast.py 2008-12-03 14:43:11 UTC (rev 5682) +++ branches/astwrite/Lib/test/test_ast.py 2008-12-03 17:59:13 UTC (rev 5683) @@ -1,21 +1,22 @@ -#Taken and modified from CPython's release25-maint branch, revision 62446. -import sys,os, itertools +import sys, itertools, unittest +from test import test_support import ast def to_tuple(t): if t is None or isinstance(t, (basestring, int, long, complex)): return t - elif hasattr(t, '__iter__'): + elif hasattr(t, "__iter__"): return [to_tuple(e) for e in t] result = [t.__class__.__name__] if hasattr(t, 'lineno') and hasattr(t, 'col_offset'): result.append((t.lineno, t.col_offset)) - if not hasattr(t, '_fields') or t._fields is None: + if t._fields is None: return tuple(result) for f in t._fields: result.append(to_tuple(getattr(t, f))) return tuple(result) + # These tests are compiled through "exec" # There should be atleast one test per statement exec_tests = [ @@ -119,49 +120,179 @@ # TODO: expr_context, slice, boolop, operator, unaryop, cmpop, comprehension # excepthandler, arguments, keywords, alias -if __name__=='__main__' and sys.argv[1:] == ['-g']: - for statements, kind in ((exec_tests, "exec"), (single_tests, "single"), - (eval_tests, "eval")): - print kind+"_results = [" - for s in statements: - print repr(to_tuple(compile(s, "?", kind, 0x400)))+"," - print "]" - print "run_tests()" - raise SystemExit +class AST_Tests(unittest.TestCase): -def test_order(ast_node, parent_pos): - - if (not isinstance(ast_node, ast.AST) - or not hasattr(ast_node, '_fields') - or ast_node._fields == None): + def _assert_order(self, ast_node, parent_pos): + if not isinstance(ast_node, ast.AST) or ast_node._fields is None: return - if isinstance(ast_node, (ast.expr, ast.stmt, ast.excepthandler)): - node_pos = (ast_node.lineno, ast_node.col_offset) - assert node_pos >= parent_pos, (node_pos, parent_pos) - parent_pos = (ast_node.lineno, ast_node.col_offset) - for name in ast_node._fields: - value = getattr(ast_node, name) - if hasattr(value, '__iter__'): - for child in value: - test_order(child, parent_pos) - elif value != None: - test_order(value, parent_pos) + if isinstance(ast_node, (ast.expr, ast.stmt, ast.excepthandler)): + node_pos = (ast_node.lineno, ast_node.col_offset) + self.assert_(node_pos >= parent_pos) + parent_pos = (ast_node.lineno, ast_node.col_offset) + for name in ast_node._fields: + value = getattr(ast_node, name) + if hasattr(value, "__iter__"): + for child in value: + self._assert_order(child, parent_pos) + elif value is not None: + self._assert_order(value, parent_pos) -def run_tests(): - for input, output, kind in ((exec_tests, exec_results, "exec"), - (single_tests, single_results, "single"), - (eval_tests, eval_results, "eval")): - for i, o in itertools.izip(input, output): - ast_tree = compile(i, "?", kind, 0x400) - assert to_tuple(ast_tree) == o, "expected %s, got %s" % ( - o, to_tuple(ast_tree)) - test_order(ast_tree, (0, 0)) + def test_snippets(self): + for input, output, kind in ((exec_tests, exec_results, "exec"), + (single_tests, single_results, "single"), + (eval_tests, eval_results, "eval")): + for i, o in itertools.izip(input, output): + ast_tree = compile(i, "?", kind, ast.PyCF_ONLY_AST) + self.assertEquals(to_tuple(ast_tree), o) + self._assert_order(ast_tree, (0, 0)) -# XXX: AugStore added for Jython. Short term it is too hard to emit just "Store" as CPython does. + def test_nodeclasses(self): + x = ast.BinOp(1, 2, 3, lineno=0) + self.assertEquals(x.left.n, 1) + self.assertEquals(int(x.op), 2) + self.assertEquals(x.right.n, 3) + self.assertEquals(x.lineno, 0) + + # node raises exception when not given enough arguments + self.assertRaises(TypeError, ast.BinOp, 1, 2) + + # can set attributes through kwargs too + x = ast.BinOp(left=1, op=2, right=3, lineno=0) + self.assertEquals(x.left.n, 1) + self.assertEquals(int(x.op), 2) + self.assertEquals(x.right.n, 3) + self.assertEquals(x.lineno, 0) + + # this used to fail because Sub._fields was None + x = ast.Sub() + + def test_pickling(self): + import pickle + mods = [pickle] + try: + import cPickle + mods.append(cPickle) + except ImportError: + pass + protocols = [0, 1, 2] + for mod in mods: + for protocol in protocols: + for ast in (compile(i, "?", "exec", 0x400) for i in exec_tests): + ast2 = mod.loads(mod.dumps(ast, protocol)) + self.assertEquals(to_tuple(ast2), to_tuple(ast)) + + +class ASTHelpers_Test(unittest.TestCase): + + def test_parse(self): + a = ast.parse('foo(1 + 1)') + b = compile('foo(1 + 1)', '<unknown>', 'exec', ast.PyCF_ONLY_AST) + self.assertEqual(ast.dump(a), ast.dump(b)) + + def test_dump(self): + node = ast.parse('spam(eggs, "and cheese")') + self.assertEqual(ast.dump(node), + "Module(body=[Expr(value=Call(func=Name(id='spam', ctx=Load()), " + "args=[Name(id='eggs', ctx=Load()), Str(s='and cheese')], " + "keywords=[], starargs=None, kwargs=None))])" + ) + self.assertEqual(ast.dump(node, annotate_fields=False), + "Module([Expr(Call(Name('spam', Load()), [Name('eggs', Load()), " + "Str('and cheese')], [], None, None))])" + ) + self.assertEqual(ast.dump(node, include_attributes=True), + "Module(body=[Expr(value=Call(func=Name(id='spam', ctx=Load(), " + "lineno=1, col_offset=0), args=[Name(id='eggs', ctx=Load(), " + "lineno=1, col_offset=5), Str(s='and cheese', lineno=1, " + "col_offset=11)], keywords=[], starargs=None, kwargs=None, " + "lineno=1, col_offset=0), lineno=1, col_offset=0)])" + ) + + def test_copy_location(self): + src = ast.parse('1 + 1', mode='eval') + src.body.right = ast.copy_location(ast.Num(2), src.body.right) + self.assertEqual(ast.dump(src, include_attributes=True), + 'Expression(body=BinOp(left=Num(n=1, lineno=1, col_offset=0), ' + 'op=Add(), right=Num(n=2, lineno=1, col_offset=4), lineno=1, ' + 'col_offset=0))' + ) + + def test_fix_missing_locations(self): + src = ast.parse('write("spam")') + src.body.append(ast.Expr(ast.Call(ast.Name('spam', ast.Load()), + [ast.Str('eggs')], [], None, None))) + self.assertEqual(src, ast.fix_missing_locations(src)) + self.assertEqual(ast.dump(src, include_attributes=True), + "Module(body=[Expr(value=Call(func=Name(id='write', ctx=Load(), " + "lineno=1, col_offset=0), args=[Str(s='spam', lineno=1, " + "col_offset=6)], keywords=[], starargs=None, kwargs=None, " + "lineno=1, col_offset=0), lineno=1, col_offset=0), " + "Expr(value=Call(func=Name(id='spam', ctx=Load(), lineno=1, " + "col_offset=0), args=[Str(s='eggs', lineno=1, col_offset=0)], " + "keywords=[], starargs=None, kwargs=None, lineno=1, " + "col_offset=0), lineno=1, col_offset=0)])" + ) + + def test_increment_lineno(self): + src = ast.parse('1 + 1', mode='eval') + self.assertEqual(ast.increment_lineno(src, n=3), src) + self.assertEqual(ast.dump(src, include_attributes=True), + 'Expression(body=BinOp(left=Num(n=1, lineno=4, col_offset=0), ' + 'op=Add(), right=Num(n=1, lineno=4, col_offset=4), lineno=4, ' + 'col_offset=0))' + ) + + def test_iter_fields(self): + node = ast.parse('foo()', mode='eval') + d = dict(ast.iter_fields(node.body)) + self.assertEqual(d.pop('func').id, 'foo') + self.assertEqual(d, {'keywords': [], 'kwargs': None, + 'args': [], 'starargs': None}) + + def test_iter_child_nodes(self): + node = ast.parse("spam(23, 42, eggs='leek')", mode='eval') + self.assertEqual(len(list(ast.iter_child_nodes(node.body))), 4) + iterator = ast.iter_child_nodes(node.body) + self.assertEqual(next(iterator).id, 'spam') + self.assertEqual(next(iterator).n, 23) + self.assertEqual(next(iterator).n, 42) + self.assertEqual(ast.dump(next(iterator)), + "keyword(arg='eggs', value=Str(s='leek'))" + ) + + def test_get_docstring(self): + node = ast.parse('def foo():\n """line one\n line two"""') + self.assertEqual(ast.get_docstring(node.body[0]), + 'line one\nline two') + + def test_literal_eval(self): + self.assertEqual(ast.literal_eval('[1, 2, 3]'), [1, 2, 3]) + self.assertEqual(ast.literal_eval('{"foo": 42}'), {"foo": 42}) + self.assertEqual(ast.literal_eval('(True, False, None)'), (True, False, None)) + self.assertRaises(ValueError, ast.literal_eval, 'foo()') + + +def test_main(): + test_support.run_unittest(AST_Tests, ASTHelpers_Test) + +def main(): + if __name__ != '__main__': + return + if sys.argv[1:] == ['-g']: + for statements, kind in ((exec_tests, "exec"), (single_tests, "single"), + (eval_tests, "eval")): + print kind+"_results = [" + for s in statements: + print repr(to_tuple(compile(s, "?", kind, 0x400)))+"," + print "]" + print "main()" + raise SystemExit + test_main() + #### EVERYTHING BELOW IS GENERATED ##### exec_results = [ ('Module', [('FunctionDef', (1, 0), 'f', ('arguments', [], None, None, []), [('Pass', (1, 9))], [])]), -('Module', [('ClassDef', (1, 0), 'C', [], [('Pass', (1, 8))],[])]), +('Module', [('ClassDef', (1, 0), 'C', [], [('Pass', (1, 8))], [])]), ('Module', [('FunctionDef', (1, 0), 'f', ('arguments', [], None, None, []), [('Return', (1, 8), ('Num', (1, 15), 1))], [])]), ('Module', [('Delete', (1, 0), [('Name', (1, 4), 'v', ('Del',))])]), ('Module', [('Assign', (1, 0), [('Name', (1, 0), 'v', ('Store',))], ('Num', (1, 4), 1))]), @@ -206,4 +337,4 @@ ('Expression', ('Tuple', (1, 0), [('Num', (1, 0), 1), ('Num', (1, 2), 2), ('Num', (1, 4), 3)], ('Load',))), ('Expression', ('Call', (1, 0), ('Attribute', (1, 0), ('Attribute', (1, 0), ('Attribute', (1, 0), ('Name', (1, 0), 'a', ('Load',)), 'b', ('Load',)), 'c', ('Load',)), 'd', ('Load',)), [('Subscript', (1, 8), ('Attribute', (1, 8), ('Name', (1, 8), 'a', ('Load',)), 'b', ('Load',)), ('Slice', ('Num', (1, 12), 1), ('Num', (1, 14), 2), None), ('Load',))], [], None, None)), ] -run_tests() +main() Modified: branches/astwrite/ast/asdl_antlr.py =================================================================== --- branches/astwrite/ast/asdl_antlr.py 2008-12-03 14:43:11 UTC (rev 5682) +++ branches/astwrite/ast/asdl_antlr.py 2008-12-03 17:59:13 UTC (rev 5683) @@ -9,7 +9,7 @@ import asdl TABSIZE = 4 -MAX_COL = 80 +MAX_COL = 100 def reflow_lines(s, depth): """Reflow the line s indented depth tabs. @@ -58,6 +58,7 @@ if refersToPythonTree: print >> self.file, 'import org.antlr.runtime.CommonToken;' print >> self.file, 'import org.antlr.runtime.Token;' + print >> self.file, 'import org.python.antlr.AST;' print >> self.file, 'import org.python.antlr.PythonTree;' print >> self.file, 'import org.python.antlr.adapter.AstAdapters;' print >> self.file, 'import org.python.core.AstList;' @@ -154,6 +155,7 @@ self.open("%sType" % name, refersToPythonTree=0) self.emit('import org.python.antlr.AST;', depth) self.emit('', 0) + self.emit("public enum %(name)sType {" % locals(), depth) self.emit("UNDEFINED,", depth + 1) for i in range(len(sum.types) - 1): @@ -161,11 +163,6 @@ self.emit("%s," % type.name, depth + 1) self.emit("%s;" % sum.types[len(sum.types) - 1].name, depth + 1) - #XXX - #self.attributes(sum, depth, True); - - self.emit("public %sType __call__() { return this; }" % name, depth + 1) - self.emit("}", depth) self.close() @@ -174,63 +171,91 @@ type = sum.types[i] self.open("%s" % type.name, refersToPythonTree=0) self.emit('import org.python.antlr.AST;', depth) + self.emit('import org.python.antlr.PythonTree;', depth) + self.emit('import org.python.core.Py;', depth) self.emit('import org.python.core.PyObject;', depth) + self.emit('import org.python.core.PyString;', depth) self.emit('import org.python.core.PyType;', depth) + self.emit('import org.python.expose.ExposedGet;', depth) + self.emit('import org.python.expose.ExposedMethod;', depth) + self.emit('import org.python.expose.ExposedNew;', depth) + self.emit('import org.python.expose.ExposedSet;', depth) self.emit('import org.python.expose.ExposedType;', depth) self.emit('', 0) - self.emit('@ExposedType(name = "_ast.%s", base = PyObject.class)' % type.name, depth) - self.emit("public class %s extends AST {" % type.name, depth) + + self.emit('@ExposedType(name = "_ast.%s", base = AST.class)' % type.name, depth) + self.emit("public class %s extends PythonTree {" % type.name, depth) self.emit('public static final PyType TYPE = PyType.fromClass(%s.class);' % type.name, depth + 1) + self.emit('', 0) - self.emit('public int asIndex() {', depth + 1) - self.emit('return asIndex(null);', depth + 2) + self.emit("public %s() {" % (type.name), depth) + self.emit("}", depth) + self.emit('', 0) + + self.emit("public %s(PyType subType) {" % (type.name), depth) + self.emit("super(subType);", depth + 1) + self.emit("}", depth) + self.emit('', 0) + + self.emit("@ExposedNew", depth) + self.emit("@ExposedMethod", depth) + self.emit("public void %s___init__(PyObject[] args, String[] keywords) {}" % type.name, depth) + self.emit('', 0) + + self.attributes(type, depth); + + self.emit('@ExposedMethod', depth + 1) + self.emit('public PyObject __int__() {', depth + 1) + self.emit("return %s___int__();" % type.name, depth + 2) self.emit("}", depth + 1) + self.emit('', 0) - self.emit('public int asIndex(PyObject error) {', depth + 1) - self.emit('return %s;' % str(i + 1), depth + 2) + self.emit("final PyObject %s___int__() {" % type.name, depth + 1) + self.emit('return Py.newInteger(%s);' % str(i + 1), depth + 2) self.emit("}", depth + 1) + self.emit('', 0) self.emit("}", depth) self.close() - def attributes(self, obj, depth, always_emit=False): + def attributes(self, obj, depth): field_list = [] if hasattr(obj, "fields"): for f in obj.fields: - field_list.append('"%s"' % f.name) + field_list.append('new PyString("%s")' % f.name) if len(field_list) > 0: - self.emit("private final static String[] fields = new String[] {%s};" % - ", ".join(field_list), depth+1) - self.emit('@ExposedGet(name = "_fields")', depth) - self.emit("public String[] get_fields() { return fields; }", depth+1) + self.emit("private final static PyString[] fields =", depth + 1) + self.emit("new PyString[] {%s};" % ", ".join(field_list), depth+1) + self.emit('@ExposedGet(name = "_fields")', depth + 1) + self.emit("public PyString[] get_fields() { return fields; }", depth+1) self.emit("", 0) - elif always_emit: - self.emit("private final static String[] fields = new String[0];", depth+1) - self.emit('@ExposedGet(name = "_fields")', depth) - self.emit("public String[] get_fields() { return fields; }", depth+1) + else: + self.emit("private final static PyString[] fields = new PyString[0];", depth+1) + self.emit('@ExposedGet(name = "_fields")', depth + 1) + self.emit("public PyString[] get_fields() { return fields; }", depth+1) self.emit("", 0) att_list = [] if hasattr(obj, "attributes"): for a in obj.attributes: - att_list.append('"%s"' % a.name) + att_list.append('new PyString("%s")' % a.name) if len(att_list) > 0: - self.emit("private final static String[] attributes = new String[] {%s};" % - ", ".join(att_list), depth+1) - self.emit('@ExposedGet(name = "_attributes")', depth) - self.emit("public String[] get_attributes() { return attributes; }", depth+1) + self.emit("private final static PyString[] attributes =", depth + 1) + self.emit("new PyString[] {%s};" % ", ".join(att_list), depth + 1) + self.emit('@ExposedGet(name = "_attributes")', depth + 1) + self.emit("public PyString[] get_attributes() { return attributes; }", depth + 1) self.emit("", 0) - elif always_emit: - self.emit("private final static String[] attributes = new String[0];", depth+1) - self.emit('@ExposedGet(name = "_attributes")', depth) - self.emit("public String[] get_attributes() { return attributes; }", depth+1) + else: + self.emit("private final static PyString[] attributes = new PyString[0];", depth+1) + self.emit('@ExposedGet(name = "_attributes")', depth + 1) + self.emit("public PyString[] get_attributes() { return attributes; }", depth+1) self.emit("", 0) def sum_with_constructor(self, sum, name, depth): self.open("%sType" % name) - self.emit('@ExposedType(name = "_ast.%s", base = PyObject.class)' % name, depth) + self.emit('@ExposedType(name = "_ast.%s", base = AST.class)' % name, depth) self.emit("public abstract class %(name)sType extends PythonTree {" % locals(), depth) self.emit("", 0) @@ -269,7 +294,7 @@ def visitProduct(self, product, name, depth): self.open("%sType" % name, useDataOutput=1) - self.emit('@ExposedType(name = "_ast.%s", base = PyObject.class)' % name, depth) + self.emit('@ExposedType(name = "_ast.%s", base = AST.class)' % name, depth) self.emit("public class %(name)sType extends PythonTree {" % locals(), depth) self.emit("public static final PyType TYPE = PyType.fromClass(%sType.class);" % name, depth + 1); for f in product.fields: @@ -294,7 +319,7 @@ s = "implements %s " % ", ".join(ifaces) else: s = "" - self.emit('@ExposedType(name = "_ast.%s", base = PyObject.class)' % cons.name, depth); + self.emit('@ExposedType(name = "_ast.%s", base = AST.class)' % cons.name, depth); self.emit("public class %s extends %sType %s{" % (cons.name, name, s), depth) self.emit("public static final PyType TYPE = PyType.fromClass(%s.class);" % cons.name, depth); @@ -315,7 +340,7 @@ if str(name) in ('stmt', 'expr', 'excepthandler'): # The lineno property self.emit("private int lineno = -1;", depth + 1) - self.emit('@ExposedGet(name = "lineno")', depth) + self.emit('@ExposedGet(name = "lineno")', depth + 1) self.emit("public int getLineno() {", depth + 1) self.emit("if (lineno != -1) {", depth + 2); self.emit("return lineno;", depth + 3); @@ -323,7 +348,7 @@ self.emit('return getLine();', depth + 2) self.emit("}", depth + 1) self.emit("", 0) - self.emit('@ExposedSet(name = "lineno")', depth) + self.emit('@ExposedSet(name = "lineno")', depth + 1) self.emit("public void setLineno(int num) {", depth + 1) self.emit("lineno = num;", depth + 2); self.emit("}", depth + 1) @@ -331,7 +356,7 @@ # The col_offset property self.emit("private int col_offset = -1;", depth + 1) - self.emit('@ExposedGet(name = "col_offset")', depth) + self.emit('@ExposedGet(name = "col_offset")', depth + 1) self.emit("public int getCol_offset() {", depth + 1) self.emit("if (col_offset != -1) {", depth + 2); self.emit("return col_offset;", depth + 3); @@ -339,7 +364,7 @@ self.emit('return getCharPositionInLine();', depth + 2) self.emit("}", depth + 1) self.emit("", 0) - self.emit('@ExposedSet(name = "col_offset")', depth) + self.emit('@ExposedSet(name = "col_offset")', depth + 1) self.emit("public void setCol_offset(int num) {", depth + 1) self.emit("col_offset = num;", depth + 2); self.emit("}", depth + 1) @@ -443,7 +468,7 @@ self.emit("@ExposedNew", depth) self.emit("@ExposedMethod", depth) - self.emit("public void Module___init__(PyObject[] args, String[] keywords) {}", depth) + self.emit("public void %s___init__(PyObject[] args, String[] keywords) {}" % ctorname, depth) fpargs = ", ".join(["PyObject %s" % f.name for f in fields]) self.emit("public %s(%s) {" % (ctorname, fpargs), depth) @@ -503,7 +528,7 @@ elif str(field.type) == 'int': self.emit("return Py.newInteger(%s);" % field.name, depth+1) elif field.typedef.simple: - self.emit("return AstAdapters.%s2py(%s);" % (field.name, field.name), depth+1) + self.emit("return AstAdapters.%s2py(%s);" % (str(field.type), field.name), depth+1) else: self.emit("return %s;" % field.name, depth+1) #self.emit("return Py.None;", depth+1) Modified: branches/astwrite/src/org/python/antlr/AST.java =================================================================== --- branches/astwrite/src/org/python/antlr/AST.java 2008-12-03 14:43:11 UTC (rev 5682) +++ branches/astwrite/src/org/python/antlr/AST.java 2008-12-03 17:59:13 UTC (rev 5683) @@ -5,8 +5,14 @@ import org.python.expose.ExposedType; @ExposedType(name = "_ast.AST", base = PyObject.class) -public abstract class AST extends PyObject { +public class AST extends PyObject { public static final PyType TYPE = PyType.fromClass(AST.class); - public static String[] emptyStringArray = new String[0]; + + public AST() { + } + public AST(PyType objtype) { + super(objtype); + } + } Modified: branches/astwrite/src/org/python/antlr/PythonTree.java =================================================================== --- branches/astwrite/src/org/python/antlr/PythonTree.java 2008-12-03 14:43:11 UTC (rev 5682) +++ branches/astwrite/src/org/python/antlr/PythonTree.java 2008-12-03 17:59:13 UTC (rev 5683) @@ -250,14 +250,6 @@ throw new RuntimeException("Cannot traverse node: " + this); } - public String[] get_fields() { - return emptyStringArray; - } - - public String[] get_attributes() { - return emptyStringArray; - } - //Copied from org.antlr.runtime.tree.BaseTree protected List children; Modified: branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java 2008-12-03 14:43:11 UTC (rev 5682) +++ branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java 2008-12-03 17:59:13 UTC (rev 5683) @@ -97,12 +97,19 @@ public static operatorType py2operator(Object o) { if (o == null || o instanceof operatorType) { return (operatorType)o; + } else if (o instanceof PyObject) { + switch (((PyObject)o).asInt()) { + case 1: + return operatorType.Add; + case 2: + return operatorType.Sub; + } } //FIXME: investigate the right exception throw Py.TypeError("Can't convert " + o.getClass().getName() + " to operator node"); } - public static PyObject op2py(operatorType o) { + public static PyObject operator2py(operatorType o) { switch (o) { case Add: return new Add(); @@ -132,7 +139,7 @@ return Py.None; } - public static PyObject op2py(boolopType o) { + public static PyObject boolop2py(boolopType o) { switch (o) { case And: return new And(); @@ -142,11 +149,11 @@ return Py.None; } - public static PyObject op2py(cmpopType o) { + public static PyObject cmpop2py(cmpopType o) { return cmpopAdapter.ast2py(o); } - public static PyObject op2py(unaryopType o) { + public static PyObject unaryop2py(unaryopType o) { switch (o) { case Invert: return new Invert(); @@ -161,7 +168,7 @@ } - public static PyObject ctx2py(expr_contextType o) { + public static PyObject expr_context2py(expr_contextType o) { switch (o) { case Load: return new Load(); Modified: branches/astwrite/src/org/python/antlr/ast/Add.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Add.java 2008-12-03 14:43:11 UTC (rev 5682) +++ branches/astwrite/src/org/python/antlr/ast/Add.java 2008-12-03 17:59:13 UTC (rev 5683) @@ -2,17 +2,47 @@ package org.python.antlr.ast; import org.python.antlr.AST; +import org.python.antlr.PythonTree; +import org.python.core.Py; import org.python.core.PyObject; +import org.python.core.PyString; import org.python.core.PyType; +import org.python.expose.ExposedGet; +import org.python.expose.ExposedMethod; +import org.python.expose.ExposedNew; +import org.python.expose.ExposedSet; import org.python.expose.ExposedType; -@ExposedType(name = "_ast.Add", base = PyObject.class) -public class Add extends AST { +@ExposedType(name = "_ast.Add", base = AST.class) +public class Add extends PythonTree { public static final PyType TYPE = PyType.fromClass(Add.class); - public int asIndex() { - return asIndex(null); + +public Add() { +} + +public Add(PyType subType) { + super(subType); +} + +@ExposedNew +@ExposedMethod +public void Add___init__(PyObject[] args, String[] keywords) {} + + private final static PyString[] fields = new PyString[0]; + @ExposedGet(name = "_fields") + public PyString[] get_fields() { return fields; } + + private final static PyString[] attributes = new PyString[0]; + @ExposedGet(name = "_attributes") + public PyString[] get_attributes() { return attributes; } + + @ExposedMethod + public PyObject __int__() { + return Add___int__(); } - public int asIndex(PyObject error) { - return 1; + + final PyObject Add___int__() { + return Py.newInteger(1); } + } Modified: branches/astwrite/src/org/python/antlr/ast/And.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/And.java 2008-12-03 14:43:11 UTC (rev 5682) +++ branches/astwrite/src/org/python/antlr/ast/And.java 2008-12-03 17:59:13 UTC (rev 5683) @@ -2,17 +2,47 @@ package org.python.antlr.ast; import org.python.antlr.AST; +import org.python.antlr.PythonTree; +import org.python.core.Py; import org.python.core.PyObject; +import org.python.core.PyString; import org.python.core.PyType; +import org.python.expose.ExposedGet; +import org.python.expose.ExposedMethod; +import org.python.expose.ExposedNew; +import org.python.expose.ExposedSet; import org.python.expose.ExposedType; -@ExposedType(name = "_ast.And", base = PyObject.class) -public class And extends AST { +@ExposedType(name = "_ast.And", base = AST.class) +public class And extends PythonTree { public static final PyType TYPE = PyType.fromClass(And.class); - public int asIndex() { - return asIndex(null); + +public And() { +} + +public And(PyType subType) { + super(subType); +} + +@ExposedNew +@ExposedMethod +public void And___init__(PyObject[] args, String[] keywords) {} + + private final static PyString[] fields = new PyString[0]; + @ExposedGet(name = "_fields") + public PyString[] get_fields() { return fields; } + + private final static PyString[] attributes = new PyString[0]; + @ExposedGet(name = "_attributes") + public PyString[] get_attributes() { return attributes; } + + @ExposedMethod + public PyObject __int__() { + return And___int__(); } - public int asIndex(PyObject error) { - return 1; + + final PyObject And___int__() { + return Py.newInteger(1); } + } Modified: branches/astwrite/src/org/python/antlr/ast/Assert.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Assert.java 2008-12-03 14:43:11 UTC (rev 5682) +++ branches/astwrite/src/org/python/antlr/ast/Assert.java 2008-12-03 17:59:13 UTC (rev 5683) @@ -2,6 +2,7 @@ package org.python.antlr.ast; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; +import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; import org.python.core.AstList; @@ -18,7 +19,7 @@ import java.io.IOException; import java.util.ArrayList; -@ExposedType(name = "_ast.Assert", base = PyObject.class) +@ExposedType(name = "_ast.Assert", base = AST.class) public class Assert extends stmtType { public static final PyType TYPE = PyType.fromClass(Assert.class); private exprType test; @@ -48,10 +49,15 @@ } - private final static String[] fields = new String[] {"test", "msg"}; -@ExposedGet(name = "_fields") - public String[] get_fields() { return fields; } + private final static PyString[] fields = + new PyString[] {new PyString("test"), new PyString("msg")}; + @ExposedGet(name = "_fields") + public PyString[] get_fields() { return fields; } + private final static PyString[] attributes = new PyString[0]; + @ExposedGet(name = "_attributes") + public PyString[] get_attributes() { return attributes; } + public Assert() { this(TYPE); } @@ -60,7 +66,7 @@ } @ExposedNew @ExposedMethod - public void Module___init__(PyObject[] args, String[] keywords) {} + public void Assert___init__(PyObject[] args, String[] keywords) {} public Assert(PyObject test, PyObject msg) { setTest(test); setMsg(msg); @@ -119,7 +125,7 @@ } private int lineno = -1; -@ExposedGet(name = "lineno") + @ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -127,13 +133,13 @@ return getLine(); } -@ExposedSet(name = "lineno") + @ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; -@ExposedGet(name = "col_offset") + @ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -141,7 +147,7 @@ return getCharPositionInLine(); } -@ExposedSet(name = "col_offset") + @ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Modified: branches/astwrite/src/org/python/antlr/ast/Assign.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Assign.java 2008-12-03 14:43:11 UTC (rev 5682) +++ branches/astwrite/src/org/python/antlr/ast/Assign.java 2008-12-03 17:59:13 UTC (rev 5683) @@ -2,6 +2,7 @@ package org.python.antlr.ast; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; +import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; import org.python.core.AstList; @@ -18,7 +19,7 @@ import java.io.IOException; import java.util.ArrayList; -@ExposedType(name = "_ast.Assign", base = PyObject.class) +@ExposedType(name = "_ast.Assign", base = AST.class) public class Assign extends stmtType { public static final PyType TYPE = PyType.fromClass(Assign.class); private java.util.List<exprType> targets; @@ -48,10 +49,15 @@ } - private final static String[] fields = new String[] {"targets", "value"}; -@ExposedGet(name = "_fields") - public String[] get_fields() { return fields; } + private final static PyString[] fields = + new PyString[] {new PyString("targets"), new PyString("value")}; + @ExposedGet(name = "_fields") + public PyString[] get_fields() { return fields; } + private final static PyString[] attributes = new PyString[0]; + @ExposedGet(name = "_attributes") + public PyString[] get_attributes() { return attributes; } + public Assign() { this(TYPE); } @@ -60,14 +66,13 @@ } @ExposedNew @ExposedMethod - public void Module___init__(PyObject[] args, String[] keywords) {} + public void Assign___init__(PyObject[] args, String[] keywords) {} public Assign(PyObject targets, PyObject value) { setTargets(targets); setValue(value); } - public Assign(Token token, java.util.List<exprType> targets, exprType - value) { + public Assign(Token token, java.util.List<exprType> targets, exprType value) { super(token); this.targets = targets; if (targets == null) { @@ -80,8 +85,7 @@ addChild(value); } - public Assign(Integer ttype, Token token, java.util.List<exprType> targets, - exprType value) { + public Assign(Integer ttype, Token token, java.util.List<exprType> targets, exprType value) { super(ttype, token); this.targets = targets; if (targets == null) { @@ -94,8 +98,7 @@ addChild(value); } - public Assign(PythonTree tree, java.util.List<exprType> targets, exprType - value) { + public Assign(PythonTree tree, java.util.List<exprType> targets, exprType value) { super(tree); this.targets = targets; if (targets == null) { @@ -141,7 +144,7 @@ } private int lineno = -1; -@ExposedGet(name = "lineno") + @ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -149,13 +152,13 @@ return getLine(); } -@ExposedSet(name = "lineno") + @ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; -@ExposedGet(name = "col_offset") + @ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -163,7 +166,7 @@ return getCharPositionInLine(); } -@ExposedSet(name = "col_offset") + @ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Modified: branches/astwrite/src/org/python/antlr/ast/AstModule.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/AstModule.java 2008-12-03 14:43:11 UTC (rev 5682) +++ branches/astwrite/src/org/python/antlr/ast/AstModule.java 2008-12-03 17:59:13 UTC (rev 5683) @@ -90,48 +90,48 @@ dict.__setitem__("stmt", stmtType.TYPE); dict.__setitem__("operator", imp.importName("org.python.antlr.ast.operatorType", false)); - dict.__setitem__("Add", imp.importName("org.python.antlr.ast.operatorType.Add", false)); - dict.__setitem__("Sub", imp.importName("org.python.antlr.ast.operatorType.Sub", false)); - dict.__setitem__("Mult", imp.importName("org.python.antlr.ast.operatorType.Mult", false)); - dict.__setitem__("Div", imp.importName("org.python.antlr.ast.operatorType.Div", false)); - dict.__setitem__("FloorDiv", imp.importName("org.python.antlr.ast.operatorType.FloorDiv", false)); - dict.__setitem__("Mod", imp.importName("org.python.antlr.ast.operatorType.Mod", false)); - dict.__setitem__("LShift", imp.importName("org.python.antlr.ast.operatorType.LShift", false)); - dict.__setitem__("RShift", imp.importName("org.python.antlr.ast.operatorType.RShift", false)); - dict.__setitem__("BitOr", imp.importName("org.python.antlr.ast.operatorType.BitOr", false)); - dict.__setitem__("BitAnd", imp.importName("org.python.antlr.ast.operatorType.BitAnd", false)); - dict.__setitem__("BitXor", imp.importName("org.python.antlr.ast.operatorType.BitXor", false)); - dict.__setitem__("Pow", imp.importName("org.python.antlr.ast.operatorType.Pow", false)); + dict.__setitem__("Add", Add.TYPE); + dict.__setitem__("Sub", Sub.TYPE); + dict.__setitem__("Mult", Mult.TYPE); + dict.__setitem__("Div", Div.TYPE); + dict.__setitem__("FloorDiv", FloorDiv.TYPE); + dict.__setitem__("Mod", Mod.TYPE); + dict.__setitem__("LShift", LShift.TYPE); + dict.__setitem__("RShift", RShift.TYPE); + dict.__setitem__("BitOr", BitOr.TYPE); + dict.__setitem__("BitAnd", BitAnd.TYPE); + dict.__setitem__("BitXor", BitXor.TYPE); + dict.__setitem__("Pow", Pow.TYPE); dict.__setitem__("boolop", imp.importName("org.python.antlr.ast.boolopType", false)); - dict.__setitem__("And", imp.importName("org.python.antlr.ast.boolopType.And", false)); - dict.__setitem__("Or", imp.importName("org.python.antlr.ast.boolopType.Or", false)); + dict.__setitem__("And", And.TYPE); + dict.__setitem__("Or", Or.TYPE); dict.__setitem__("cmpop", imp.importName("org.python.antlr.ast.cmpopType", false)); - dict.__setitem__("Eq", imp.importName("org.python.antlr.ast.cmpopType.Eq", false)); - dict.__setitem__("Gt", imp.importName("org.python.antlr.ast.cmpopType.Gt", false)); - dict.__setitem__("GtE", imp.importName("org.python.antlr.ast.cmpopType.GtE", false)); - dict.__setitem__("In", imp.importName("org.python.antlr.ast.cmpopType.In", false)); - dict.__setitem__("Is", imp.importName("org.python.antlr.ast.cmpopType.Is", false)); - dict.__setitem__("IsNot", imp.importName("org.python.antlr.ast.cmpopType.IsNot", false)); - dict.__setitem__("Lt", imp.importName("org.python.antlr.ast.cmpopType.Lt", false)); - dict.__setitem__("LtE", imp.importName("org.python.antlr.ast.cmpopType.LtE", false)); - dict.__setitem__("NotEq", imp.importName("org.python.antlr.ast.cmpopType.NotEq", false)); - dict.__setitem__("NotIn", imp.importName("org.python.antlr.ast.cmpopType.NotIn", false)); + dict.__setitem__("Eq", Eq.TYPE); + dict.__setitem__("Gt", Gt.TYPE); + dict.__setitem__("GtE", GtE.TYPE); + dict.__setitem__("In", In.TYPE); + dict.__setitem__("Is", Is.TYPE); + dict.__setitem__("IsNot", IsNot.TYPE); + dict.__setitem__("Lt", Lt.TYPE); + dict.__setitem__("LtE", LtE.TYPE); + dict.__setitem__("NotEq", NotEq.TYPE); + dict.__setitem__("NotIn", NotIn.TYPE); dict.__setitem__("expr_context", imp.importName("org.python.antlr.ast.expr_contextType", false)); - dict.__setitem__("Load", imp.importName("org.python.antlr.ast.expr_contextType.Load", false)); - dict.__setitem__("Store", imp.importName("org.python.antlr.ast.expr_contextType.Store", false)); - dict.__setitem__("Del", imp.importName("org.python.antlr.ast.expr_contextType.Del", false)); - dict.__setitem__("AugLoad", imp.importName("org.python.antlr.ast.expr_contextType.AugLoad", false)); - dict.__setitem__("AugStore", imp.importName("org.python.antlr.ast.expr_contextType.AugStore", false)); - dict.__setitem__("Param", imp.importName("org.python.antlr.ast.expr_contextType.Param", false)); + dict.__setitem__("Load", Load.TYPE); + dict.__setitem__("Store", Store.TYPE); + dict.__setitem__("Del", Del.TYPE); + dict.__setitem__("AugLoad", AugLoad.TYPE); + dict.__setitem__("AugStore", AugStore.TYPE); + dict.__setitem__("Param", Param.TYPE); dict.__setitem__("unaryop", imp.importName("org.python.antlr.ast.unaryopType", false)); - dict.__setitem__("Invert", imp.importName("org.python.antlr.ast.unaryopType.Invert", false)); - dict.__setitem__("Not", imp.importName("org.python.antlr.ast.unaryopType.Not", false)); - dict.__setitem__("UAdd", imp.importName("org.python.antlr.ast.unaryopType.UAdd", false)); - dict.__setitem__("USub", imp.importName("org.python.antlr.ast.unaryopType.USub", false)); + dict.__setitem__("Invert", Invert.TYPE); + dict.__setitem__("Not", Not.TYPE); + dict.__setitem__("UAdd", UAdd.TYPE); + dict.__setitem__("USub", USub.TYPE); dict.__setitem__("classDictInit", null); } Modified: branches/astwrite/src/org/python/antlr/ast/Attribute.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Attribute.java 2008-12-03 14:43:11 UTC (rev 5682) +++ branches/astwrite/src/org/python/antlr/ast/Attribute.java 2008-12-03 17:59:13 UTC (rev 5683) @@ -2,6 +2,7 @@ package org.python.antlr.ast; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; +import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; import org.python.core.AstList; @@ -18,7 +19,7 @@ import java.io.IOException; import java.util.ArrayList; -@ExposedType(name = "_ast.Attribute", base = PyObject.class) +@ExposedType(name = "_ast.Attribute", base = AST.class) public class Attribute extends exprType implements Context { public static final PyType TYPE = PyType.fromClass(Attribute.class); private exprType value; @@ -54,7 +55,7 @@ } @ExposedGet(name = "ctx") public PyObject getCtx() { - return AstAdapters.ctx2py(ctx); + return AstAdapters.expr_context2py(ctx); } @ExposedSet(name = "ctx") public void setCtx(PyObject ctx) { @@ -62,11 +63,15 @@ } - private final static String[] fields = new String[] {"value", "attr", - "ctx"}; -@ExposedGet(name = "_fields") - public String[] get_fields() { return fields; } + private final static PyString[] fields = + new PyString[] {new PyString("value"), new PyString("attr"), new PyString("ctx")}; + @ExposedGet(name = "_fields") + public PyString[] get_fields() { return fields; } + private final static PyString[] attributes = new PyString[0]; + @ExposedGet(name = "_attributes") + public PyString[] get_attributes() { return attributes; } + public Attribute() { this(TYPE); } @@ -75,15 +80,14 @@ } @ExposedNew @ExposedMethod - public void Module___init__(PyObject[] args, String[] keywords) {} + public void Attribute___init__(PyObject[] args, String[] keywords) {} public Attribute(PyObject value, PyObject attr, PyObject ctx) { setValue(value); setAttr(attr); setCtx(ctx); } - public Attribute(Token token, exprType value, String attr, expr_contextType - ctx) { + public Attribute(Token token, exprType value, String attr, expr_contextType ctx) { super(token); this.value = value; addChild(value); @@ -91,8 +95,8 @@ this.ctx = ctx; } - public Attribute(Integer ttype, Token token, exprType value, String attr, - expr_contextType ctx) { + public Attribute(Integer ttype, Token token, exprType value, String attr, expr_contextType ctx) + { super(ttype, token); this.value = value; addChild(value); @@ -100,8 +104,7 @@ this.ctx = ctx; } - public Attribute(PythonTree tree, exprType value, String attr, - expr_contextType ctx) { + public Attribute(PythonTree tree, exprType value, String attr, expr_contextType ctx) { super(tree); this.value = value; addChild(value); @@ -143,7 +146,7 @@ } private int lineno = -1; -@ExposedGet(name = "lineno") + @ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -151,13 +154,13 @@ return getLine(); } -@ExposedSet(name = "lineno") + @ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; -@ExposedGet(name = "col_offset") + @ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -165,7 +168,7 @@ return getCharPositionInLine(); } -@ExposedSet(name = "col_offset") + @ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Modified: branches/astwrite/src/org/python/antlr/ast/AugAssign.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/AugAssign.java 2008-12-03 14:43:11 UTC (rev 5682) +++ branches/astwrite/src/org/python/antlr/ast/AugAssign.java 2008-12-03 17:59:13 UTC (rev 5683) @@ -2,6 +2,7 @@ package org.python.antlr.ast; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; +import org.python.antlr.AST; import org.python.antlr.PythonTree; import org.python.antlr.adapter.AstAdapters; import org.python.core.AstList; @@ -18,7 +19,7 @@ import java.io.IOException; import java.util.ArrayList; -@ExposedType(name = "_ast.AugAssign", base = PyObject.class) +@ExposedType(name = "_ast.AugAssign", base = AST.class) public class AugAssign extends stmtType { public static final PyType TYPE = PyType.fromClass(AugAssign.class); private exprType target; @@ -40,7 +41,7 @@ } @ExposedGet(name = "op") public PyObject getOp() { - return AstAdapters.op2py(op); + return AstAdapters.operator2py(op); } @ExposedSet(name = "op") public void setOp(PyObject op) { @@ -61,11 +62,15 @@ } - private final static String[] fields = new String[] {"target", "op", - "value"}; -@ExposedGet(name = "_fields") - public String[] get_fields() { return fields; } + private final static PyString[] fields = + new PyString[] {new PyString("target"), new PyString("op"), new PyString("value")}; + @ExposedGet(name = "_fields") + public PyString[] get_fields() { return fields; } + private final static PyString[] attributes = new PyString[0]; + @ExposedGet(name = "_attributes") + public PyString[] get_attributes() { return attributes; } + public AugAssign() { this(TYPE); } @@ -74,15 +79,14 @@ } @ExposedNew @ExposedMethod - public void Module___init__(PyObject[] args, String[] keywords) {} + public void AugAssign___init__(PyObject[] args, String[] keywords) {} public AugAssign(PyObject target, PyObject op, PyObject value) { setTarget(target); setOp(op); setValue(value); } - public AugAssign(Token token, exprType target, operatorType op, exprType - value) { + public AugAssign(Token token, exprType target, operatorType op, exprType value) { super(token); this.target = target; addChild(target); @@ -91,8 +95,7 @@ addChild(value); } - public AugAssign(Integer ttype, Token token, exprType target, operatorType - op, exprType value) { + public AugAssign(Integer ttype, Token token, exprType target, operatorType op, exprType value) { super(ttype, token); this.target = target; addChild(target); @@ -101,8 +104,7 @@ addChild(value); } - public AugAssign(PythonTree tree, exprType target, operatorType op, - exprType value) { + public AugAssign(PythonTree tree, exprType target, operatorType op, exprType value) { super(tree); this.target = target; addChild(target); @@ -143,7 +145,7 @@ } private int lineno = -1; -@ExposedGet(name = "lineno") + @ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -151,13 +153,13 @@ return getLine(); } -@ExposedSet(name = "lineno") + @ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; -@ExposedGet(name = "col_offset") + @ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -165,7 +167,7 @@ return getCharPositionInLine(); } -@ExposedSet(name = "col_offset") + @ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Modified: branches/astwrite/src/org/python/antlr/ast/AugLoad.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/AugLoad.java 2008-12-03 14:43:11 UTC (rev 5682) +++ branches/astwrite/src/org/python/antlr/ast/AugLoad.java 2008-12-03 17:59:13 UTC (rev 5683) @@ -2,17 +2,47 @@ package org.python.antlr.ast; import org.python.antlr.AST; +import org.python.antlr.PythonTree; +import org.python.core.Py; import org.python.core.PyObject; +import org.python.core.PyString; import org.python.core.PyType; +import org.python.expose.ExposedGet; +import org.python.expose.ExposedMethod; +import org.python.expose.ExposedNew; +import org.python.expose.ExposedSet; import org.python.expose.ExposedType; -@ExposedType(name = "_ast.AugLoad", base = PyObject.class) -public class AugLoad extends AST { +@ExposedType(name = "_ast.AugLoad", base = AST.class) +public class AugLoad extends PythonTree { public static final PyType TYPE = PyType.fromClass(AugLoad.class); - public int asIndex() { - return asIndex(null); + +public AugLoad() { +} + +public AugLoad(PyType subType) { + super(subType); +} + +@ExposedNew +@ExposedMethod +public void AugLoad___init__(PyObject[] args, String[] keywords) {} + + private final static PyString[] fields = new PyString[0]; + @ExposedGet(name = "_fields") + public PyString[] get_fields() { return fields; } + + private final static PyString[] attributes = new PyString[0]; + @ExposedGet(name = "_attributes") + public PyString[] get_attributes() { return attributes; } + + @ExposedMethod + public PyObject __int__() { + return AugLoad___int__(); } - public int asIndex(PyObject error) { - return 4; + + final PyObject AugLoad___int__() { + return Py.newInteger(4); } + } Modified: branches/astwrite/src/org/python/antlr/ast/AugStore.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/AugStore.java 2008-12-03 14:43:11 UTC (rev 5682) +++ branches/astwrite/src/org/python/antlr/ast/AugStore.java 2008-12-03 17:59:13 UTC (rev 5683) @@ -2,17 +2,47 @@ package org.python.antlr.ast; import org.python.antlr.AST; +import org.python.antlr.PythonTree; +import org.python.core.Py; import org.python.core.PyObject; +import org.python.core.PyString; import org.python.core.PyType; +import org.python.expose.ExposedGet; +import org.python.expose.ExposedMethod; +import org.python.expose.ExposedNew; +import org.python.expose.ExposedSet; import org.python.expose.ExposedType; -@ExposedType(name = "_ast.AugStore", base = PyObject.class) -public class AugStore extends AST { +@ExposedType(name = "_ast.AugStore", base = AST.class) +public class AugStore extends PythonTree { public static final PyType TYPE = PyType.fromClass(AugStore.class); - public int asIndex() { - return asIndex(null); + +public AugStore() { +} + +public AugStore(PyType subType) { + super(subType); +} + +@ExposedNew +@ExposedMethod +public void AugStore___init__(PyObject[] args, String[] keywords) {} + + private final static PyString[] fields = new PyString[0]; + @ExposedGet(name = "_fields") + public PyString[] get_fields() { return fields; } + + private final static PyString[] attributes = new PyString[0]; + @ExposedGet(name = "_attributes") + public PyString[] get_attributes() { return attributes; } + + @ExposedMethod + public PyObject __int__() { + return AugStore___int__(); } - public int asIndex(PyObject error) { - return 5; + + final PyObject AugStore___int__() { + return Py.newInteger(5); } + } Modified: branches/astwrite/src/org/python/antlr/... [truncated message content] |
From: <otm...@us...> - 2008-12-03 14:43:15
|
Revision: 5682 http://jython.svn.sourceforge.net/jython/?rev=5682&view=rev Author: otmarhumbel Date: 2008-12-03 14:43:11 +0000 (Wed, 03 Dec 2008) Log Message: ----------- added tests for issue #1187 Modified Paths: -------------- trunk/jython/Lib/test/test_subprocess_jy.py Modified: trunk/jython/Lib/test/test_subprocess_jy.py =================================================================== --- trunk/jython/Lib/test/test_subprocess_jy.py 2008-12-03 09:39:46 UTC (rev 5681) +++ trunk/jython/Lib/test/test_subprocess_jy.py 2008-12-03 14:43:11 UTC (rev 5682) @@ -14,10 +14,30 @@ stdout=PIPE) self.assertEquals('something', p1.stdout.read()) + +# tests for (some parts of) issue #1187: JYTHON_OPTS should not be enriched by arguments +class JythonOptsTest(unittest.TestCase): + def testNoJythonOpts(self): + os.environ['JYTHON_OPTS'] = '' + p1 = Popen([sys.executable, "-c", + 'import os, sys; sys.stdout.write(os.environ["JYTHON_OPTS"])'], + stdout=PIPE) + self.assertEquals('', p1.stdout.read()) + + def testExistingJythonOpts(self): + options = '-Qold -Qwarn' + os.environ['JYTHON_OPTS'] = options + p1 = Popen([sys.executable, "-c", + 'import os, sys; sys.stdout.write(os.environ["JYTHON_OPTS"])'], + stdout=PIPE) + self.assertEquals(options, p1.stdout.read()) + def test_main(): - test_support.run_unittest(EnvironmentInheritanceTest) + test_classes = ( + EnvironmentInheritanceTest, + JythonOptsTest, + ) + test_support.run_unittest(*test_classes) if __name__ == '__main__': test_main() - - This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nr...@us...> - 2008-12-03 09:39:49
|
Revision: 5681 http://jython.svn.sourceforge.net/jython/?rev=5681&view=rev Author: nriley Date: 2008-12-03 09:39:46 +0000 (Wed, 03 Dec 2008) Log Message: ----------- --print option for start script Modified Paths: -------------- trunk/jython/src/shell/jython Modified: trunk/jython/src/shell/jython =================================================================== --- trunk/jython/src/shell/jython 2008-12-03 09:30:15 UTC (rev 5680) +++ trunk/jython/src/shell/jython 2008-12-03 09:39:46 UTC (rev 5681) @@ -125,6 +125,10 @@ -D*) python_args=("${python_args[@]}" "$1") ;; + # Print the command, don't execute it + --print) + print_requested=true + ;; # Run with the instrumented profiler: http://jiprof.sourceforge.net/ --profile) rm -f profile.txt # XXX do this? @@ -197,12 +201,17 @@ [ -n "$profile_requested" ] && echo "Running with instrumented profiler" java_args=("${java_args[@]}" -classpath "$CP$CP_DELIMITER$CLASSPATH") else - if [ -z "$help_requested" ] ; then + if [ -z "$help_requested" -a -z "$print_requested" ] ; then JAVA_CMD=(exec "${JAVA_CMD[@]}") fi - java_args=("${java_args[@]}" -Xbootclasspath/a:"$CP" -classpath "$CLASSPATH") + java_args=("${java_args[@]}" -Xbootclasspath/a:"$CP") + [ -n "$CLASSPATH" ] && java_args=("${java_args[@]}" -classpath "$CLASSPATH") fi +if [ -n "$print_requested" ] ; then + JAVA_CMD=(echo $JAVA_CMD) +fi + "${JAVA_CMD[@]}" $JAVA_OPTS "${java_args[@]}" -Dpython.home="$JYTHON_HOME" \ -Dpython.executable="$PRG" org.python.util.jython $JYTHON_OPTS "$@" @@ -213,6 +222,7 @@ echo "Jython launcher options:" >&2 echo "-Jarg : pass argument through to Java VM (e.g. -J-Xmx512m)" >&2 echo "--jdb : run under JDB" >&2 + echo "--print : print the Java command instead of executing it" >&2 echo "--profile: run with the Java Interactive Profiler (http://jiprof.sf.net)" >&2 echo "--verify : enable bytecode verifier for Jython classes (for development)" >&2 echo "-- : pass remaining arguments through to Jython" >&2 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <otm...@us...> - 2008-12-03 09:30:20
|
Revision: 5680 http://jython.svn.sourceforge.net/jython/?rev=5680&view=rev Author: otmarhumbel Date: 2008-12-03 09:30:15 +0000 (Wed, 03 Dec 2008) Log Message: ----------- prevent JYTHON_OPTS from being enriched with arguments (this could lead to an infinite recursion of subprocesses) test_subprocess_jy.py now passes issue #1187 is fixed now Modified Paths: -------------- trunk/jython/src/shell/jython.bat Modified: trunk/jython/src/shell/jython.bat =================================================================== --- trunk/jython/src/shell/jython.bat 2008-12-03 04:38:04 UTC (rev 5679) +++ trunk/jython/src/shell/jython.bat 2008-12-03 09:30:15 UTC (rev 5680) @@ -24,6 +24,13 @@ set _JAVA_CMD="%JAVA_HOME:"=%\bin\java" ) +rem remove surrounding quotes from jython opts, to be able to safely empty-test it +set _TRIMMED_JYTHON_OPTS=%JYTHON_OPTS% +for /f "useback tokens=*" %%a in ('%_TRIMMED_JYTHON_OPTS%') do set _TRIMMED_JYTHON_OPTS=%%~a +if not "%_TRIMMED_JYTHON_OPTS%"=="" ( + set _JYTHON_OPTS="%_TRIMMED_JYTHON_OPTS%" +) + rem remove surrounding quotes from jython home, to be able to safely empty-test it set _TRIMMED_JYTHON_HOME=%JYTHON_HOME% for /f "useback tokens=*" %%a in ('%_TRIMMED_JYTHON_HOME%') do set _TRIMMED_JYTHON_HOME=%%~a @@ -81,6 +88,7 @@ set _ARGS=%_ARGS:"=_D% set _ARGS="%_ARGS%" +set _JYTHON_ARGS= :scanArgs rem split args by spaces into first and rest @@ -134,7 +142,7 @@ if "%_CMP2:"=\\%" == "-J" goto jvmArg :jythonArg -set JYTHON_OPTS=%JYTHON_OPTS% %_CMP% +set _JYTHON_ARGS=%_JYTHON_ARGS% %_CMP% goto nextArg :jvmArg @@ -153,7 +161,7 @@ goto scanArgs :argsDone -%_JAVA_CMD% %_JAVA_OPTS% %_JAVA_STACK% -Xbootclasspath/a:%_CP% -Dpython.home=%_JYTHON_HOME% -Dpython.executable="%~f0" -classpath "%CLASSPATH%" org.python.util.jython %JYTHON_OPTS% %_ARGS% +%_JAVA_CMD% %_JAVA_OPTS% %_JAVA_STACK% -Xbootclasspath/a:%_CP% -Dpython.home=%_JYTHON_HOME% -Dpython.executable="%~f0" -classpath "%CLASSPATH%" org.python.util.jython %_JYTHON_OPTS% %_JYTHON_ARGS% %_ARGS% set E=%ERRORLEVEL% :cleanup @@ -166,8 +174,11 @@ set _JAVA_OPTS= set _JAVA_STACK= set _JYTHON_HOME= +set _JYTHON_OPTS= +set _JYTHON_ARGS= set _TRIMMED_JAVA_HOME= set _TRIMMED_JYTHON_HOME= +set _TRIMMED_JYTHON_OPTS= :finish exit /b %E% This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fwi...@us...> - 2008-12-03 04:38:08
|
Revision: 5679 http://jython.svn.sourceforge.net/jython/?rev=5679&view=rev Author: fwierzbicki Date: 2008-12-03 04:38:04 +0000 (Wed, 03 Dec 2008) Log Message: ----------- Enough to get a slightly modified Python 2.5 test_ast.py to pass. Modified Paths: -------------- branches/astwrite/Lib/test/test_ast.py branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java branches/astwrite/src/org/python/antlr/adapter/CmpopAdapter.java branches/astwrite/src/org/python/antlr/adapter/IdentifierAdapter.java branches/astwrite/src/org/python/core/AstList.java Added Paths: ----------- branches/astwrite/src/org/python/antlr/ast/FloorDiv.java branches/astwrite/src/org/python/antlr/ast/NotIn.java branches/astwrite/src/org/python/antlr/ast/Or.java branches/astwrite/src/org/python/antlr/ast/Param.java branches/astwrite/src/org/python/antlr/ast/USub.java Modified: branches/astwrite/Lib/test/test_ast.py =================================================================== --- branches/astwrite/Lib/test/test_ast.py 2008-12-02 22:23:33 UTC (rev 5678) +++ branches/astwrite/Lib/test/test_ast.py 2008-12-03 04:38:04 UTC (rev 5679) @@ -2,27 +2,12 @@ import sys,os, itertools import ast -def get_class_name(t): - result = t.__class__.__name__ - if os.name.startswith('java'): - if result in ("expr_contextType", - "boolopType", - "unaryopType", - "cmpopType", - "operatorType"): - result = t.name() - else: - result = result.split(".")[-1] - if result.endswith("Type"): - result = result[:-4] - return result - def to_tuple(t): if t is None or isinstance(t, (basestring, int, long, complex)): return t elif hasattr(t, '__iter__'): return [to_tuple(e) for e in t] - result = [get_class_name(t)] + result = [t.__class__.__name__] if hasattr(t, 'lineno') and hasattr(t, 'col_offset'): result.append((t.lineno, t.col_offset)) if not hasattr(t, '_fields') or t._fields is None: @@ -186,11 +171,11 @@ ('Module', [('While', (1, 0), ('Name', (1, 6), 'v', ('Load',)), [('Pass', (1, 8))], [])]), ('Module', [('If', (1, 0), ('Name', (1, 3), 'v', ('Load',)), [('Pass', (1, 5))], [])]), ('Module', [('Raise', (1, 0), ('Name', (1, 6), 'Exception', ('Load',)), ('Str', (1, 17), 'string'), None)]), -('Module', [('TryExcept', (1, 0), [('Pass', (2, 2))], [('excepthandler', (3, 0), ('Name', (3, 7), 'Exception', ('Load',)), None, [('Pass', (4, 2))], 3, 0)], [])]), +('Module', [('TryExcept', (1, 0), [('Pass', (2, 2))], [('ExceptHandler', (3, 0), ('Name', (3, 7), 'Exception', ('Load',)), None, [('Pass', (4, 2))])], [])]), ('Module', [('TryFinally', (1, 0), [('Pass', (2, 2))], [('Pass', (4, 2))])]), ('Module', [('Assert', (1, 0), ('Name', (1, 7), 'v', ('Load',)), None)]), -('Module', [('Import', (1, 0), [('alias', 'sys', None)])]), -('Module', [('ImportFrom', (1, 0), 'sys', [('alias', 'v', None)], 0)]), +('Module', [('Import', (1, 0), [('aliasType', 'sys', None)])]), +('Module', [('ImportFrom', (1, 0), 'sys', [('aliasType', 'v', None)], 0)]), ('Module', [('Exec', (1, 0), ('Str', (1, 5), 'v'), None, None)]), ('Module', [('Global', (1, 0), ['v'])]), ('Module', [('Expr', (1, 0), ('Num', (1, 0), 1))]), @@ -210,7 +195,7 @@ ('Expression', ('ListComp', (1, 1), ('Name', (1, 1), 'a', ('Load',)), [('comprehension', ('Name', (1, 7), 'b', ('Store',)), ('Name', (1, 12), 'c', ('Load',)), [('Name', (1, 17), 'd', ('Load',))])])), ('Expression', ('GeneratorExp', (1, 1), ('Name', (1, 1), 'a', ('Load',)), [('comprehension', ('Name', (1, 7), 'b', ('Store',)), ('Name', (1, 12), 'c', ('Load',)), [('Name', (1, 17), 'd', ('Load',))])])), ('Expression', ('Compare', (1, 0), ('Num', (1, 0), 1), [('Lt',), ('Lt',)], [('Num', (1, 4), 2), ('Num', (1, 8), 3)])), -('Expression', ('Call', (1, 0), ('Name', (1, 0), 'f', ('Load',)), [('Num', (1, 2), 1), ('Num', (1, 4), 2)], [('keyword', 'c', ('Num', (1, 8), 3))], ('Name', (1, 11), 'd', ('Load',)), ('Name', (1, 15), 'e', ('Load',)))), +('Expression', ('Call', (1, 0), ('Name', (1, 0), 'f', ('Load',)), [('Num', (1, 2), 1), ('Num', (1, 4), 2)], [('keywordType', 'c', ('Num', (1, 8), 3))], ('Name', (1, 11), 'd', ('Load',)), ('Name', (1, 15), 'e', ('Load',)))), ('Expression', ('Repr', (1, 0), ('Name', (1, 1), 'v', ('Load',)))), ('Expression', ('Num', (1, 0), 10L)), ('Expression', ('Str', (1, 0), 'string')), Modified: branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java 2008-12-02 22:23:33 UTC (rev 5678) +++ branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java 2008-12-03 04:38:04 UTC (rev 5679) @@ -142,6 +142,10 @@ return Py.None; } + public static PyObject op2py(cmpopType o) { + return cmpopAdapter.ast2py(o); + } + public static PyObject op2py(unaryopType o) { switch (o) { case Invert: Modified: branches/astwrite/src/org/python/antlr/adapter/CmpopAdapter.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/CmpopAdapter.java 2008-12-02 22:23:33 UTC (rev 5678) +++ branches/astwrite/src/org/python/antlr/adapter/CmpopAdapter.java 2008-12-03 04:38:04 UTC (rev 5679) @@ -5,6 +5,16 @@ import org.python.core.PyJavaInstance; import org.python.antlr.ast.cmpopType; +import org.python.antlr.ast.Eq; +import org.python.antlr.ast.NotEq; +import org.python.antlr.ast.Lt; +import org.python.antlr.ast.LtE; +import org.python.antlr.ast.Gt; +import org.python.antlr.ast.GtE; +import org.python.antlr.ast.Is; +import org.python.antlr.ast.IsNot; +import org.python.antlr.ast.In; +import org.python.antlr.ast.NotIn; import java.util.ArrayList; import java.util.List; @@ -21,7 +31,29 @@ } public PyObject ast2py(Object o) { - return (PyObject)o; + switch ((cmpopType)o) { + case Eq: + return new Eq(); + case NotEq: + return new NotEq(); + case Lt: + return new Lt(); + case LtE: + return new LtE(); + case Gt: + return new Gt(); + case GtE: + return new GtE(); + case Is: + return new Is(); + case IsNot: + return new IsNot(); + case In: + return new In(); + case NotIn: + return new NotIn(); + } + return Py.None; } public List iter2ast(PyObject iter) { Modified: branches/astwrite/src/org/python/antlr/adapter/IdentifierAdapter.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/IdentifierAdapter.java 2008-12-02 22:23:33 UTC (rev 5678) +++ branches/astwrite/src/org/python/antlr/adapter/IdentifierAdapter.java 2008-12-03 04:38:04 UTC (rev 5679) @@ -3,6 +3,7 @@ import org.python.core.Py; import org.python.core.PyJavaInstance; import org.python.core.PyObject; +import org.python.core.PyString; import org.python.antlr.ast.Num; @@ -16,7 +17,7 @@ } public PyObject ast2py(Object o) { - return (PyObject)o; + return new PyString(o.toString()); } public List iter2ast(PyObject iter) { Added: branches/astwrite/src/org/python/antlr/ast/FloorDiv.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/FloorDiv.java (rev 0) +++ branches/astwrite/src/org/python/antlr/ast/FloorDiv.java 2008-12-03 04:38:04 UTC (rev 5679) @@ -0,0 +1,18 @@ +// Autogenerated AST node +package org.python.antlr.ast; + +import org.python.antlr.AST; +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedType; + +@ExposedType(name = "_ast.FloorDiv", base = PyObject.class) +public class FloorDiv extends AST { + public static final PyType TYPE = PyType.fromClass(FloorDiv.class); + public int asIndex() { + return asIndex(null); + } + public int asIndex(PyObject error) { + return 12; + } +} Added: branches/astwrite/src/org/python/antlr/ast/NotIn.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/NotIn.java (rev 0) +++ branches/astwrite/src/org/python/antlr/ast/NotIn.java 2008-12-03 04:38:04 UTC (rev 5679) @@ -0,0 +1,18 @@ +// Autogenerated AST node +package org.python.antlr.ast; + +import org.python.antlr.AST; +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedType; + +@ExposedType(name = "_ast.NotIn", base = PyObject.class) +public class NotIn extends AST { + public static final PyType TYPE = PyType.fromClass(NotIn.class); + public int asIndex() { + return asIndex(null); + } + public int asIndex(PyObject error) { + return 10; + } +} Added: branches/astwrite/src/org/python/antlr/ast/Or.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Or.java (rev 0) +++ branches/astwrite/src/org/python/antlr/ast/Or.java 2008-12-03 04:38:04 UTC (rev 5679) @@ -0,0 +1,18 @@ +// Autogenerated AST node +package org.python.antlr.ast; + +import org.python.antlr.AST; +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedType; + +@ExposedType(name = "_ast.Or", base = PyObject.class) +public class Or extends AST { + public static final PyType TYPE = PyType.fromClass(Or.class); + public int asIndex() { + return asIndex(null); + } + public int asIndex(PyObject error) { + return 2; + } +} Added: branches/astwrite/src/org/python/antlr/ast/Param.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Param.java (rev 0) +++ branches/astwrite/src/org/python/antlr/ast/Param.java 2008-12-03 04:38:04 UTC (rev 5679) @@ -0,0 +1,18 @@ +// Autogenerated AST node +package org.python.antlr.ast; + +import org.python.antlr.AST; +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedType; + +@ExposedType(name = "_ast.Param", base = PyObject.class) +public class Param extends AST { + public static final PyType TYPE = PyType.fromClass(Param.class); + public int asIndex() { + return asIndex(null); + } + public int asIndex(PyObject error) { + return 6; + } +} Added: branches/astwrite/src/org/python/antlr/ast/USub.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/USub.java (rev 0) +++ branches/astwrite/src/org/python/antlr/ast/USub.java 2008-12-03 04:38:04 UTC (rev 5679) @@ -0,0 +1,18 @@ +// Autogenerated AST node +package org.python.antlr.ast; + +import org.python.antlr.AST; +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedType; + +@ExposedType(name = "_ast.USub", base = PyObject.class) +public class USub extends AST { + public static final PyType TYPE = PyType.fromClass(USub.class); + public int asIndex() { + return asIndex(null); + } + public int asIndex(PyObject error) { + return 4; + } +} Modified: branches/astwrite/src/org/python/core/AstList.java =================================================================== --- branches/astwrite/src/org/python/core/AstList.java 2008-12-02 22:23:33 UTC (rev 5678) +++ branches/astwrite/src/org/python/core/AstList.java 2008-12-03 04:38:04 UTC (rev 5679) @@ -515,7 +515,10 @@ } public PyObject pyget(int index) { - return (PyObject)data.get(index); + if (adapter == null) { + return (PyObject)data.get(index); + } + return adapter.ast2py(data.get(index)); } public PyObject pyset(int index, PyObject element) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fwi...@us...> - 2008-12-02 22:23:37
|
Revision: 5678 http://jython.svn.sourceforge.net/jython/?rev=5678&view=rev Author: fwierzbicki Date: 2008-12-02 22:23:33 +0000 (Tue, 02 Dec 2008) Log Message: ----------- Much better support for PyObjects to represent the ast enums. Modified Paths: -------------- branches/astwrite/CoreExposed.includes branches/astwrite/ast/asdl_antlr.py branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java branches/astwrite/src/org/python/antlr/ast/Add.java branches/astwrite/src/org/python/antlr/ast/And.java branches/astwrite/src/org/python/antlr/ast/Assert.java branches/astwrite/src/org/python/antlr/ast/Assign.java branches/astwrite/src/org/python/antlr/ast/Attribute.java branches/astwrite/src/org/python/antlr/ast/AugAssign.java branches/astwrite/src/org/python/antlr/ast/AugLoad.java branches/astwrite/src/org/python/antlr/ast/AugStore.java branches/astwrite/src/org/python/antlr/ast/BinOp.java branches/astwrite/src/org/python/antlr/ast/BitAnd.java branches/astwrite/src/org/python/antlr/ast/BitOr.java branches/astwrite/src/org/python/antlr/ast/BitXor.java branches/astwrite/src/org/python/antlr/ast/BoolOp.java branches/astwrite/src/org/python/antlr/ast/Call.java branches/astwrite/src/org/python/antlr/ast/ClassDef.java branches/astwrite/src/org/python/antlr/ast/Compare.java branches/astwrite/src/org/python/antlr/ast/Del.java branches/astwrite/src/org/python/antlr/ast/Delete.java branches/astwrite/src/org/python/antlr/ast/Dict.java branches/astwrite/src/org/python/antlr/ast/Div.java branches/astwrite/src/org/python/antlr/ast/Eq.java branches/astwrite/src/org/python/antlr/ast/ExceptHandler.java branches/astwrite/src/org/python/antlr/ast/Exec.java branches/astwrite/src/org/python/antlr/ast/Expr.java branches/astwrite/src/org/python/antlr/ast/Expression.java branches/astwrite/src/org/python/antlr/ast/ExtSlice.java branches/astwrite/src/org/python/antlr/ast/For.java branches/astwrite/src/org/python/antlr/ast/FunctionDef.java branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java branches/astwrite/src/org/python/antlr/ast/Global.java branches/astwrite/src/org/python/antlr/ast/Gt.java branches/astwrite/src/org/python/antlr/ast/GtE.java branches/astwrite/src/org/python/antlr/ast/If.java branches/astwrite/src/org/python/antlr/ast/IfExp.java branches/astwrite/src/org/python/antlr/ast/Import.java branches/astwrite/src/org/python/antlr/ast/ImportFrom.java branches/astwrite/src/org/python/antlr/ast/In.java branches/astwrite/src/org/python/antlr/ast/Index.java branches/astwrite/src/org/python/antlr/ast/Interactive.java branches/astwrite/src/org/python/antlr/ast/Invert.java branches/astwrite/src/org/python/antlr/ast/Is.java branches/astwrite/src/org/python/antlr/ast/IsNot.java branches/astwrite/src/org/python/antlr/ast/LShift.java branches/astwrite/src/org/python/antlr/ast/Lambda.java branches/astwrite/src/org/python/antlr/ast/List.java branches/astwrite/src/org/python/antlr/ast/ListComp.java branches/astwrite/src/org/python/antlr/ast/Load.java branches/astwrite/src/org/python/antlr/ast/Lt.java branches/astwrite/src/org/python/antlr/ast/LtE.java branches/astwrite/src/org/python/antlr/ast/Mod.java branches/astwrite/src/org/python/antlr/ast/Module.java branches/astwrite/src/org/python/antlr/ast/Mult.java branches/astwrite/src/org/python/antlr/ast/Name.java branches/astwrite/src/org/python/antlr/ast/Not.java branches/astwrite/src/org/python/antlr/ast/NotEq.java branches/astwrite/src/org/python/antlr/ast/Num.java branches/astwrite/src/org/python/antlr/ast/Pow.java branches/astwrite/src/org/python/antlr/ast/Print.java branches/astwrite/src/org/python/antlr/ast/RShift.java branches/astwrite/src/org/python/antlr/ast/Raise.java branches/astwrite/src/org/python/antlr/ast/Repr.java branches/astwrite/src/org/python/antlr/ast/Return.java branches/astwrite/src/org/python/antlr/ast/Slice.java branches/astwrite/src/org/python/antlr/ast/Store.java branches/astwrite/src/org/python/antlr/ast/Str.java branches/astwrite/src/org/python/antlr/ast/Sub.java branches/astwrite/src/org/python/antlr/ast/Subscript.java branches/astwrite/src/org/python/antlr/ast/Suite.java branches/astwrite/src/org/python/antlr/ast/TryExcept.java branches/astwrite/src/org/python/antlr/ast/TryFinally.java branches/astwrite/src/org/python/antlr/ast/Tuple.java branches/astwrite/src/org/python/antlr/ast/UAdd.java branches/astwrite/src/org/python/antlr/ast/UnaryOp.java branches/astwrite/src/org/python/antlr/ast/While.java branches/astwrite/src/org/python/antlr/ast/With.java branches/astwrite/src/org/python/antlr/ast/Yield.java branches/astwrite/src/org/python/antlr/ast/aliasType.java branches/astwrite/src/org/python/antlr/ast/argumentsType.java branches/astwrite/src/org/python/antlr/ast/comprehensionType.java branches/astwrite/src/org/python/antlr/ast/keywordType.java Modified: branches/astwrite/CoreExposed.includes =================================================================== --- branches/astwrite/CoreExposed.includes 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/CoreExposed.includes 2008-12-02 22:23:33 UTC (rev 5678) @@ -102,4 +102,17 @@ org/python/antlr/ast/TryFinally.class org/python/antlr/ast/If.class org/python/antlr/ast/ImportFrom.class +org/python/antlr/ast/FunctionDef.class +org/python/antlr/ast/argumentsType.class +org/python/antlr/ast/List.class +org/python/antlr/ast/Interactive.class +org/python/antlr/ast/ExtSlice.class +org/python/antlr/ast/Compare.class +org/python/antlr/ast/While.class +org/python/antlr/ast/Call.class +org/python/antlr/ast/Assign.class +org/python/antlr/ast/For.class +org/python/antlr/ast/Suite.class +org/python/antlr/ast/BoolOp.class +org/python/antlr/ast/Print.class Modified: branches/astwrite/ast/asdl_antlr.py =================================================================== --- branches/astwrite/ast/asdl_antlr.py 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/ast/asdl_antlr.py 2008-12-02 22:23:33 UTC (rev 5678) @@ -170,7 +170,7 @@ self.close() def simple_sum_wrappers(self, sum, name, depth): - for i in range(len(sum.types) - 1): + for i in range(len(sum.types)): type = sum.types[i] self.open("%s" % type.name, refersToPythonTree=0) self.emit('import org.python.antlr.AST;', depth) @@ -187,7 +187,7 @@ self.emit("}", depth + 1) self.emit('public int asIndex(PyObject error) {', depth + 1) - self.emit('return %s;' % str(i), depth + 2) + self.emit('return %s;' % str(i + 1), depth + 2) self.emit("}", depth + 1) self.emit("}", depth) @@ -503,7 +503,7 @@ elif str(field.type) == 'int': self.emit("return Py.newInteger(%s);" % field.name, depth+1) elif field.typedef.simple: - self.emit("return Py.None;//(%s);" % field.name, depth+1) + self.emit("return AstAdapters.%s2py(%s);" % (field.name, field.name), depth+1) else: self.emit("return %s;" % field.name, depth+1) #self.emit("return Py.None;", depth+1) @@ -513,9 +513,9 @@ field.name), depth) if field.seq: #self.emit("this.%s = new %s(" % (field.name, self.javaType(field)), depth+1) - self.emit("this.%s = AstAdapters.to_%sList(%s);" % (field.name, str(field.type), field.name), depth+1) + self.emit("this.%s = AstAdapters.py2%sList(%s);" % (field.name, str(field.type), field.name), depth+1) else: - self.emit("this.%s = AstAdapters.to_%s(%s);" % (field.name, str(field.type), field.name), depth+1) + self.emit("this.%s = AstAdapters.py2%s(%s);" % (field.name, str(field.type), field.name), depth+1) self.emit("}", depth) self.emit("", 0) Modified: branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java =================================================================== --- branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/adapter/AstAdapters.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -18,47 +18,47 @@ public static SliceAdapter sliceAdapter = new SliceAdapter(); public static StmtAdapter stmtAdapter = new StmtAdapter(); - public static java.util.List<aliasType> to_aliasList(PyObject o) { + public static java.util.List<aliasType> py2aliasList(PyObject o) { return (java.util.List<aliasType>)aliasAdapter.iter2ast(o); } - public static java.util.List<cmpopType> to_cmpopList(PyObject o) { + public static java.util.List<cmpopType> py2cmpopList(PyObject o) { return (java.util.List<cmpopType>)cmpopAdapter.iter2ast(o); } - public static java.util.List<comprehensionType> to_comprehensionList(PyObject o) { + public static java.util.List<comprehensionType> py2comprehensionList(PyObject o) { return (java.util.List<comprehensionType>)comprehensionAdapter.iter2ast(o); } - public static java.util.List<excepthandlerType> to_excepthandlerList(PyObject o) { + public static java.util.List<excepthandlerType> py2excepthandlerList(PyObject o) { return (java.util.List<excepthandlerType>)excepthandlerAdapter.iter2ast(o); } - public static java.util.List<exprType> to_exprList(PyObject o) { + public static java.util.List<exprType> py2exprList(PyObject o) { return (java.util.List<exprType>)exprAdapter.iter2ast(o); } - public static java.util.List<String> to_identifierList(PyObject o) { + public static java.util.List<String> py2identifierList(PyObject o) { return (java.util.List<String>)identifierAdapter.iter2ast(o); } - public static java.util.List<keywordType> to_keywordList(PyObject o) { + public static java.util.List<keywordType> py2keywordList(PyObject o) { return (java.util.List<keywordType>)keywordAdapter.iter2ast(o); } - public static java.util.List<sliceType> to_sliceList(PyObject o) { + public static java.util.List<sliceType> py2sliceList(PyObject o) { return (java.util.List<sliceType>)sliceAdapter.iter2ast(o); } - public static java.util.List<stmtType> to_stmtList(PyObject o) { + public static java.util.List<stmtType> py2stmtList(PyObject o) { return (java.util.List<stmtType>)stmtAdapter.iter2ast(o); } - public static exprType to_expr(PyObject o) { + public static exprType py2expr(PyObject o) { return (exprType)exprAdapter.py2ast(o); } - public static int to_int(Object o) { + public static int py2int(Object o) { if (o == null || o instanceof Integer) { return (Integer)o; } @@ -66,11 +66,11 @@ throw Py.TypeError("Can't convert " + o.getClass().getName() + " to int node"); } - public static String to_identifier(PyObject o) { + public static String py2identifier(PyObject o) { return (String)identifierAdapter.py2ast(o); } - public static expr_contextType to_expr_context(Object o) { + public static expr_contextType py2expr_context(Object o) { if (o == null || o instanceof expr_contextType) { return (expr_contextType)o; } @@ -78,15 +78,15 @@ throw Py.TypeError("Can't convert " + o.getClass().getName() + " to expr_context node"); } - public static sliceType to_slice(PyObject o) { + public static sliceType py2slice(PyObject o) { return (sliceType)sliceAdapter.py2ast(o); } - public static stmtType to_stmt(PyObject o) { + public static stmtType py2stmt(PyObject o) { return (stmtType)stmtAdapter.py2ast(o); } - public static String to_string(Object o) { + public static String py2string(Object o) { if (o == null || o instanceof String) { return (String)o; } @@ -94,7 +94,7 @@ throw Py.TypeError("Can't convert " + o.getClass().getName() + " to string node"); } - public static operatorType to_operator(Object o) { + public static operatorType py2operator(Object o) { if (o == null || o instanceof operatorType) { return (operatorType)o; } @@ -102,7 +102,80 @@ throw Py.TypeError("Can't convert " + o.getClass().getName() + " to operator node"); } - public static boolopType to_boolop(Object o) { + public static PyObject op2py(operatorType o) { + switch (o) { + case Add: + return new Add(); + case Sub: + return new Sub(); + case Mult: + return new Mult(); + case Div: + return new Div(); + case Mod: + return new Mod(); + case Pow: + return new Pow(); + case LShift: + return new LShift(); + case RShift: + return new RShift(); + case BitOr: + return new BitOr(); + case BitXor: + return new BitXor(); + case BitAnd: + return new BitAnd(); + case FloorDiv: + return new FloorDiv(); + } + return Py.None; + } + + public static PyObject op2py(boolopType o) { + switch (o) { + case And: + return new And(); + case Or: + return new Or(); + } + return Py.None; + } + + public static PyObject op2py(unaryopType o) { + switch (o) { + case Invert: + return new Invert(); + case Not: + return new Not(); + case UAdd: + return new UAdd(); + case USub: + return new USub(); + } + return Py.None; + } + + + public static PyObject ctx2py(expr_contextType o) { + switch (o) { + case Load: + return new Load(); + case Store: + return new Store(); + case Del: + return new Del(); + case AugLoad: + return new AugLoad(); + case AugStore: + return new AugStore(); + case Param: + return new Param(); + } + return Py.None; + } + + public static boolopType py2boolop(Object o) { if (o == null || o instanceof boolopType) { return (boolopType)o; } @@ -110,7 +183,7 @@ throw Py.TypeError("Can't convert " + o.getClass().getName() + " to boolop node"); } - public static argumentsType to_arguments(Object o) { + public static argumentsType py2arguments(Object o) { if (o == null || o instanceof argumentsType) { return (argumentsType)o; } @@ -119,11 +192,11 @@ } //XXX: clearly this isn't necessary -- need to adjust the code generation. - public static Object to_object(Object o) { + public static Object py2object(Object o) { return o; } - public static Boolean to_bool(Object o) { + public static Boolean py2bool(Object o) { if (o == null || o instanceof Boolean) { return (Boolean)o; } @@ -131,7 +204,7 @@ throw Py.TypeError("Can't convert " + o.getClass().getName() + " to Boolean node"); } - public static unaryopType to_unaryop(Object o) { + public static unaryopType py2unaryop(Object o) { if (o == null || o instanceof unaryopType) { return (unaryopType)o; } Modified: branches/astwrite/src/org/python/antlr/ast/Add.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Add.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Add.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 0; + return 1; } } Modified: branches/astwrite/src/org/python/antlr/ast/And.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/And.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/And.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 0; + return 1; } } Modified: branches/astwrite/src/org/python/antlr/ast/Assert.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Assert.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Assert.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "test") public void setTest(PyObject test) { - this.test = AstAdapters.to_expr(test); + this.test = AstAdapters.py2expr(test); } private exprType msg; @@ -44,7 +44,7 @@ } @ExposedSet(name = "msg") public void setMsg(PyObject msg) { - this.msg = AstAdapters.to_expr(msg); + this.msg = AstAdapters.py2expr(msg); } Modified: branches/astwrite/src/org/python/antlr/ast/Assign.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Assign.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Assign.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "targets") public void setTargets(PyObject targets) { - this.targets = AstAdapters.to_exprList(targets); + this.targets = AstAdapters.py2exprList(targets); } private exprType value; @@ -44,7 +44,7 @@ } @ExposedSet(name = "value") public void setValue(PyObject value) { - this.value = AstAdapters.to_expr(value); + this.value = AstAdapters.py2expr(value); } Modified: branches/astwrite/src/org/python/antlr/ast/Attribute.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Attribute.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Attribute.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "value") public void setValue(PyObject value) { - this.value = AstAdapters.to_expr(value); + this.value = AstAdapters.py2expr(value); } private String attr; @@ -45,7 +45,7 @@ } @ExposedSet(name = "attr") public void setAttr(PyObject attr) { - this.attr = AstAdapters.to_identifier(attr); + this.attr = AstAdapters.py2identifier(attr); } private expr_contextType ctx; @@ -54,11 +54,11 @@ } @ExposedGet(name = "ctx") public PyObject getCtx() { - return Py.None;//(ctx); + return AstAdapters.ctx2py(ctx); } @ExposedSet(name = "ctx") public void setCtx(PyObject ctx) { - this.ctx = AstAdapters.to_expr_context(ctx); + this.ctx = AstAdapters.py2expr_context(ctx); } Modified: branches/astwrite/src/org/python/antlr/ast/AugAssign.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/AugAssign.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/AugAssign.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "target") public void setTarget(PyObject target) { - this.target = AstAdapters.to_expr(target); + this.target = AstAdapters.py2expr(target); } private operatorType op; @@ -40,11 +40,11 @@ } @ExposedGet(name = "op") public PyObject getOp() { - return Py.None;//(op); + return AstAdapters.op2py(op); } @ExposedSet(name = "op") public void setOp(PyObject op) { - this.op = AstAdapters.to_operator(op); + this.op = AstAdapters.py2operator(op); } private exprType value; @@ -57,7 +57,7 @@ } @ExposedSet(name = "value") public void setValue(PyObject value) { - this.value = AstAdapters.to_expr(value); + this.value = AstAdapters.py2expr(value); } Modified: branches/astwrite/src/org/python/antlr/ast/AugLoad.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/AugLoad.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/AugLoad.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 3; + return 4; } } Modified: branches/astwrite/src/org/python/antlr/ast/AugStore.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/AugStore.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/AugStore.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 4; + return 5; } } Modified: branches/astwrite/src/org/python/antlr/ast/BinOp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BinOp.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/BinOp.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "left") public void setLeft(PyObject left) { - this.left = AstAdapters.to_expr(left); + this.left = AstAdapters.py2expr(left); } private operatorType op; @@ -40,11 +40,11 @@ } @ExposedGet(name = "op") public PyObject getOp() { - return Py.None;//(op); + return AstAdapters.op2py(op); } @ExposedSet(name = "op") public void setOp(PyObject op) { - this.op = AstAdapters.to_operator(op); + this.op = AstAdapters.py2operator(op); } private exprType right; @@ -57,7 +57,7 @@ } @ExposedSet(name = "right") public void setRight(PyObject right) { - this.right = AstAdapters.to_expr(right); + this.right = AstAdapters.py2expr(right); } Modified: branches/astwrite/src/org/python/antlr/ast/BitAnd.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BitAnd.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/BitAnd.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 10; + return 11; } } Modified: branches/astwrite/src/org/python/antlr/ast/BitOr.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BitOr.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/BitOr.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 8; + return 9; } } Modified: branches/astwrite/src/org/python/antlr/ast/BitXor.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BitXor.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/BitXor.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 9; + return 10; } } Modified: branches/astwrite/src/org/python/antlr/ast/BoolOp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BoolOp.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/BoolOp.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -27,11 +27,11 @@ } @ExposedGet(name = "op") public PyObject getOp() { - return Py.None;//(op); + return AstAdapters.op2py(op); } @ExposedSet(name = "op") public void setOp(PyObject op) { - this.op = AstAdapters.to_boolop(op); + this.op = AstAdapters.py2boolop(op); } private java.util.List<exprType> values; @@ -44,7 +44,7 @@ } @ExposedSet(name = "values") public void setValues(PyObject values) { - this.values = AstAdapters.to_exprList(values); + this.values = AstAdapters.py2exprList(values); } Modified: branches/astwrite/src/org/python/antlr/ast/Call.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Call.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Call.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "func") public void setFunc(PyObject func) { - this.func = AstAdapters.to_expr(func); + this.func = AstAdapters.py2expr(func); } private java.util.List<exprType> args; @@ -44,7 +44,7 @@ } @ExposedSet(name = "args") public void setArgs(PyObject args) { - this.args = AstAdapters.to_exprList(args); + this.args = AstAdapters.py2exprList(args); } private java.util.List<keywordType> keywords; @@ -57,7 +57,7 @@ } @ExposedSet(name = "keywords") public void setKeywords(PyObject keywords) { - this.keywords = AstAdapters.to_keywordList(keywords); + this.keywords = AstAdapters.py2keywordList(keywords); } private exprType starargs; @@ -70,7 +70,7 @@ } @ExposedSet(name = "starargs") public void setStarargs(PyObject starargs) { - this.starargs = AstAdapters.to_expr(starargs); + this.starargs = AstAdapters.py2expr(starargs); } private exprType kwargs; @@ -83,7 +83,7 @@ } @ExposedSet(name = "kwargs") public void setKwargs(PyObject kwargs) { - this.kwargs = AstAdapters.to_expr(kwargs); + this.kwargs = AstAdapters.py2expr(kwargs); } Modified: branches/astwrite/src/org/python/antlr/ast/ClassDef.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ClassDef.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/ClassDef.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -32,7 +32,7 @@ } @ExposedSet(name = "name") public void setName(PyObject name) { - this.name = AstAdapters.to_identifier(name); + this.name = AstAdapters.py2identifier(name); } private java.util.List<exprType> bases; @@ -45,7 +45,7 @@ } @ExposedSet(name = "bases") public void setBases(PyObject bases) { - this.bases = AstAdapters.to_exprList(bases); + this.bases = AstAdapters.py2exprList(bases); } private java.util.List<stmtType> body; @@ -58,7 +58,7 @@ } @ExposedSet(name = "body") public void setBody(PyObject body) { - this.body = AstAdapters.to_stmtList(body); + this.body = AstAdapters.py2stmtList(body); } private java.util.List<exprType> decorator_list; @@ -71,7 +71,7 @@ } @ExposedSet(name = "decorator_list") public void setDecorator_list(PyObject decorator_list) { - this.decorator_list = AstAdapters.to_exprList(decorator_list); + this.decorator_list = AstAdapters.py2exprList(decorator_list); } Modified: branches/astwrite/src/org/python/antlr/ast/Compare.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Compare.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Compare.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "left") public void setLeft(PyObject left) { - this.left = AstAdapters.to_expr(left); + this.left = AstAdapters.py2expr(left); } private java.util.List<cmpopType> ops; @@ -44,7 +44,7 @@ } @ExposedSet(name = "ops") public void setOps(PyObject ops) { - this.ops = AstAdapters.to_cmpopList(ops); + this.ops = AstAdapters.py2cmpopList(ops); } private java.util.List<exprType> comparators; @@ -57,7 +57,7 @@ } @ExposedSet(name = "comparators") public void setComparators(PyObject comparators) { - this.comparators = AstAdapters.to_exprList(comparators); + this.comparators = AstAdapters.py2exprList(comparators); } Modified: branches/astwrite/src/org/python/antlr/ast/Del.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Del.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Del.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 2; + return 3; } } Modified: branches/astwrite/src/org/python/antlr/ast/Delete.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Delete.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Delete.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "targets") public void setTargets(PyObject targets) { - this.targets = AstAdapters.to_exprList(targets); + this.targets = AstAdapters.py2exprList(targets); } Modified: branches/astwrite/src/org/python/antlr/ast/Dict.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Dict.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Dict.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "keys") public void setKeys(PyObject keys) { - this.keys = AstAdapters.to_exprList(keys); + this.keys = AstAdapters.py2exprList(keys); } private java.util.List<exprType> values; @@ -44,7 +44,7 @@ } @ExposedSet(name = "values") public void setValues(PyObject values) { - this.values = AstAdapters.to_exprList(values); + this.values = AstAdapters.py2exprList(values); } Modified: branches/astwrite/src/org/python/antlr/ast/Div.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Div.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Div.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 3; + return 4; } } Modified: branches/astwrite/src/org/python/antlr/ast/Eq.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Eq.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Eq.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 0; + return 1; } } Modified: branches/astwrite/src/org/python/antlr/ast/ExceptHandler.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ExceptHandler.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/ExceptHandler.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "excepttype") public void setExcepttype(PyObject excepttype) { - this.excepttype = AstAdapters.to_expr(excepttype); + this.excepttype = AstAdapters.py2expr(excepttype); } private exprType name; @@ -44,7 +44,7 @@ } @ExposedSet(name = "name") public void setName(PyObject name) { - this.name = AstAdapters.to_expr(name); + this.name = AstAdapters.py2expr(name); } private java.util.List<stmtType> body; @@ -57,7 +57,7 @@ } @ExposedSet(name = "body") public void setBody(PyObject body) { - this.body = AstAdapters.to_stmtList(body); + this.body = AstAdapters.py2stmtList(body); } Modified: branches/astwrite/src/org/python/antlr/ast/Exec.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Exec.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Exec.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "body") public void setBody(PyObject body) { - this.body = AstAdapters.to_expr(body); + this.body = AstAdapters.py2expr(body); } private exprType globals; @@ -44,7 +44,7 @@ } @ExposedSet(name = "globals") public void setGlobals(PyObject globals) { - this.globals = AstAdapters.to_expr(globals); + this.globals = AstAdapters.py2expr(globals); } private exprType locals; @@ -57,7 +57,7 @@ } @ExposedSet(name = "locals") public void setLocals(PyObject locals) { - this.locals = AstAdapters.to_expr(locals); + this.locals = AstAdapters.py2expr(locals); } Modified: branches/astwrite/src/org/python/antlr/ast/Expr.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Expr.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Expr.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "value") public void setValue(PyObject value) { - this.value = AstAdapters.to_expr(value); + this.value = AstAdapters.py2expr(value); } Modified: branches/astwrite/src/org/python/antlr/ast/Expression.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Expression.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Expression.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "body") public void setBody(PyObject body) { - this.body = AstAdapters.to_expr(body); + this.body = AstAdapters.py2expr(body); } Modified: branches/astwrite/src/org/python/antlr/ast/ExtSlice.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ExtSlice.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/ExtSlice.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "dims") public void setDims(PyObject dims) { - this.dims = AstAdapters.to_sliceList(dims); + this.dims = AstAdapters.py2sliceList(dims); } Modified: branches/astwrite/src/org/python/antlr/ast/For.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/For.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/For.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "target") public void setTarget(PyObject target) { - this.target = AstAdapters.to_expr(target); + this.target = AstAdapters.py2expr(target); } private exprType iter; @@ -44,7 +44,7 @@ } @ExposedSet(name = "iter") public void setIter(PyObject iter) { - this.iter = AstAdapters.to_expr(iter); + this.iter = AstAdapters.py2expr(iter); } private java.util.List<stmtType> body; @@ -57,7 +57,7 @@ } @ExposedSet(name = "body") public void setBody(PyObject body) { - this.body = AstAdapters.to_stmtList(body); + this.body = AstAdapters.py2stmtList(body); } private java.util.List<stmtType> orelse; @@ -70,7 +70,7 @@ } @ExposedSet(name = "orelse") public void setOrelse(PyObject orelse) { - this.orelse = AstAdapters.to_stmtList(orelse); + this.orelse = AstAdapters.py2stmtList(orelse); } Modified: branches/astwrite/src/org/python/antlr/ast/FunctionDef.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/FunctionDef.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/FunctionDef.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -32,7 +32,7 @@ } @ExposedSet(name = "name") public void setName(PyObject name) { - this.name = AstAdapters.to_identifier(name); + this.name = AstAdapters.py2identifier(name); } private argumentsType args; @@ -45,7 +45,7 @@ } @ExposedSet(name = "args") public void setArgs(PyObject args) { - this.args = AstAdapters.to_arguments(args); + this.args = AstAdapters.py2arguments(args); } private java.util.List<stmtType> body; @@ -58,7 +58,7 @@ } @ExposedSet(name = "body") public void setBody(PyObject body) { - this.body = AstAdapters.to_stmtList(body); + this.body = AstAdapters.py2stmtList(body); } private java.util.List<exprType> decorator_list; @@ -71,7 +71,7 @@ } @ExposedSet(name = "decorator_list") public void setDecorator_list(PyObject decorator_list) { - this.decorator_list = AstAdapters.to_exprList(decorator_list); + this.decorator_list = AstAdapters.py2exprList(decorator_list); } Modified: branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "elt") public void setElt(PyObject elt) { - this.elt = AstAdapters.to_expr(elt); + this.elt = AstAdapters.py2expr(elt); } private java.util.List<comprehensionType> generators; @@ -44,7 +44,7 @@ } @ExposedSet(name = "generators") public void setGenerators(PyObject generators) { - this.generators = AstAdapters.to_comprehensionList(generators); + this.generators = AstAdapters.py2comprehensionList(generators); } Modified: branches/astwrite/src/org/python/antlr/ast/Global.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Global.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Global.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "names") public void setNames(PyObject names) { - this.names = AstAdapters.to_identifierList(names); + this.names = AstAdapters.py2identifierList(names); } Modified: branches/astwrite/src/org/python/antlr/ast/Gt.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Gt.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Gt.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 4; + return 5; } } Modified: branches/astwrite/src/org/python/antlr/ast/GtE.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/GtE.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/GtE.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 5; + return 6; } } Modified: branches/astwrite/src/org/python/antlr/ast/If.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/If.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/If.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "test") public void setTest(PyObject test) { - this.test = AstAdapters.to_expr(test); + this.test = AstAdapters.py2expr(test); } private java.util.List<stmtType> body; @@ -44,7 +44,7 @@ } @ExposedSet(name = "body") public void setBody(PyObject body) { - this.body = AstAdapters.to_stmtList(body); + this.body = AstAdapters.py2stmtList(body); } private java.util.List<stmtType> orelse; @@ -57,7 +57,7 @@ } @ExposedSet(name = "orelse") public void setOrelse(PyObject orelse) { - this.orelse = AstAdapters.to_stmtList(orelse); + this.orelse = AstAdapters.py2stmtList(orelse); } Modified: branches/astwrite/src/org/python/antlr/ast/IfExp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/IfExp.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/IfExp.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "test") public void setTest(PyObject test) { - this.test = AstAdapters.to_expr(test); + this.test = AstAdapters.py2expr(test); } private exprType body; @@ -44,7 +44,7 @@ } @ExposedSet(name = "body") public void setBody(PyObject body) { - this.body = AstAdapters.to_expr(body); + this.body = AstAdapters.py2expr(body); } private exprType orelse; @@ -57,7 +57,7 @@ } @ExposedSet(name = "orelse") public void setOrelse(PyObject orelse) { - this.orelse = AstAdapters.to_expr(orelse); + this.orelse = AstAdapters.py2expr(orelse); } Modified: branches/astwrite/src/org/python/antlr/ast/Import.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Import.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Import.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "names") public void setNames(PyObject names) { - this.names = AstAdapters.to_aliasList(names); + this.names = AstAdapters.py2aliasList(names); } Modified: branches/astwrite/src/org/python/antlr/ast/ImportFrom.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ImportFrom.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/ImportFrom.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -32,7 +32,7 @@ } @ExposedSet(name = "module") public void setModule(PyObject module) { - this.module = AstAdapters.to_identifier(module); + this.module = AstAdapters.py2identifier(module); } private java.util.List<aliasType> names; @@ -45,7 +45,7 @@ } @ExposedSet(name = "names") public void setNames(PyObject names) { - this.names = AstAdapters.to_aliasList(names); + this.names = AstAdapters.py2aliasList(names); } private Integer level; @@ -58,7 +58,7 @@ } @ExposedSet(name = "level") public void setLevel(PyObject level) { - this.level = AstAdapters.to_int(level); + this.level = AstAdapters.py2int(level); } Modified: branches/astwrite/src/org/python/antlr/ast/In.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/In.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/In.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 8; + return 9; } } Modified: branches/astwrite/src/org/python/antlr/ast/Index.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Index.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Index.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "value") public void setValue(PyObject value) { - this.value = AstAdapters.to_expr(value); + this.value = AstAdapters.py2expr(value); } Modified: branches/astwrite/src/org/python/antlr/ast/Interactive.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Interactive.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Interactive.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "body") public void setBody(PyObject body) { - this.body = AstAdapters.to_stmtList(body); + this.body = AstAdapters.py2stmtList(body); } Modified: branches/astwrite/src/org/python/antlr/ast/Invert.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Invert.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Invert.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 0; + return 1; } } Modified: branches/astwrite/src/org/python/antlr/ast/Is.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Is.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Is.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 6; + return 7; } } Modified: branches/astwrite/src/org/python/antlr/ast/IsNot.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/IsNot.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/IsNot.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 7; + return 8; } } Modified: branches/astwrite/src/org/python/antlr/ast/LShift.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/LShift.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/LShift.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 6; + return 7; } } Modified: branches/astwrite/src/org/python/antlr/ast/Lambda.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Lambda.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Lambda.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "args") public void setArgs(PyObject args) { - this.args = AstAdapters.to_arguments(args); + this.args = AstAdapters.py2arguments(args); } private exprType body; @@ -44,7 +44,7 @@ } @ExposedSet(name = "body") public void setBody(PyObject body) { - this.body = AstAdapters.to_expr(body); + this.body = AstAdapters.py2expr(body); } Modified: branches/astwrite/src/org/python/antlr/ast/List.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/List.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/List.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "elts") public void setElts(PyObject elts) { - this.elts = AstAdapters.to_exprList(elts); + this.elts = AstAdapters.py2exprList(elts); } private expr_contextType ctx; @@ -40,11 +40,11 @@ } @ExposedGet(name = "ctx") public PyObject getCtx() { - return Py.None;//(ctx); + return AstAdapters.ctx2py(ctx); } @ExposedSet(name = "ctx") public void setCtx(PyObject ctx) { - this.ctx = AstAdapters.to_expr_context(ctx); + this.ctx = AstAdapters.py2expr_context(ctx); } Modified: branches/astwrite/src/org/python/antlr/ast/ListComp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ListComp.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/ListComp.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "elt") public void setElt(PyObject elt) { - this.elt = AstAdapters.to_expr(elt); + this.elt = AstAdapters.py2expr(elt); } private java.util.List<comprehensionType> generators; @@ -44,7 +44,7 @@ } @ExposedSet(name = "generators") public void setGenerators(PyObject generators) { - this.generators = AstAdapters.to_comprehensionList(generators); + this.generators = AstAdapters.py2comprehensionList(generators); } Modified: branches/astwrite/src/org/python/antlr/ast/Load.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Load.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Load.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 0; + return 1; } } Modified: branches/astwrite/src/org/python/antlr/ast/Lt.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Lt.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Lt.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 2; + return 3; } } Modified: branches/astwrite/src/org/python/antlr/ast/LtE.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/LtE.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/LtE.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 3; + return 4; } } Modified: branches/astwrite/src/org/python/antlr/ast/Mod.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Mod.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Mod.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 4; + return 5; } } Modified: branches/astwrite/src/org/python/antlr/ast/Module.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Module.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Module.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "body") public void setBody(PyObject body) { - this.body = AstAdapters.to_stmtList(body); + this.body = AstAdapters.py2stmtList(body); } Modified: branches/astwrite/src/org/python/antlr/ast/Mult.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Mult.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Mult.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 2; + return 3; } } Modified: branches/astwrite/src/org/python/antlr/ast/Name.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Name.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Name.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -32,7 +32,7 @@ } @ExposedSet(name = "id") public void setId(PyObject id) { - this.id = AstAdapters.to_identifier(id); + this.id = AstAdapters.py2identifier(id); } private expr_contextType ctx; @@ -41,11 +41,11 @@ } @ExposedGet(name = "ctx") public PyObject getCtx() { - return Py.None;//(ctx); + return AstAdapters.ctx2py(ctx); } @ExposedSet(name = "ctx") public void setCtx(PyObject ctx) { - this.ctx = AstAdapters.to_expr_context(ctx); + this.ctx = AstAdapters.py2expr_context(ctx); } Modified: branches/astwrite/src/org/python/antlr/ast/Not.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Not.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Not.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 1; + return 2; } } Modified: branches/astwrite/src/org/python/antlr/ast/NotEq.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/NotEq.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/NotEq.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 1; + return 2; } } Modified: branches/astwrite/src/org/python/antlr/ast/Num.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Num.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Num.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "n") public void setN(PyObject n) { - this.n = AstAdapters.to_object(n); + this.n = AstAdapters.py2object(n); } Modified: branches/astwrite/src/org/python/antlr/ast/Pow.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Pow.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Pow.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 5; + return 6; } } Modified: branches/astwrite/src/org/python/antlr/ast/Print.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Print.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Print.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "dest") public void setDest(PyObject dest) { - this.dest = AstAdapters.to_expr(dest); + this.dest = AstAdapters.py2expr(dest); } private java.util.List<exprType> values; @@ -44,7 +44,7 @@ } @ExposedSet(name = "values") public void setValues(PyObject values) { - this.values = AstAdapters.to_exprList(values); + this.values = AstAdapters.py2exprList(values); } private Boolean nl; @@ -58,7 +58,7 @@ } @ExposedSet(name = "nl") public void setNl(PyObject nl) { - this.nl = AstAdapters.to_bool(nl); + this.nl = AstAdapters.py2bool(nl); } Modified: branches/astwrite/src/org/python/antlr/ast/RShift.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/RShift.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/RShift.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -13,6 +13,6 @@ return asIndex(null); } public int asIndex(PyObject error) { - return 7; + return 8; } } Modified: branches/astwrite/src/org/python/antlr/ast/Raise.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Raise.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Raise.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "excepttype") public void setExcepttype(PyObject excepttype) { - this.excepttype = AstAdapters.to_expr(excepttype); + this.excepttype = AstAdapters.py2expr(excepttype); } private exprType inst; @@ -44,7 +44,7 @@ } @ExposedSet(name = "inst") public void setInst(PyObject inst) { - this.inst = AstAdapters.to_expr(inst); + this.inst = AstAdapters.py2expr(inst); } private exprType tback; @@ -57,7 +57,7 @@ } @ExposedSet(name = "tback") public void setTback(PyObject tback) { - this.tback = AstAdapters.to_expr(tback); + this.tback = AstAdapters.py2expr(tback); } Modified: branches/astwrite/src/org/python/antlr/ast/Repr.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Repr.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Repr.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "value") public void setValue(PyObject value) { - this.value = AstAdapters.to_expr(value); + this.value = AstAdapters.py2expr(value); } Modified: branches/astwrite/src/org/python/antlr/ast/Return.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Return.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Return.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "value") public void setValue(PyObject value) { - this.value = AstAdapters.to_expr(value); + this.value = AstAdapters.py2expr(value); } Modified: branches/astwrite/src/org/python/antlr/ast/Slice.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Slice.java 2008-12-02 13:55:51 UTC (rev 5677) +++ branches/astwrite/src/org/python/antlr/ast/Slice.java 2008-12-02 22:23:33 UTC (rev 5678) @@ -31,7 +31,7 @@ } @ExposedSet(name = "lower") public void setLower(PyObject lower) { - this.lower = AstAdapters.to_expr(lower); + this.lower = AstAdapters.py2expr(lower); } private exprType upper; @@ -44,7 +44,7 @@ } @ExposedSet(name = "upper") public void setUpper(PyObject upper) { - this.upper = AstAdapters.to_expr(upper); + this.upper = AstAdapters.py2expr(upper); } private exprType step; @@ -57,7 +57,7 @@ } @ExposedSet(name = "step") public void setStep(PyObject step) { - this.step = AstAdapters.to_expr(step); + this.step = AstAdapters.py2expr(step); } Modified: branches/astwrite/src/org/python/antlr/ast/Store.java =================================================================== --- branches/astwrite/src/org/py... [truncated message content] |
From: <fwi...@us...> - 2008-12-02 13:55:58
|
Revision: 5677 http://jython.svn.sourceforge.net/jython/?rev=5677&view=rev Author: fwierzbicki Date: 2008-12-02 13:55:51 +0000 (Tue, 02 Dec 2008) Log Message: ----------- Generating a bunch of PyObject stubs for the enums in ast. Exposing needed elements to Python. Modified Paths: -------------- branches/astwrite/CoreExposed.includes branches/astwrite/ast/asdl_antlr.py branches/astwrite/src/org/python/antlr/ast/Assert.java branches/astwrite/src/org/python/antlr/ast/Assign.java branches/astwrite/src/org/python/antlr/ast/Attribute.java branches/astwrite/src/org/python/antlr/ast/AugAssign.java branches/astwrite/src/org/python/antlr/ast/BinOp.java branches/astwrite/src/org/python/antlr/ast/BoolOp.java branches/astwrite/src/org/python/antlr/ast/Break.java branches/astwrite/src/org/python/antlr/ast/Call.java branches/astwrite/src/org/python/antlr/ast/ClassDef.java branches/astwrite/src/org/python/antlr/ast/Compare.java branches/astwrite/src/org/python/antlr/ast/Continue.java branches/astwrite/src/org/python/antlr/ast/Delete.java branches/astwrite/src/org/python/antlr/ast/Dict.java branches/astwrite/src/org/python/antlr/ast/Ellipsis.java branches/astwrite/src/org/python/antlr/ast/ExceptHandler.java branches/astwrite/src/org/python/antlr/ast/Exec.java branches/astwrite/src/org/python/antlr/ast/Expr.java branches/astwrite/src/org/python/antlr/ast/Expression.java branches/astwrite/src/org/python/antlr/ast/ExtSlice.java branches/astwrite/src/org/python/antlr/ast/For.java branches/astwrite/src/org/python/antlr/ast/FunctionDef.java branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java branches/astwrite/src/org/python/antlr/ast/Global.java branches/astwrite/src/org/python/antlr/ast/If.java branches/astwrite/src/org/python/antlr/ast/IfExp.java branches/astwrite/src/org/python/antlr/ast/Import.java branches/astwrite/src/org/python/antlr/ast/ImportFrom.java branches/astwrite/src/org/python/antlr/ast/Index.java branches/astwrite/src/org/python/antlr/ast/Interactive.java branches/astwrite/src/org/python/antlr/ast/Lambda.java branches/astwrite/src/org/python/antlr/ast/List.java branches/astwrite/src/org/python/antlr/ast/ListComp.java branches/astwrite/src/org/python/antlr/ast/Module.java branches/astwrite/src/org/python/antlr/ast/Name.java branches/astwrite/src/org/python/antlr/ast/Num.java branches/astwrite/src/org/python/antlr/ast/Pass.java branches/astwrite/src/org/python/antlr/ast/Print.java branches/astwrite/src/org/python/antlr/ast/Raise.java branches/astwrite/src/org/python/antlr/ast/Repr.java branches/astwrite/src/org/python/antlr/ast/Return.java branches/astwrite/src/org/python/antlr/ast/Slice.java branches/astwrite/src/org/python/antlr/ast/Str.java branches/astwrite/src/org/python/antlr/ast/Subscript.java branches/astwrite/src/org/python/antlr/ast/Suite.java branches/astwrite/src/org/python/antlr/ast/TryExcept.java branches/astwrite/src/org/python/antlr/ast/TryFinally.java branches/astwrite/src/org/python/antlr/ast/Tuple.java branches/astwrite/src/org/python/antlr/ast/UnaryOp.java branches/astwrite/src/org/python/antlr/ast/While.java branches/astwrite/src/org/python/antlr/ast/With.java branches/astwrite/src/org/python/antlr/ast/Yield.java branches/astwrite/src/org/python/antlr/ast/aliasType.java branches/astwrite/src/org/python/antlr/ast/argumentsType.java branches/astwrite/src/org/python/antlr/ast/boolopType.java branches/astwrite/src/org/python/antlr/ast/cmpopType.java branches/astwrite/src/org/python/antlr/ast/comprehensionType.java branches/astwrite/src/org/python/antlr/ast/excepthandlerType.java branches/astwrite/src/org/python/antlr/ast/exprType.java branches/astwrite/src/org/python/antlr/ast/expr_contextType.java branches/astwrite/src/org/python/antlr/ast/keywordType.java branches/astwrite/src/org/python/antlr/ast/modType.java branches/astwrite/src/org/python/antlr/ast/operatorType.java branches/astwrite/src/org/python/antlr/ast/sliceType.java branches/astwrite/src/org/python/antlr/ast/stmtType.java branches/astwrite/src/org/python/antlr/ast/unaryopType.java Added Paths: ----------- branches/astwrite/src/org/python/antlr/ast/Add.java branches/astwrite/src/org/python/antlr/ast/And.java branches/astwrite/src/org/python/antlr/ast/AugLoad.java branches/astwrite/src/org/python/antlr/ast/AugStore.java branches/astwrite/src/org/python/antlr/ast/BitAnd.java branches/astwrite/src/org/python/antlr/ast/BitOr.java branches/astwrite/src/org/python/antlr/ast/BitXor.java branches/astwrite/src/org/python/antlr/ast/Del.java branches/astwrite/src/org/python/antlr/ast/Div.java branches/astwrite/src/org/python/antlr/ast/Eq.java branches/astwrite/src/org/python/antlr/ast/Gt.java branches/astwrite/src/org/python/antlr/ast/GtE.java branches/astwrite/src/org/python/antlr/ast/In.java branches/astwrite/src/org/python/antlr/ast/Invert.java branches/astwrite/src/org/python/antlr/ast/Is.java branches/astwrite/src/org/python/antlr/ast/IsNot.java branches/astwrite/src/org/python/antlr/ast/LShift.java branches/astwrite/src/org/python/antlr/ast/Load.java branches/astwrite/src/org/python/antlr/ast/Lt.java branches/astwrite/src/org/python/antlr/ast/LtE.java branches/astwrite/src/org/python/antlr/ast/Mod.java branches/astwrite/src/org/python/antlr/ast/Mult.java branches/astwrite/src/org/python/antlr/ast/Not.java branches/astwrite/src/org/python/antlr/ast/NotEq.java branches/astwrite/src/org/python/antlr/ast/Pow.java branches/astwrite/src/org/python/antlr/ast/RShift.java branches/astwrite/src/org/python/antlr/ast/Store.java branches/astwrite/src/org/python/antlr/ast/Sub.java branches/astwrite/src/org/python/antlr/ast/UAdd.java Modified: branches/astwrite/CoreExposed.includes =================================================================== --- branches/astwrite/CoreExposed.includes 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/CoreExposed.includes 2008-12-02 13:55:51 UTC (rev 5677) @@ -1,5 +1,3 @@ -org/python/antlr/AST.class -org/python/antlr/ast/AsmModule.class org/python/core/PyArray.class org/python/core/PyBaseString.class org/python/core/PyBaseException.class @@ -57,3 +55,51 @@ org/python/modules/zipimport/zipimporter.class org/python/modules/PyStruct.class org/python/modules/PyTeeIterator.class +org/python/antlr/AST.class +org/python/antlr/ast/AsmModule.class +org/python/antlr/ast/And.class +org/python/antlr/ast/BitXor.class +org/python/antlr/ast/Gt.class +org/python/antlr/ast/AugLoad.class +org/python/antlr/ast/Mult.class +org/python/antlr/ast/NotEq.class +org/python/antlr/ast/LShift.class +org/python/antlr/ast/IsNot.class +org/python/antlr/ast/RShift.class +org/python/antlr/ast/Eq.class +org/python/antlr/ast/BitOr.class +org/python/antlr/ast/Div.class +org/python/antlr/ast/LtE.class +org/python/antlr/ast/Store.class +org/python/antlr/ast/Not.class +org/python/antlr/ast/BitAnd.class +org/python/antlr/ast/In.class +org/python/antlr/ast/UAdd.class +org/python/antlr/ast/GtE.class +org/python/antlr/ast/Lt.class +org/python/antlr/ast/Mod.class +org/python/antlr/ast/Sub.class +org/python/antlr/ast/Del.class +org/python/antlr/ast/Pow.class +org/python/antlr/ast/Invert.class +org/python/antlr/ast/Is.class +org/python/antlr/ast/Load.class +org/python/antlr/ast/Add.class +org/python/antlr/ast/AugStore.class +org/python/antlr/ast/Delete.class +org/python/antlr/ast/GeneratorExp.class +org/python/antlr/ast/Import.class +org/python/antlr/ast/comprehensionType.class +org/python/antlr/ast/With.class +org/python/antlr/ast/Module.class +org/python/antlr/ast/Global.class +org/python/antlr/ast/Dict.class +org/python/antlr/ast/ClassDef.class +org/python/antlr/ast/ExceptHandler.class +org/python/antlr/ast/TryExcept.class +org/python/antlr/ast/Tuple.class +org/python/antlr/ast/ListComp.class +org/python/antlr/ast/TryFinally.class +org/python/antlr/ast/If.class +org/python/antlr/ast/ImportFrom.class + Modified: branches/astwrite/ast/asdl_antlr.py =================================================================== --- branches/astwrite/ast/asdl_antlr.py 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/ast/asdl_antlr.py 2008-12-02 13:55:51 UTC (rev 5677) @@ -146,6 +146,7 @@ def visitSum(self, sum, name, depth): if sum.simple and not name == "excepthandler": self.simple_sum(sum, name, depth) + self.simple_sum_wrappers(sum, name, depth) else: self.sum_with_constructor(sum, name, depth) @@ -160,13 +161,39 @@ self.emit("%s," % type.name, depth + 1) self.emit("%s;" % sum.types[len(sum.types) - 1].name, depth + 1) - self.attributes(sum, depth, True); + #XXX + #self.attributes(sum, depth, True); self.emit("public %sType __call__() { return this; }" % name, depth + 1) self.emit("}", depth) self.close() + def simple_sum_wrappers(self, sum, name, depth): + for i in range(len(sum.types) - 1): + type = sum.types[i] + self.open("%s" % type.name, refersToPythonTree=0) + self.emit('import org.python.antlr.AST;', depth) + self.emit('import org.python.core.PyObject;', depth) + self.emit('import org.python.core.PyType;', depth) + self.emit('import org.python.expose.ExposedType;', depth) + self.emit('', 0) + self.emit('@ExposedType(name = "_ast.%s", base = PyObject.class)' % type.name, depth) + self.emit("public class %s extends AST {" % type.name, depth) + self.emit('public static final PyType TYPE = PyType.fromClass(%s.class);' % type.name, depth + 1) + + self.emit('public int asIndex() {', depth + 1) + self.emit('return asIndex(null);', depth + 2) + self.emit("}", depth + 1) + + self.emit('public int asIndex(PyObject error) {', depth + 1) + self.emit('return %s;' % str(i), depth + 2) + self.emit("}", depth + 1) + + self.emit("}", depth) + self.close() + + def attributes(self, obj, depth, always_emit=False): field_list = [] if hasattr(obj, "fields"): @@ -175,10 +202,12 @@ if len(field_list) > 0: self.emit("private final static String[] fields = new String[] {%s};" % ", ".join(field_list), depth+1) + self.emit('@ExposedGet(name = "_fields")', depth) self.emit("public String[] get_fields() { return fields; }", depth+1) self.emit("", 0) elif always_emit: self.emit("private final static String[] fields = new String[0];", depth+1) + self.emit('@ExposedGet(name = "_fields")', depth) self.emit("public String[] get_fields() { return fields; }", depth+1) self.emit("", 0) @@ -189,16 +218,19 @@ if len(att_list) > 0: self.emit("private final static String[] attributes = new String[] {%s};" % ", ".join(att_list), depth+1) + self.emit('@ExposedGet(name = "_attributes")', depth) self.emit("public String[] get_attributes() { return attributes; }", depth+1) self.emit("", 0) elif always_emit: self.emit("private final static String[] attributes = new String[0];", depth+1) + self.emit('@ExposedGet(name = "_attributes")', depth) self.emit("public String[] get_attributes() { return attributes; }", depth+1) self.emit("", 0) def sum_with_constructor(self, sum, name, depth): self.open("%sType" % name) + self.emit('@ExposedType(name = "_ast.%s", base = PyObject.class)' % name, depth) self.emit("public abstract class %(name)sType extends PythonTree {" % locals(), depth) self.emit("", 0) @@ -237,6 +269,7 @@ def visitProduct(self, product, name, depth): self.open("%sType" % name, useDataOutput=1) + self.emit('@ExposedType(name = "_ast.%s", base = PyObject.class)' % name, depth) self.emit("public class %(name)sType extends PythonTree {" % locals(), depth) self.emit("public static final PyType TYPE = PyType.fromClass(%sType.class);" % name, depth + 1); for f in product.fields: @@ -282,6 +315,7 @@ if str(name) in ('stmt', 'expr', 'excepthandler'): # The lineno property self.emit("private int lineno = -1;", depth + 1) + self.emit('@ExposedGet(name = "lineno")', depth) self.emit("public int getLineno() {", depth + 1) self.emit("if (lineno != -1) {", depth + 2); self.emit("return lineno;", depth + 3); @@ -289,6 +323,7 @@ self.emit('return getLine();', depth + 2) self.emit("}", depth + 1) self.emit("", 0) + self.emit('@ExposedSet(name = "lineno")', depth) self.emit("public void setLineno(int num) {", depth + 1) self.emit("lineno = num;", depth + 2); self.emit("}", depth + 1) @@ -296,6 +331,7 @@ # The col_offset property self.emit("private int col_offset = -1;", depth + 1) + self.emit('@ExposedGet(name = "col_offset")', depth) self.emit("public int getCol_offset() {", depth + 1) self.emit("if (col_offset != -1) {", depth + 2); self.emit("return col_offset;", depth + 3); @@ -303,6 +339,7 @@ self.emit('return getCharPositionInLine();', depth + 2) self.emit("}", depth + 1) self.emit("", 0) + self.emit('@ExposedSet(name = "col_offset")', depth) self.emit("public void setCol_offset(int num) {", depth + 1) self.emit("col_offset = num;", depth + 2); self.emit("}", depth + 1) @@ -344,6 +381,7 @@ self.javaConstructors(type, clsname, ctorname, fields, depth) # The toString() method + self.emit('@ExposedGet(name = "repr")', depth) self.emit("public String toString() {", depth) self.emit('return "%s";' % clsname, depth+1) self.emit("}", depth) @@ -475,7 +513,7 @@ field.name), depth) if field.seq: #self.emit("this.%s = new %s(" % (field.name, self.javaType(field)), depth+1) - self.emit("//FJW this.%s = AstAdapters.to_%sList(%s);" % (field.name, str(field.type), field.name), depth+1) + self.emit("this.%s = AstAdapters.to_%sList(%s);" % (field.name, str(field.type), field.name), depth+1) else: self.emit("this.%s = AstAdapters.to_%s(%s);" % (field.name, str(field.type), field.name), depth+1) self.emit("}", depth) Added: branches/astwrite/src/org/python/antlr/ast/Add.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Add.java (rev 0) +++ branches/astwrite/src/org/python/antlr/ast/Add.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -0,0 +1,18 @@ +// Autogenerated AST node +package org.python.antlr.ast; + +import org.python.antlr.AST; +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedType; + +@ExposedType(name = "_ast.Add", base = PyObject.class) +public class Add extends AST { + public static final PyType TYPE = PyType.fromClass(Add.class); + public int asIndex() { + return asIndex(null); + } + public int asIndex(PyObject error) { + return 0; + } +} Added: branches/astwrite/src/org/python/antlr/ast/And.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/And.java (rev 0) +++ branches/astwrite/src/org/python/antlr/ast/And.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -0,0 +1,18 @@ +// Autogenerated AST node +package org.python.antlr.ast; + +import org.python.antlr.AST; +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedType; + +@ExposedType(name = "_ast.And", base = PyObject.class) +public class And extends AST { + public static final PyType TYPE = PyType.fromClass(And.class); + public int asIndex() { + return asIndex(null); + } + public int asIndex(PyObject error) { + return 0; + } +} Modified: branches/astwrite/src/org/python/antlr/ast/Assert.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Assert.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/Assert.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -49,6 +49,7 @@ private final static String[] fields = new String[] {"test", "msg"}; +@ExposedGet(name = "_fields") public String[] get_fields() { return fields; } public Assert() { @@ -89,6 +90,7 @@ addChild(msg); } + @ExposedGet(name = "repr") public String toString() { return "Assert"; } @@ -117,6 +119,7 @@ } private int lineno = -1; +@ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -124,11 +127,13 @@ return getLine(); } +@ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; +@ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -136,6 +141,7 @@ return getCharPositionInLine(); } +@ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Modified: branches/astwrite/src/org/python/antlr/ast/Assign.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Assign.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/Assign.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -31,7 +31,7 @@ } @ExposedSet(name = "targets") public void setTargets(PyObject targets) { - //FJW this.targets = AstAdapters.to_exprList(targets); + this.targets = AstAdapters.to_exprList(targets); } private exprType value; @@ -49,6 +49,7 @@ private final static String[] fields = new String[] {"targets", "value"}; +@ExposedGet(name = "_fields") public String[] get_fields() { return fields; } public Assign() { @@ -107,6 +108,7 @@ addChild(value); } + @ExposedGet(name = "repr") public String toString() { return "Assign"; } @@ -139,6 +141,7 @@ } private int lineno = -1; +@ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -146,11 +149,13 @@ return getLine(); } +@ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; +@ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -158,6 +163,7 @@ return getCharPositionInLine(); } +@ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Modified: branches/astwrite/src/org/python/antlr/ast/Attribute.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Attribute.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/Attribute.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -64,6 +64,7 @@ private final static String[] fields = new String[] {"value", "attr", "ctx"}; +@ExposedGet(name = "_fields") public String[] get_fields() { return fields; } public Attribute() { @@ -108,6 +109,7 @@ this.ctx = ctx; } + @ExposedGet(name = "repr") public String toString() { return "Attribute"; } @@ -141,6 +143,7 @@ } private int lineno = -1; +@ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -148,11 +151,13 @@ return getLine(); } +@ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; +@ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -160,6 +165,7 @@ return getCharPositionInLine(); } +@ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Modified: branches/astwrite/src/org/python/antlr/ast/AugAssign.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/AugAssign.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/AugAssign.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -63,6 +63,7 @@ private final static String[] fields = new String[] {"target", "op", "value"}; +@ExposedGet(name = "_fields") public String[] get_fields() { return fields; } public AugAssign() { @@ -110,6 +111,7 @@ addChild(value); } + @ExposedGet(name = "repr") public String toString() { return "AugAssign"; } @@ -141,6 +143,7 @@ } private int lineno = -1; +@ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -148,11 +151,13 @@ return getLine(); } +@ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; +@ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -160,6 +165,7 @@ return getCharPositionInLine(); } +@ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Added: branches/astwrite/src/org/python/antlr/ast/AugLoad.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/AugLoad.java (rev 0) +++ branches/astwrite/src/org/python/antlr/ast/AugLoad.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -0,0 +1,18 @@ +// Autogenerated AST node +package org.python.antlr.ast; + +import org.python.antlr.AST; +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedType; + +@ExposedType(name = "_ast.AugLoad", base = PyObject.class) +public class AugLoad extends AST { + public static final PyType TYPE = PyType.fromClass(AugLoad.class); + public int asIndex() { + return asIndex(null); + } + public int asIndex(PyObject error) { + return 3; + } +} Added: branches/astwrite/src/org/python/antlr/ast/AugStore.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/AugStore.java (rev 0) +++ branches/astwrite/src/org/python/antlr/ast/AugStore.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -0,0 +1,18 @@ +// Autogenerated AST node +package org.python.antlr.ast; + +import org.python.antlr.AST; +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedType; + +@ExposedType(name = "_ast.AugStore", base = PyObject.class) +public class AugStore extends AST { + public static final PyType TYPE = PyType.fromClass(AugStore.class); + public int asIndex() { + return asIndex(null); + } + public int asIndex(PyObject error) { + return 4; + } +} Modified: branches/astwrite/src/org/python/antlr/ast/BinOp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BinOp.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/BinOp.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -62,6 +62,7 @@ private final static String[] fields = new String[] {"left", "op", "right"}; +@ExposedGet(name = "_fields") public String[] get_fields() { return fields; } public BinOp() { @@ -108,6 +109,7 @@ addChild(right); } + @ExposedGet(name = "repr") public String toString() { return "BinOp"; } @@ -139,6 +141,7 @@ } private int lineno = -1; +@ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -146,11 +149,13 @@ return getLine(); } +@ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; +@ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -158,6 +163,7 @@ return getCharPositionInLine(); } +@ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Added: branches/astwrite/src/org/python/antlr/ast/BitAnd.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BitAnd.java (rev 0) +++ branches/astwrite/src/org/python/antlr/ast/BitAnd.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -0,0 +1,18 @@ +// Autogenerated AST node +package org.python.antlr.ast; + +import org.python.antlr.AST; +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedType; + +@ExposedType(name = "_ast.BitAnd", base = PyObject.class) +public class BitAnd extends AST { + public static final PyType TYPE = PyType.fromClass(BitAnd.class); + public int asIndex() { + return asIndex(null); + } + public int asIndex(PyObject error) { + return 10; + } +} Added: branches/astwrite/src/org/python/antlr/ast/BitOr.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BitOr.java (rev 0) +++ branches/astwrite/src/org/python/antlr/ast/BitOr.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -0,0 +1,18 @@ +// Autogenerated AST node +package org.python.antlr.ast; + +import org.python.antlr.AST; +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedType; + +@ExposedType(name = "_ast.BitOr", base = PyObject.class) +public class BitOr extends AST { + public static final PyType TYPE = PyType.fromClass(BitOr.class); + public int asIndex() { + return asIndex(null); + } + public int asIndex(PyObject error) { + return 8; + } +} Added: branches/astwrite/src/org/python/antlr/ast/BitXor.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BitXor.java (rev 0) +++ branches/astwrite/src/org/python/antlr/ast/BitXor.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -0,0 +1,18 @@ +// Autogenerated AST node +package org.python.antlr.ast; + +import org.python.antlr.AST; +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedType; + +@ExposedType(name = "_ast.BitXor", base = PyObject.class) +public class BitXor extends AST { + public static final PyType TYPE = PyType.fromClass(BitXor.class); + public int asIndex() { + return asIndex(null); + } + public int asIndex(PyObject error) { + return 9; + } +} Modified: branches/astwrite/src/org/python/antlr/ast/BoolOp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/BoolOp.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/BoolOp.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -44,11 +44,12 @@ } @ExposedSet(name = "values") public void setValues(PyObject values) { - //FJW this.values = AstAdapters.to_exprList(values); + this.values = AstAdapters.to_exprList(values); } private final static String[] fields = new String[] {"op", "values"}; +@ExposedGet(name = "_fields") public String[] get_fields() { return fields; } public BoolOp() { @@ -103,6 +104,7 @@ } } + @ExposedGet(name = "repr") public String toString() { return "BoolOp"; } @@ -133,6 +135,7 @@ } private int lineno = -1; +@ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -140,11 +143,13 @@ return getLine(); } +@ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; +@ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -152,6 +157,7 @@ return getCharPositionInLine(); } +@ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Modified: branches/astwrite/src/org/python/antlr/ast/Break.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Break.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/Break.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -34,6 +34,7 @@ super(tree); } + @ExposedGet(name = "repr") public String toString() { return "Break"; } @@ -52,6 +53,7 @@ } private int lineno = -1; +@ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -59,11 +61,13 @@ return getLine(); } +@ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; +@ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -71,6 +75,7 @@ return getCharPositionInLine(); } +@ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Modified: branches/astwrite/src/org/python/antlr/ast/Call.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Call.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/Call.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -44,7 +44,7 @@ } @ExposedSet(name = "args") public void setArgs(PyObject args) { - //FJW this.args = AstAdapters.to_exprList(args); + this.args = AstAdapters.to_exprList(args); } private java.util.List<keywordType> keywords; @@ -57,7 +57,7 @@ } @ExposedSet(name = "keywords") public void setKeywords(PyObject keywords) { - //FJW this.keywords = AstAdapters.to_keywordList(keywords); + this.keywords = AstAdapters.to_keywordList(keywords); } private exprType starargs; @@ -90,6 +90,7 @@ private final static String[] fields = new String[] {"func", "args", "keywords", "starargs", "kwargs"}; +@ExposedGet(name = "_fields") public String[] get_fields() { return fields; } public Call() { @@ -186,6 +187,7 @@ addChild(kwargs); } + @ExposedGet(name = "repr") public String toString() { return "Call"; } @@ -237,6 +239,7 @@ } private int lineno = -1; +@ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -244,11 +247,13 @@ return getLine(); } +@ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; +@ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -256,6 +261,7 @@ return getCharPositionInLine(); } +@ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Modified: branches/astwrite/src/org/python/antlr/ast/ClassDef.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ClassDef.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/ClassDef.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -45,7 +45,7 @@ } @ExposedSet(name = "bases") public void setBases(PyObject bases) { - //FJW this.bases = AstAdapters.to_exprList(bases); + this.bases = AstAdapters.to_exprList(bases); } private java.util.List<stmtType> body; @@ -58,7 +58,7 @@ } @ExposedSet(name = "body") public void setBody(PyObject body) { - //FJW this.body = AstAdapters.to_stmtList(body); + this.body = AstAdapters.to_stmtList(body); } private java.util.List<exprType> decorator_list; @@ -71,13 +71,14 @@ } @ExposedSet(name = "decorator_list") public void setDecorator_list(PyObject decorator_list) { - //FJW this.decorator_list = AstAdapters.to_exprList(decorator_list); + this.decorator_list = AstAdapters.to_exprList(decorator_list); } private final static String[] fields = new String[] {"name", "bases", "body", "decorator_list"}; +@ExposedGet(name = "_fields") public String[] get_fields() { return fields; } public ClassDef() { @@ -180,6 +181,7 @@ } } + @ExposedGet(name = "repr") public String toString() { return "ClassDef"; } @@ -228,6 +230,7 @@ } private int lineno = -1; +@ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -235,11 +238,13 @@ return getLine(); } +@ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; +@ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -247,6 +252,7 @@ return getCharPositionInLine(); } +@ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Modified: branches/astwrite/src/org/python/antlr/ast/Compare.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Compare.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/Compare.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -44,7 +44,7 @@ } @ExposedSet(name = "ops") public void setOps(PyObject ops) { - //FJW this.ops = AstAdapters.to_cmpopList(ops); + this.ops = AstAdapters.to_cmpopList(ops); } private java.util.List<exprType> comparators; @@ -57,12 +57,13 @@ } @ExposedSet(name = "comparators") public void setComparators(PyObject comparators) { - //FJW this.comparators = AstAdapters.to_exprList(comparators); + this.comparators = AstAdapters.to_exprList(comparators); } private final static String[] fields = new String[] {"left", "ops", "comparators"}; +@ExposedGet(name = "_fields") public String[] get_fields() { return fields; } public Compare() { @@ -125,6 +126,7 @@ } } + @ExposedGet(name = "repr") public String toString() { return "Compare"; } @@ -160,6 +162,7 @@ } private int lineno = -1; +@ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -167,11 +170,13 @@ return getLine(); } +@ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; +@ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -179,6 +184,7 @@ return getCharPositionInLine(); } +@ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Modified: branches/astwrite/src/org/python/antlr/ast/Continue.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Continue.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/Continue.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -34,6 +34,7 @@ super(tree); } + @ExposedGet(name = "repr") public String toString() { return "Continue"; } @@ -52,6 +53,7 @@ } private int lineno = -1; +@ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -59,11 +61,13 @@ return getLine(); } +@ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; +@ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -71,6 +75,7 @@ return getCharPositionInLine(); } +@ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Added: branches/astwrite/src/org/python/antlr/ast/Del.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Del.java (rev 0) +++ branches/astwrite/src/org/python/antlr/ast/Del.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -0,0 +1,18 @@ +// Autogenerated AST node +package org.python.antlr.ast; + +import org.python.antlr.AST; +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedType; + +@ExposedType(name = "_ast.Del", base = PyObject.class) +public class Del extends AST { + public static final PyType TYPE = PyType.fromClass(Del.class); + public int asIndex() { + return asIndex(null); + } + public int asIndex(PyObject error) { + return 2; + } +} Modified: branches/astwrite/src/org/python/antlr/ast/Delete.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Delete.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/Delete.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -31,11 +31,12 @@ } @ExposedSet(name = "targets") public void setTargets(PyObject targets) { - //FJW this.targets = AstAdapters.to_exprList(targets); + this.targets = AstAdapters.to_exprList(targets); } private final static String[] fields = new String[] {"targets"}; +@ExposedGet(name = "_fields") public String[] get_fields() { return fields; } public Delete() { @@ -85,6 +86,7 @@ } } + @ExposedGet(name = "repr") public String toString() { return "Delete"; } @@ -112,6 +114,7 @@ } private int lineno = -1; +@ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -119,11 +122,13 @@ return getLine(); } +@ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; +@ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -131,6 +136,7 @@ return getCharPositionInLine(); } +@ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Modified: branches/astwrite/src/org/python/antlr/ast/Dict.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Dict.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/Dict.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -31,7 +31,7 @@ } @ExposedSet(name = "keys") public void setKeys(PyObject keys) { - //FJW this.keys = AstAdapters.to_exprList(keys); + this.keys = AstAdapters.to_exprList(keys); } private java.util.List<exprType> values; @@ -44,11 +44,12 @@ } @ExposedSet(name = "values") public void setValues(PyObject values) { - //FJW this.values = AstAdapters.to_exprList(values); + this.values = AstAdapters.to_exprList(values); } private final static String[] fields = new String[] {"keys", "values"}; +@ExposedGet(name = "_fields") public String[] get_fields() { return fields; } public Dict() { @@ -122,6 +123,7 @@ } } + @ExposedGet(name = "repr") public String toString() { return "Dict"; } @@ -158,6 +160,7 @@ } private int lineno = -1; +@ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -165,11 +168,13 @@ return getLine(); } +@ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; +@ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -177,6 +182,7 @@ return getCharPositionInLine(); } +@ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Added: branches/astwrite/src/org/python/antlr/ast/Div.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Div.java (rev 0) +++ branches/astwrite/src/org/python/antlr/ast/Div.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -0,0 +1,18 @@ +// Autogenerated AST node +package org.python.antlr.ast; + +import org.python.antlr.AST; +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedType; + +@ExposedType(name = "_ast.Div", base = PyObject.class) +public class Div extends AST { + public static final PyType TYPE = PyType.fromClass(Div.class); + public int asIndex() { + return asIndex(null); + } + public int asIndex(PyObject error) { + return 3; + } +} Modified: branches/astwrite/src/org/python/antlr/ast/Ellipsis.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Ellipsis.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/Ellipsis.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -34,6 +34,7 @@ super(tree); } + @ExposedGet(name = "repr") public String toString() { return "Ellipsis"; } Added: branches/astwrite/src/org/python/antlr/ast/Eq.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Eq.java (rev 0) +++ branches/astwrite/src/org/python/antlr/ast/Eq.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -0,0 +1,18 @@ +// Autogenerated AST node +package org.python.antlr.ast; + +import org.python.antlr.AST; +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedType; + +@ExposedType(name = "_ast.Eq", base = PyObject.class) +public class Eq extends AST { + public static final PyType TYPE = PyType.fromClass(Eq.class); + public int asIndex() { + return asIndex(null); + } + public int asIndex(PyObject error) { + return 0; + } +} Modified: branches/astwrite/src/org/python/antlr/ast/ExceptHandler.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ExceptHandler.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/ExceptHandler.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -57,12 +57,13 @@ } @ExposedSet(name = "body") public void setBody(PyObject body) { - //FJW this.body = AstAdapters.to_stmtList(body); + this.body = AstAdapters.to_stmtList(body); } private final static String[] fields = new String[] {"excepttype", "name", "body"}; +@ExposedGet(name = "_fields") public String[] get_fields() { return fields; } public ExceptHandler() { @@ -128,6 +129,7 @@ } } + @ExposedGet(name = "repr") public String toString() { return "ExceptHandler"; } @@ -165,6 +167,7 @@ } private int lineno = -1; +@ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -172,11 +175,13 @@ return getLine(); } +@ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; +@ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -184,6 +189,7 @@ return getCharPositionInLine(); } +@ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Modified: branches/astwrite/src/org/python/antlr/ast/Exec.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Exec.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/Exec.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -63,6 +63,7 @@ private final static String[] fields = new String[] {"body", "globals", "locals"}; +@ExposedGet(name = "_fields") public String[] get_fields() { return fields; } public Exec() { @@ -112,6 +113,7 @@ addChild(locals); } + @ExposedGet(name = "repr") public String toString() { return "Exec"; } @@ -145,6 +147,7 @@ } private int lineno = -1; +@ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -152,11 +155,13 @@ return getLine(); } +@ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; +@ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -164,6 +169,7 @@ return getCharPositionInLine(); } +@ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Modified: branches/astwrite/src/org/python/antlr/ast/Expr.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Expr.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/Expr.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -36,6 +36,7 @@ private final static String[] fields = new String[] {"value"}; +@ExposedGet(name = "_fields") public String[] get_fields() { return fields; } public Expr() { @@ -69,6 +70,7 @@ addChild(value); } + @ExposedGet(name = "repr") public String toString() { return "Expr"; } @@ -92,6 +94,7 @@ } private int lineno = -1; +@ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -99,11 +102,13 @@ return getLine(); } +@ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; +@ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -111,6 +116,7 @@ return getCharPositionInLine(); } +@ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Modified: branches/astwrite/src/org/python/antlr/ast/Expression.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Expression.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/Expression.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -36,6 +36,7 @@ private final static String[] fields = new String[] {"body"}; +@ExposedGet(name = "_fields") public String[] get_fields() { return fields; } public Expression() { @@ -69,6 +70,7 @@ addChild(body); } + @ExposedGet(name = "repr") public String toString() { return "Expression"; } Modified: branches/astwrite/src/org/python/antlr/ast/ExtSlice.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/ExtSlice.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/ExtSlice.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -31,11 +31,12 @@ } @ExposedSet(name = "dims") public void setDims(PyObject dims) { - //FJW this.dims = AstAdapters.to_sliceList(dims); + this.dims = AstAdapters.to_sliceList(dims); } private final static String[] fields = new String[] {"dims"}; +@ExposedGet(name = "_fields") public String[] get_fields() { return fields; } public ExtSlice() { @@ -85,6 +86,7 @@ } } + @ExposedGet(name = "repr") public String toString() { return "ExtSlice"; } Modified: branches/astwrite/src/org/python/antlr/ast/For.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/For.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/For.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -57,7 +57,7 @@ } @ExposedSet(name = "body") public void setBody(PyObject body) { - //FJW this.body = AstAdapters.to_stmtList(body); + this.body = AstAdapters.to_stmtList(body); } private java.util.List<stmtType> orelse; @@ -70,12 +70,13 @@ } @ExposedSet(name = "orelse") public void setOrelse(PyObject orelse) { - //FJW this.orelse = AstAdapters.to_stmtList(orelse); + this.orelse = AstAdapters.to_stmtList(orelse); } private final static String[] fields = new String[] {"target", "iter", "body", "orelse"}; +@ExposedGet(name = "_fields") public String[] get_fields() { return fields; } public For() { @@ -163,6 +164,7 @@ } } + @ExposedGet(name = "repr") public String toString() { return "For"; } @@ -209,6 +211,7 @@ } private int lineno = -1; +@ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -216,11 +219,13 @@ return getLine(); } +@ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; +@ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -228,6 +233,7 @@ return getCharPositionInLine(); } +@ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Modified: branches/astwrite/src/org/python/antlr/ast/FunctionDef.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/FunctionDef.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/FunctionDef.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -58,7 +58,7 @@ } @ExposedSet(name = "body") public void setBody(PyObject body) { - //FJW this.body = AstAdapters.to_stmtList(body); + this.body = AstAdapters.to_stmtList(body); } private java.util.List<exprType> decorator_list; @@ -71,13 +71,14 @@ } @ExposedSet(name = "decorator_list") public void setDecorator_list(PyObject decorator_list) { - //FJW this.decorator_list = AstAdapters.to_exprList(decorator_list); + this.decorator_list = AstAdapters.to_exprList(decorator_list); } private final static String[] fields = new String[] {"name", "args", "body", "decorator_list"}; +@ExposedGet(name = "_fields") public String[] get_fields() { return fields; } public FunctionDef() { @@ -161,6 +162,7 @@ } } + @ExposedGet(name = "repr") public String toString() { return "FunctionDef"; } @@ -205,6 +207,7 @@ } private int lineno = -1; +@ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -212,11 +215,13 @@ return getLine(); } +@ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; +@ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -224,6 +229,7 @@ return getCharPositionInLine(); } +@ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Modified: branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/GeneratorExp.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -44,11 +44,12 @@ } @ExposedSet(name = "generators") public void setGenerators(PyObject generators) { - //FJW this.generators = AstAdapters.to_comprehensionList(generators); + this.generators = AstAdapters.to_comprehensionList(generators); } private final static String[] fields = new String[] {"elt", "generators"}; +@ExposedGet(name = "_fields") public String[] get_fields() { return fields; } public GeneratorExp() { @@ -107,6 +108,7 @@ } } + @ExposedGet(name = "repr") public String toString() { return "GeneratorExp"; } @@ -139,6 +141,7 @@ } private int lineno = -1; +@ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -146,11 +149,13 @@ return getLine(); } +@ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; +@ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -158,6 +163,7 @@ return getCharPositionInLine(); } +@ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Modified: branches/astwrite/src/org/python/antlr/ast/Global.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Global.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/Global.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -31,11 +31,12 @@ } @ExposedSet(name = "names") public void setNames(PyObject names) { - //FJW this.names = AstAdapters.to_identifierList(names); + this.names = AstAdapters.to_identifierList(names); } private final static String[] fields = new String[] {"names"}; +@ExposedGet(name = "_fields") public String[] get_fields() { return fields; } public Global() { @@ -66,6 +67,7 @@ this.names = names; } + @ExposedGet(name = "repr") public String toString() { return "Global"; } @@ -87,6 +89,7 @@ } private int lineno = -1; +@ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -94,11 +97,13 @@ return getLine(); } +@ExposedSet(name = "lineno") public void setLineno(int num) { lineno = num; } private int col_offset = -1; +@ExposedGet(name = "col_offset") public int getCol_offset() { if (col_offset != -1) { return col_offset; @@ -106,6 +111,7 @@ return getCharPositionInLine(); } +@ExposedSet(name = "col_offset") public void setCol_offset(int num) { col_offset = num; } Added: branches/astwrite/src/org/python/antlr/ast/Gt.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/Gt.java (rev 0) +++ branches/astwrite/src/org/python/antlr/ast/Gt.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -0,0 +1,18 @@ +// Autogenerated AST node +package org.python.antlr.ast; + +import org.python.antlr.AST; +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedType; + +@ExposedType(name = "_ast.Gt", base = PyObject.class) +public class Gt extends AST { + public static final PyType TYPE = PyType.fromClass(Gt.class); + public int asIndex() { + return asIndex(null); + } + public int asIndex(PyObject error) { + return 4; + } +} Added: branches/astwrite/src/org/python/antlr/ast/GtE.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/GtE.java (rev 0) +++ branches/astwrite/src/org/python/antlr/ast/GtE.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -0,0 +1,18 @@ +// Autogenerated AST node +package org.python.antlr.ast; + +import org.python.antlr.AST; +import org.python.core.PyObject; +import org.python.core.PyType; +import org.python.expose.ExposedType; + +@ExposedType(name = "_ast.GtE", base = PyObject.class) +public class GtE extends AST { + public static final PyType TYPE = PyType.fromClass(GtE.class); + public int asIndex() { + return asIndex(null); + } + public int asIndex(PyObject error) { + return 5; + } +} Modified: branches/astwrite/src/org/python/antlr/ast/If.java =================================================================== --- branches/astwrite/src/org/python/antlr/ast/If.java 2008-12-02 10:54:26 UTC (rev 5676) +++ branches/astwrite/src/org/python/antlr/ast/If.java 2008-12-02 13:55:51 UTC (rev 5677) @@ -44,7 +44,7 @@ } @ExposedSet(name = "body") public void setBody(PyObject body) { - //FJW this.body = AstAdapters.to_stmtList(body); + this.body = AstAdapters.to_stmtList(body); } private java.util.List<stmtType> orelse; @@ -57,12 +57,13 @@ } @ExposedSet(name = "orelse") public void setOrelse(PyObject orelse) { - //FJW this.orelse = AstAdapters.to_stmtList(orelse); + this.orelse = AstAdapters.to_stmtList(orelse); } private final static String[] fields = new String[] {"test", "body", "orelse"}; +@ExposedGet(name = "_fields") public String[] get_fields() { return fields; } public If() { @@ -143,6 +144,7 @@ } } + @ExposedGet(name = "repr") public String toString() { return "If"; } @@ -184,6 +186,7 @@ } private int lineno = -1; +@ExposedGet(name = "lineno") public int getLineno() { if (lineno != -1) { return lineno; @@ -191,11 +194,13 @@ return getLine(); } +@ExposedSet(name = "lineno") ... [truncated message content] |
From: <cg...@us...> - 2008-12-02 10:54:30
|
Revision: 5676 http://jython.svn.sourceforge.net/jython/?rev=5676&view=rev Author: cgroves Date: 2008-12-02 10:54:26 +0000 (Tue, 02 Dec 2008) Log Message: ----------- Patch #1148 from Geoffrey French. Adds slice and negative index support to get, set and del methods on wrapped instances of java.util.List. Modified Paths: -------------- branches/newstyle-java-types/src/org/python/core/PyArray.java branches/newstyle-java-types/src/org/python/core/PyJavaType.java branches/newstyle-java-types/src/org/python/core/PyList.java branches/newstyle-java-types/src/org/python/core/PySequence.java branches/newstyle-java-types/src/org/python/core/ThreadState.java Added Paths: ----------- branches/newstyle-java-types/Lib/test/test_java_list_delegate.py branches/newstyle-java-types/src/org/python/core/SequenceIndexDelegate.java Added: branches/newstyle-java-types/Lib/test/test_java_list_delegate.py =================================================================== --- branches/newstyle-java-types/Lib/test/test_java_list_delegate.py (rev 0) +++ branches/newstyle-java-types/Lib/test/test_java_list_delegate.py 2008-12-02 10:54:26 UTC (rev 5676) @@ -0,0 +1,181 @@ +from java.util import ArrayList, List, Vector + +from copy import copy + +import unittest +import test.test_support + +class CollectionProxyTest(unittest.TestCase): + def _perform_op(self, value, op_func): + """ + Perform an operation + + value - the value to operate on + op_func - the function that applies the operation to value + + Returns: + the result of calling op_func, OR the exception that was raised in op_func + """ + try: + return op_func(value) + except Exception, e: + return type(e) + + def check_list(self, control, results, initial): + for result in results: + try: + len(result) + except: + print result + self.assertEquals(len(control), len(result), "%s is wrong for %s" % (type(result), initial)) + for pvalue, jvalue in zip(control, result): + self.assertEquals(pvalue, jvalue) + + def _list_op_test(self, initial_value, op_func, check_value): + """ + Tests a list operation + + Ensures that performing an operation on: + - a python list + - a java.util.List instance + + givens the same result in both cases + """ + lists = [list(initial_value), ArrayList(initial_value), Vector(initial_value)] + + results = [self._perform_op(l, op_func) for l in lists] + self.check_list(lists[0], lists[1:], initial_value) + if check_value or not isinstance(results[0], list): + for r in results[1:]: + self.assertEquals(results[0], r) + else: + self.check_list(results[0], results[1:], initial_value) + + def test_get_integer(self): + initial_value = range(0, 5) + + for i in xrange(-7, 7): + self._list_op_test(initial_value, lambda xs: xs[i], True) + + def test_set_integer(self): + initial_value = range(0, 5) + + def make_op_func(index): + def _f(xs): + xs[index] = 100 + return _f + + for i in xrange(-7, 7): + self._list_op_test(initial_value, make_op_func(i), True) + + def test_set_slice(self): + initial_value = range(0, 10) + + def make_op_func(i, j, k, v): + def _f(xs): + xs[i:j:k] = v + return _f + + for i in xrange(-12, 12): + for j in xrange(-12, 12): + for k in xrange(-12, 12): + self._list_op_test(initial_value, make_op_func(i, j, k, []), True) + self._list_op_test(initial_value, make_op_func(i, j, k, range(0,2)), True) + self._list_op_test(initial_value, make_op_func(i, j, k, range(0,4)), True) + self._list_op_test(initial_value, make_op_func(i, j, k, xrange(0,2)), True) + + def test_del_integer(self): + initial_value = range(0,5) + + def make_op_func(index): + def _f(xs): + del xs[index] + return _f + + for i in xrange(-7, 7): + self._list_op_test(initial_value, make_op_func(i), True) + + def test_del_slice(self): + initial_value = range(0,10) + + def make_op_func(i, j, k): + def _f(xs): + del xs[i:j:k] + return _f + + for i in xrange(-12, 12): + for j in xrange(-12, 12): + for k in xrange(-12, 12): + self._list_op_test(initial_value, make_op_func(i, j, k), True) + + def test_len(self): + jlist = ArrayList() + jlist.addAll(range(0, 10)) + + self.assert_(len(jlist) == 10) + + def test_iter(self): + jlist = ArrayList() + jlist.addAll(range(0, 10)) + + i = iter(jlist) + + x = list(i) + + self.assert_(x == range(0, 10)) + + def test_override_len(self): + class MyList (ArrayList): + def __len__(self): + return self.size() + 1; + + m = MyList() + m.addAll(range(0,10)) + + self.assert_(len(m) == 11) + + def test_override_iter(self): + class MyList (ArrayList): + def __iter__(self): + return iter(self.subList(0, self.size() - 1)); + + + m = MyList() + m.addAll(range(0,10)) + i = iter(m) + x = list(i) + + self.assert_(x == range(0, 9)) + + def test_override_getsetdelitem(self): + # Create an ArrayList subclass that provides some silly overrides for get/set/del item + class MyList (ArrayList): + def __getitem__(self, key): + return self.get(key) * 2; + + def __setitem__(self, key, value): + return self.set(key, value * 2); + + def __delitem__(self, key): + self.add(84) + + + m = MyList() + m.addAll(range(0,10)) + + self.assert_(m[1] == 2) + self.assert_(m.get(1) == 1) + + m[0] = 3 + self.assert_(m.get(0) == 6) + self.assert_(m[0] == 12) + + del m[0] + self.assert_(m.size() == 11) + self.assert_(m.get(10) == 84) + +def test_main(): + test.test_support.run_unittest(CollectionProxyTest) + +if __name__ == "__main__": + test_main() Modified: branches/newstyle-java-types/src/org/python/core/PyArray.java =================================================================== --- branches/newstyle-java-types/src/org/python/core/PyArray.java 2008-12-02 07:47:23 UTC (rev 5675) +++ branches/newstyle-java-types/src/org/python/core/PyArray.java 2008-12-02 10:54:26 UTC (rev 5676) @@ -239,10 +239,7 @@ @ExposedMethod(defaults = "null") final void array___setslice__(PyObject start, PyObject stop, PyObject step, PyObject value) { - if(value == null) { - value = step; - step = null; - } + seq___setslice__(start, stop, step, value); } @@ -656,30 +653,15 @@ } /** - * Delete the slice defined by <em>start</em>, <em>stop</em> and - * <em>step</em> from the array. + * Delete the slice defined by <em>start</em> to <em>stop</em> from the array. * * @param start * starting index of slice * @param stop * finishing index of slice - * @param step - * stepping increment between start and stop */ - protected void delRange(int start, int stop, int step) { - if (step == 1) { - delegate.remove(start, stop); - } else if (step > 1) { - for (int i = start; i < stop; i += step) { - delegate.remove(i); - i--; - stop--; - } - } else if (step < 0) { - for (int i = start; i >= 0 && i >= stop; i += step) { - delegate.remove(i); - } - } + protected void delRange(int start, int stop) { + delegate.remove(start, stop); } @ExposedMethod @@ -1198,7 +1180,7 @@ * value to be inserted into array */ public void insert(int index, PyObject value) { - index = calculateIndex(index); + index = boundToSequence(index); if ("u".equals(typecode)) { int codepoint = getCodePoint(value); delegate.makeInsertSpace(index); @@ -1241,7 +1223,7 @@ if (delegate.getSize() == 0) { throw Py.IndexError("pop from empty array"); } - index = fixindex(index); + index = delegator.fixindex(index); if (index == -1) { throw Py.IndexError("pop index out of range"); } Modified: branches/newstyle-java-types/src/org/python/core/PyJavaType.java =================================================================== --- branches/newstyle-java-types/src/org/python/core/PyJavaType.java 2008-12-02 07:47:23 UTC (rev 5675) +++ branches/newstyle-java-types/src/org/python/core/PyJavaType.java 2008-12-02 10:54:26 UTC (rev 5676) @@ -5,6 +5,7 @@ import java.lang.reflect.Member; import java.lang.reflect.Method; import java.lang.reflect.Modifier; +import java.util.ArrayList; import java.util.Collection; import java.util.Enumeration; import java.util.EventListener; @@ -445,32 +446,21 @@ PyBuiltinMethodNarrow listGetProxy = new ListMethod("__getitem__", 1, 1) { @Override public PyObject __call__(PyObject key) { - if (key instanceof PyInteger) { - return Py.java2py(asList().get(((PyInteger)key).getValue())); - } else { - throw Py.TypeError("only integer keys accepted"); - } + return new ListIndexDelegate(asList()).checkIdxAndGetItem(key); } }; PyBuiltinMethodNarrow listSetProxy = new ListMethod("__setitem__", 2, 2) { @Override public PyObject __call__(PyObject key, PyObject value) { - if (key instanceof PyInteger) { - asList().set(((PyInteger)key).getValue(), Py.tojava(value, Object.class)); - } else { - throw Py.TypeError("only integer keys accepted"); - } + new ListIndexDelegate(asList()).checkIdxAndSetItem(key, value); return Py.None; } }; PyBuiltinMethodNarrow listRemoveProxy = new ListMethod("__delitem__", 1, 1) { @Override public PyObject __call__(PyObject key) { - if (key instanceof PyInteger) { - return Py.java2py(asList().remove(((PyInteger)key).getValue())); - } else { - throw Py.TypeError("only integer keys accepted"); - } + new ListIndexDelegate(asList()).checkIdxAndDelItem(key); + return Py.None; } }; collectionProxies.put(List.class, new PyBuiltinMethod[] {listGetProxy, @@ -479,4 +469,86 @@ } return collectionProxies; } + + protected static class ListIndexDelegate extends SequenceIndexDelegate { + + private final List list; + + public ListIndexDelegate(List list) { + this.list = list; + } + @Override + public void delItem(int idx) { + list.remove(idx); + } + + @Override + public PyObject getItem(int idx) { + return Py.java2py(list.get(idx)); + } + + @Override + public PyObject getSlice(int start, int stop, int step) { + if (step > 0 && stop < start) { + stop = start; + } + int n = PySequence.sliceLength(start, stop, step); + List<Object> newList; + try { + newList = list.getClass().newInstance(); + } catch (Exception e) { + throw Py.JavaError(e); + } + int j = 0; + for (int i = start; j < n; i += step) { + newList.add(list.get(i)); + } + return Py.java2py(newList); + } + + @Override + public String getTypeName() { + return list.getClass().getName(); + } + + @Override + public int len() { + return list.size(); + } + + @Override + public void setItem(int idx, PyObject value) { + list.set(idx, value.__tojava__(Object.class)); + } + + @Override + public void setSlice(int start, int stop, int step, PyObject value) { + if (stop < start) { + stop = start; + } + if (step == 0) { + return; + } + if (value.javaProxy == this) { + List newseq = new ArrayList(len()); + for (Object object : ((List)value.javaProxy)) { + newseq.add(object); + } + value = Py.java2py(newseq); + } + int j = start; + for (PyObject obj : value.asIterable()) { + setItem(j, obj); + j += step; + } + } + + @Override + public void delItems(int start, int stop) { + int n = stop - start; + while (n-- > 0) { + delItem(start); + } + } + } } Modified: branches/newstyle-java-types/src/org/python/core/PyList.java =================================================================== --- branches/newstyle-java-types/src/org/python/core/PyList.java 2008-12-02 07:47:23 UTC (rev 5675) +++ branches/newstyle-java-types/src/org/python/core/PyList.java 2008-12-02 10:54:26 UTC (rev 5676) @@ -49,9 +49,9 @@ append(item); } } - + private static List<PyObject> listify(Iterator<PyObject> iter) { - final List<PyObject> list = new LinkedList<PyObject>(); + final List<PyObject> list = new LinkedList<PyObject>(); while (iter.hasNext()) { list.add(iter.next()); } @@ -112,20 +112,8 @@ remove(i); } - protected void delRange(int start, int stop, int step) { - if(step == 1) { - remove(start, stop); - } else if(step > 1) { - for(int i = start; i < stop; i += step) { - remove(i); - i--; - stop--; - } - } else if(step < 0) { - for(int i = start; i >= 0 && i >= stop; i += step) { - remove(i); - } - } + protected void delRange(int start, int stop) { + remove(start, stop); } protected void set(int i, PyObject value) { @@ -164,13 +152,7 @@ otherArray = otherArray.clone(); } list.replaceSubArray(start, stop, otherArray, 0, n); - } else if(step > 1) { - int n = value.__len__(); - for(int i = 0, j = 0; i < n; i++, j += step) { - list.pyset(j + start, value.pyget(i)); - } - } else if(step < 0) { - int n = value.__len__(); + } else if(step != 0) { if(value == this) { PyList newseq = new PyList(); PyObject iter = value.__iter__(); @@ -179,7 +161,8 @@ } value = newseq; } - for(int i = 0, j = list.size() - 1; i < n; i++, j += step) { + int n = value.__len__(); + for (int i = 0, j = start; i < n; i++, j += step) { list.pyset(j, value.pyget(i)); } } @@ -289,7 +272,7 @@ System.arraycopy(array, 0, array, i * size, size); } gListAllocatedStatus = __len__(); - return this; + return this; } @Override @@ -409,10 +392,6 @@ @ExposedMethod(defaults = "null") final void list___setslice__(PyObject start, PyObject stop, PyObject step, PyObject value) { - if(value == null) { - value = step; - step = null; - } seq___setslice__(start, stop, step, value); } @@ -455,7 +434,7 @@ /** * Add a single element to the end of list. - * + * * @param o * the element to add. */ @@ -471,7 +450,7 @@ /** * Return the number elements in the list that equals the argument. - * + * * @param o * the argument to test for. Testing is done with the <code>==</code> operator. */ @@ -493,7 +472,7 @@ /** * return smallest index where an element in the list equals the argument. - * + * * @param o * the argument to test for. Testing is done with the <code>==</code> operator. */ @@ -530,8 +509,8 @@ private int _index(PyObject o, String message, int start, int stop) { // Follow Python 2.3+ behavior - int validStop = calculateIndex(stop); - int validStart = calculateIndex(start); + int validStop = boundToSequence(stop); + int validStart = boundToSequence(start); PyObject[] array = getArray(); for(int i = validStart; i < validStop && i < size(); i++) { if(array[i].equals(o)) { @@ -544,7 +523,7 @@ /** * Insert the argument element into the list at the specified index. <br> * Same as <code>s[index:index] = [o] if index >= 0</code>. - * + * * @param index * the position where the element will be inserted. * @param o @@ -570,7 +549,7 @@ * Remove the first occurence of the argument from the list. The elements arecompared with the * <code>==</code> operator. <br> * Same as <code>del s[s.index(x)]</code> - * + * * @param o * the element to search for and remove. */ @@ -616,7 +595,7 @@ /** * Removes and return the <code>n</code> indexed element in the list. - * + * * @param n * the index of the element to remove and return. */ @@ -644,7 +623,7 @@ /** * Append the elements in the argument sequence to the end of the list. <br> * Same as <code>s[len(s):len(s)] = o</code>. - * + * * @param o * the sequence of items to append to the list. */ @@ -691,11 +670,11 @@ * the sorting process down considerably; e.g. to sort a list in reverse order it is much faster * to use calls to the methods sort() and reverse() than to use the built-in function sort() * with a comparison function that reverses the ordering of the elements. - * + * * @param compare * the comparison function. */ - + /** * Sort the items of the list in place. Items is compared with the normal relative comparison * operators. @@ -723,7 +702,7 @@ MergeState ms = new MergeState(this, cmp, key, reverse.__nonzero__()); ms.sort(); } - + public int hashCode() { return list___hash__(); } Modified: branches/newstyle-java-types/src/org/python/core/PySequence.java =================================================================== --- branches/newstyle-java-types/src/org/python/core/PySequence.java 2008-12-02 07:47:23 UTC (rev 5675) +++ branches/newstyle-java-types/src/org/python/core/PySequence.java 2008-12-02 10:54:26 UTC (rev 5676) @@ -80,9 +80,10 @@ getType().fastGetName())); } - protected void delRange(int start, int stop, int step) { + protected void delRange(int start, int stop) { throw Py.TypeError(String.format("'%s' object does not support item deletion", getType().fastGetName())); + } public boolean __nonzero__() { @@ -244,20 +245,11 @@ return ret; } - protected int fixindex(int index) { - int l = __len__(); - if(index < 0) { - index += l; - } - if(index < 0 || index >= l) { - return -1; - } else { - return index; - } - } - - // XXX: more appropriate naming of this vs fixindex - protected int calculateIndex(int index) { + /** + * Adjusts <code>index</code> such that it's >= 0 and <= __len__. If <code>index</code> starts + * off negative, it's treated as an index from the end of the sequence going back to the start. + */ + protected int boundToSequence(int index) { int length = __len__(); if(index < 0) { index = index += length; @@ -275,12 +267,7 @@ } final synchronized PyObject seq___finditem__(int index) { - index = fixindex(index); - if(index == -1) { - return null; - } else { - return pyget(index); - } + return delegator.checkIdxAndFindItem(index); } public PyObject __finditem__(PyObject index) { @@ -288,14 +275,7 @@ } final PyObject seq___finditem__(PyObject index) { - if (index.isIndex()) { - return seq___finditem__(index.asIndex(Py.IndexError)); - } else if (index instanceof PySlice) { - PySlice s = (PySlice)index; - return seq___getslice__(s.start, s.stop, s.step); - } else { - throw Py.TypeError(getType().fastGetName() + " indices must be integers"); - } + return delegator.checkIdxAndFindItem(index); } public PyObject __getitem__(PyObject index) { @@ -303,11 +283,7 @@ } final PyObject seq___getitem__(PyObject index) { - PyObject ret = __finditem__(index); - if(ret == null) { - throw Py.IndexError("index out of range: " + index); - } - return ret; + return delegator.checkIdxAndGetItem(index); } public boolean isMappingType() throws PyIgnoreMethodTag { @@ -322,13 +298,8 @@ return seq___getslice__(start, stop, step); } - final synchronized PyObject seq___getslice__(PyObject start, PyObject stop) { - return seq___getslice__(start, stop, null); - } - final synchronized PyObject seq___getslice__(PyObject start, PyObject stop, PyObject step) { - int[] indices = new PySlice(start, stop, step).indicesEx(__len__()); - return getslice(indices[0], indices[1], indices[2]); + return delegator.getSlice(new PySlice(start, stop, step)); } public synchronized void __setslice__(PyObject start, @@ -338,21 +309,15 @@ seq___setslice__(start, stop, step, value); } - final synchronized void seq___setslice__(PyObject start, PyObject stop, PyObject value) { - seq___setslice__(start, stop, null, value); - } - final synchronized void seq___setslice__(PyObject start, PyObject stop, PyObject step, PyObject value) { - PySlice slice = new PySlice(start, stop, step); - int[] indices = slice.indicesEx(__len__()); - if ((slice.step != Py.None) && value.__len__() != indices[3]) { - throw Py.ValueError(String.format("attempt to assign sequence of size %d to extended " - + "slice of size %d", value.__len__(), indices[3])); + if (value == null) { + value = step; + step = null; } - setslice(indices[0], indices[1], indices[2], value); + delegator.checkIdxAndSetSlice(new PySlice(start, stop, step), value); } public synchronized void __delslice__(PyObject start, PyObject stop, PyObject step) { @@ -360,35 +325,19 @@ } final synchronized void seq___delslice__(PyObject start, PyObject stop, PyObject step) { - int[] indices = new PySlice(start, stop, step).indicesEx(__len__()); - delRange(indices[0], indices[1], indices[2]); + delegator.checkIdxAndDelItem(new PySlice(start, stop, step)); } public synchronized void __setitem__(int index, PyObject value) { - seq___setitem__(index, value); + delegator.checkIdxAndSetItem(index, value); } - final synchronized void seq___setitem__(int index, PyObject value) { - int i = fixindex(index); - if(i == -1) { - throw Py.IndexError(getType().fastGetName() + " assignment index out of range"); - } - set(i, value); - } - public void __setitem__(PyObject index, PyObject value) { seq___setitem__(index, value); } final void seq___setitem__(PyObject index, PyObject value) { - if (index.isIndex()) { - seq___setitem__(index.asIndex(Py.IndexError), value); - } else if (index instanceof PySlice) { - PySlice s = (PySlice)index; - seq___setslice__(s.start, s.stop, s.step, value); - } else { - throw Py.TypeError(getType().fastGetName() + " indices must be integers"); - } + delegator.checkIdxAndSetItem(index, value); } public synchronized void __delitem__(PyObject index) { @@ -396,18 +345,7 @@ } final synchronized void seq___delitem__(PyObject index) { - if (index.isIndex()) { - int i = fixindex(index.asIndex(Py.IndexError)); - if (i == -1) { - throw Py.IndexError(getType().fastGetName() + " assignment index out of range"); - } - del(i); - } else if (index instanceof PySlice) { - PySlice s = (PySlice)index; - seq___delslice__(s.start, s.stop, s.step); - } else { - throw Py.TypeError(getType().fastGetName() + " indices must be integers"); - } + delegator.checkIdxAndDelItem(index); } public synchronized Object __tojava__(Class c) throws PyIgnoreMethodTag { @@ -451,4 +389,48 @@ } return null; } + + protected final SequenceIndexDelegate delegator = new SequenceIndexDelegate() { + + @Override + public String getTypeName() { + return getType().fastGetName(); + } + + @Override + public void setItem(int idx, PyObject value) { + set(idx, value); + } + + @Override + public void setSlice(int start, int stop, int step, PyObject value) { + setslice(start, stop, step, value); + } + + @Override + public int len() { + return __len__(); + } + + @Override + public void delItem(int idx) { + del(idx); + } + + @Override + public void delItems(int start, int stop) { + delRange(start, stop); + } + + + @Override + public PyObject getItem(int idx) { + return pyget(idx); + } + + @Override + public PyObject getSlice(int start, int stop, int step) { + return getslice(start, stop, step); + } + }; } Added: branches/newstyle-java-types/src/org/python/core/SequenceIndexDelegate.java =================================================================== --- branches/newstyle-java-types/src/org/python/core/SequenceIndexDelegate.java (rev 0) +++ branches/newstyle-java-types/src/org/python/core/SequenceIndexDelegate.java 2008-12-02 10:54:26 UTC (rev 5676) @@ -0,0 +1,127 @@ +package org.python.core; + +/** + * Handles all the index checking and manipulation for get, set and del operations on a sequence. + */ +public abstract class SequenceIndexDelegate { + + public abstract int len(); + + public abstract PyObject getItem(int idx); + + public abstract void setItem(int idx, PyObject value); + + public abstract void delItem(int idx); + + public abstract PyObject getSlice(int start, int stop, int step); + + public abstract void setSlice(int start, int stop, int step, PyObject value); + + public abstract void delItems(int start, int stop); + + public abstract String getTypeName(); + + public void checkIdxAndSetItem(PyObject idx, PyObject value) { + if (idx.isIndex()) { + checkIdxAndSetItem(idx.asIndex(Py.IndexError), value); + } else if (idx instanceof PySlice) { + checkIdxAndSetSlice((PySlice)idx, value); + } else { + throw Py.TypeError(getTypeName() + " indices must be integers"); + } + } + + public void checkIdxAndSetSlice(PySlice slice, PyObject value) { + int[] indices = slice.indicesEx(len()); + if ((slice.step != Py.None) && value.__len__() != indices[3]) { + throw Py.ValueError(String.format("attempt to assign sequence of size %d to extended " + + "slice of size %d", value.__len__(), indices[3])); + } + setSlice(indices[0], indices[1], indices[2], value); + } + + public void checkIdxAndSetItem(int idx, PyObject value) { + setItem(checkIdx(idx), value); + } + + public void checkIdxAndDelItem(PyObject idx) { + if (idx.isIndex()) { + delItem(checkIdx(idx.asIndex(Py.IndexError))); + } else if (idx instanceof PySlice) { + int[] indices = ((PySlice)idx).indicesEx(len()); + delSlice(indices[0], indices[1], indices[2]); + } else { + throw Py.TypeError(getTypeName() + " indices must be integers"); + } + } + + public PyObject checkIdxAndGetItem(PyObject idx) { + PyObject res = checkIdxAndFindItem(idx); + if (res == null) { + throw Py.IndexError("index out of range: " + idx); + } + return res; + } + + public PyObject checkIdxAndFindItem(PyObject idx) { + if (idx.isIndex()) { + return checkIdxAndFindItem(idx.asIndex(Py.IndexError)); + } else if (idx instanceof PySlice) { + return getSlice((PySlice)idx); + } else { + throw Py.TypeError(getTypeName() + " indices must be integers"); + } + } + + public PyObject getSlice(PySlice slice) { + int[] indices = slice.indicesEx(len()); + return getSlice(indices[0], indices[1], indices[2]); + } + + public PyObject checkIdxAndFindItem(int idx) { + idx = fixindex(idx); + if(idx == -1) { + return null; + } else { + return getItem(idx); + } + } + + private int checkIdx(int idx) { + int i = fixindex(idx); + if (i == -1) { + throw Py.IndexError(getTypeName() + " assignment index out of range"); + } + return i; + } + + int fixindex(int index) { + int l = len(); + if(index < 0) { + index += l; + } + if(index < 0 || index >= l) { + return -1; + } else { + return index; + } + } + + private void delSlice(int start, int stop, int step) { + if(step == 1) { + if (stop > start) { + delItems(start, stop); + } + } else if(step > 1) { + for(int i = start; i < stop; i += step) { + delItem(i); + i--; + stop--; + } + } else if(step < 0) { + for(int i = start; i >= 0 && i >= stop; i += step) { + delItem(i); + } + } + } +} \ No newline at end of file Modified: branches/newstyle-java-types/src/org/python/core/ThreadState.java =================================================================== --- branches/newstyle-java-types/src/org/python/core/ThreadState.java 2008-12-02 07:47:23 UTC (rev 5675) +++ branches/newstyle-java-types/src/org/python/core/ThreadState.java 2008-12-02 10:54:26 UTC (rev 5676) @@ -75,7 +75,7 @@ } for (int i = reprStack.size() - 1; i >= 0; i--) { if (reprStack.pyget(i) == obj) { - reprStack.delRange(i, reprStack.size(), 1); + reprStack.delRange(i, reprStack.size()); } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cg...@us...> - 2008-12-02 07:47:28
|
Revision: 5675 http://jython.svn.sourceforge.net/jython/?rev=5675&view=rev Author: cgroves Date: 2008-12-02 07:47:23 +0000 (Tue, 02 Dec 2008) Log Message: ----------- Hook up container methods for Map separately as it isn't actually a Collection. Modified Paths: -------------- branches/newstyle-java-types/Lib/test/test_java_integration.py branches/newstyle-java-types/src/org/python/core/Py.java branches/newstyle-java-types/src/org/python/core/PyJavaType.java branches/newstyle-java-types/src/org/python/core/PyObject.java Modified: branches/newstyle-java-types/Lib/test/test_java_integration.py =================================================================== --- branches/newstyle-java-types/Lib/test/test_java_integration.py 2008-12-02 07:46:14 UTC (rev 5674) +++ branches/newstyle-java-types/Lib/test/test_java_integration.py 2008-12-02 07:47:23 UTC (rev 5675) @@ -6,7 +6,7 @@ from test import test_support from java.awt import (Dimension, Component, Rectangle, Button, Color, HeadlessException) -from java.util import Vector, Hashtable +from java.util import ArrayList, Vector, HashMap, Hashtable from java.io import FileOutputStream, FileWriter, OutputStreamWriter from java.lang import Runnable, Thread, ThreadGroup, System, Runtime, Math, Byte @@ -394,6 +394,37 @@ x = lang.String('test') self.assertRaises(TypeError, list, x) +class JavaDelegationTest(unittest.TestCase): + def test_list_delegation(self): + for c in ArrayList, Vector: + a = c() + a.add("blah") + self.assertTrue("blah" in a) + self.assertEquals(1, len(a)) + n = 0 + for i in a: + n += 1 + self.assertEquals("blah", i) + self.assertEquals(1, n) + self.assertEquals("blah", a[0]) + a[0] = "bleh" + del a[0] + self.assertEquals(0, len(a)) + + def test_map_delegation(self): + m = HashMap() + m["a"] = "b" + self.assertTrue("a" in m) + self.assertEquals("b", m["a"]) + n = 0 + for k in m: + n += 1 + self.assertEquals("a", k) + self.assertEquals(1, n) + del m["a"] + self.assertEquals(0, len(m)) + + def test_main(): test_support.run_unittest(AbstractOnSyspathTest, InstantiationTest, @@ -414,6 +445,7 @@ MethodInvTest, InterfaceTest, JavaStringTest, + JavaDelegationTest, ) if __name__ == "__main__": Modified: branches/newstyle-java-types/src/org/python/core/Py.java =================================================================== --- branches/newstyle-java-types/src/org/python/core/Py.java 2008-12-02 07:46:14 UTC (rev 5674) +++ branches/newstyle-java-types/src/org/python/core/Py.java 2008-12-02 07:47:23 UTC (rev 5675) @@ -90,7 +90,6 @@ BOOTSTRAP_TYPES.add(PyType.class); BOOTSTRAP_TYPES.add(PyBuiltinCallable.class); BOOTSTRAP_TYPES.add(PyDataDescr.class); - BOOTSTRAP_TYPES.add(PyMethodDescr.class); } /** A unique object to indicate no conversion is possible Modified: branches/newstyle-java-types/src/org/python/core/PyJavaType.java =================================================================== --- branches/newstyle-java-types/src/org/python/core/PyJavaType.java 2008-12-02 07:46:14 UTC (rev 5674) +++ branches/newstyle-java-types/src/org/python/core/PyJavaType.java 2008-12-02 07:47:23 UTC (rev 5675) @@ -247,7 +247,7 @@ dict.__setitem__(inner.getSimpleName(), PyType.fromClass(inner)); } for (Map.Entry<Class<?>, PyBuiltinMethod[]> entry : getCollectionProxies().entrySet()) { - if (entry.getKey().isAssignableFrom(underlying_class)) { + if (entry.getKey() == underlying_class) { for (PyBuiltinMethod meth : entry.getValue()) { dict.__setitem__(meth.info.getName(), new PyMethodDescr(this, meth)); } @@ -268,7 +268,7 @@ has_delete = getDescrMethod(underlying_class, "__delete__", PyObject.class) != null || getDescrMethod(underlying_class, "_dodel", PyObject.class) != null; } else { - // Pass __eq__ through to subclasses of Object + // Pass __eq__ and __repr__ through to subclasses of Object PyBuiltinCallable equals = new PyBuiltinMethodNarrow("__eq__", 1, 1) { @Override public PyObject __call__(PyObject o) { @@ -277,6 +277,13 @@ } }; dict.__setitem__("__eq__", new PyMethodDescr(this, equals)); + PyBuiltinCallable repr = new PyBuiltinMethodNarrow("__repr__", 0, 0) { + @Override + public PyObject __call__() { + return Py.newString(self.getJavaProxy().toString()); + } + }; + dict.__setitem__("__repr__", new PyMethodDescr(this, repr)); } } @@ -328,12 +335,12 @@ } } - private static class IteratorIter extends PyIterator { + private static class IterableIter extends PyIterator { private Iterator<Object> proxy; - public IteratorIter(Iterator<Object> proxy) { - this.proxy = proxy; + public IterableIter(Iterable<Object> proxy) { + this.proxy = proxy.iterator(); } public PyObject __iternext__() { @@ -365,6 +372,13 @@ if (collectionProxies == null) { collectionProxies = Generic.map(); + PyBuiltinMethodNarrow iterableProxy = new PyBuiltinMethodNarrow("__iter__", 0, 0) { + public PyObject __call__() { + return new IterableIter(((Iterable)self.getJavaProxy())); + } + }; + collectionProxies.put(Iterable.class, new PyBuiltinMethod[] {iterableProxy}); + PyBuiltinMethodNarrow lenProxy = new PyBuiltinMethodNarrow("__len__", 0, 0) { @Override public PyObject __call__() { @@ -372,13 +386,42 @@ } }; + PyBuiltinMethodNarrow containsProxy = new PyBuiltinMethodNarrow("__contains__", 1, 1) { + @Override + public PyObject __call__(PyObject obj) { + Object other = obj.__tojava__(Object.class); + boolean contained = ((Collection<?>)self.getJavaProxy()).contains(other); + return contained ? Py.True : Py.False; + } + }; + collectionProxies.put(Collection.class, new PyBuiltinMethod[] {lenProxy, + containsProxy}); + + // Map doesn't extend Collection, so it needs its own version of len, iter and contains + PyBuiltinMethodNarrow mapLenProxy = new MapMethod("__len__", 0, 0) { + @Override + public PyObject __call__() { + return Py.java2py(asMap().size()); + } + }; + PyBuiltinMethodNarrow mapIterProxy = new MapMethod("__iter__", 0, 0) { + @Override + public PyObject __call__() { + return new IterableIter(asMap().keySet()); + } + }; + PyBuiltinMethodNarrow mapContainsProxy = new MapMethod("__contains__", 1, 1) { + public PyObject __call__(PyObject obj) { + Object other = obj.__tojava__(Object.class); + return asMap().containsKey(other) ? Py.True : Py.False; + } + }; PyBuiltinMethodNarrow mapGetProxy = new MapMethod("__getitem__", 1, 1) { @Override public PyObject __call__(PyObject key) { return Py.java2py(asMap().get(Py.tojava(key, Object.class))); } }; - PyBuiltinMethodNarrow mapPutProxy = new MapMethod("__setitem__", 2, 2) { @Override public PyObject __call__(PyObject key, PyObject value) { @@ -386,13 +429,18 @@ Py.tojava(value, Object.class))); } }; - PyBuiltinMethodNarrow mapRemoveProxy = new MapMethod("__delitem__", 1, 1) { @Override - public PyObject __call__(PyObject key, PyObject value) { + public PyObject __call__(PyObject key) { return Py.java2py(asMap().remove(Py.tojava(key, Object.class))); } }; + collectionProxies.put(Map.class, new PyBuiltinMethod[] {mapLenProxy, + mapIterProxy, + mapContainsProxy, + mapGetProxy, + mapPutProxy, + mapRemoveProxy}); PyBuiltinMethodNarrow listGetProxy = new ListMethod("__getitem__", 1, 1) { @Override @@ -404,7 +452,6 @@ } } }; - PyBuiltinMethodNarrow listSetProxy = new ListMethod("__setitem__", 2, 2) { @Override public PyObject __call__(PyObject key, PyObject value) { @@ -416,10 +463,9 @@ return Py.None; } }; - PyBuiltinMethodNarrow listRemoveProxy = new ListMethod("__delitem__", 1, 1) { @Override - public PyObject __call__(PyObject key, PyObject value) { + public PyObject __call__(PyObject key) { if (key instanceof PyInteger) { return Py.java2py(asList().remove(((PyInteger)key).getValue())); } else { @@ -427,20 +473,9 @@ } } }; - - PyBuiltinMethodNarrow iterableProxy = new PyBuiltinMethodNarrow("__iter__", 0, 0) { - public PyObject __call__() { - return new IteratorIter(((Iterable)self.getJavaProxy()).iterator()); - } - }; - collectionProxies.put(Iterable.class, new PyBuiltinMethod[] {iterableProxy}); - collectionProxies.put(Collection.class, new PyBuiltinMethod[] {lenProxy}); - collectionProxies.put(Map.class, new PyBuiltinMethod[] {mapGetProxy, - mapPutProxy, - mapRemoveProxy}); collectionProxies.put(List.class, new PyBuiltinMethod[] {listGetProxy, - listSetProxy, - listRemoveProxy}); + listSetProxy, + listRemoveProxy}); } return collectionProxies; } Modified: branches/newstyle-java-types/src/org/python/core/PyObject.java =================================================================== --- branches/newstyle-java-types/src/org/python/core/PyObject.java 2008-12-02 07:46:14 UTC (rev 5674) +++ branches/newstyle-java-types/src/org/python/core/PyObject.java 2008-12-02 07:47:23 UTC (rev 5675) @@ -754,9 +754,9 @@ } /** - * @return an Iterable over the Python iterator returned by __iter__ on this object. If this - * object doesn't support __iter__, a TypeException will be raised when iterator is - * called on the returned Iterable. + * Returns an Iterable over the Python iterator returned by __iter__ on this object. If this + * object doesn't support __iter__, a TypeException will be raised when iterator is called on + * the returned Iterable. */ public Iterable<PyObject> asIterable() { return new Iterable<PyObject>() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cg...@us...> - 2008-12-02 07:46:19
|
Revision: 5674 http://jython.svn.sourceforge.net/jython/?rev=5674&view=rev Author: cgroves Date: 2008-12-02 07:46:14 +0000 (Tue, 02 Dec 2008) Log Message: ----------- Better error message for a bad version string, use the actual banner for checking Modified Paths: -------------- branches/newstyle-java-types/Lib/test/test_cmd_line.py Modified: branches/newstyle-java-types/Lib/test/test_cmd_line.py =================================================================== --- branches/newstyle-java-types/Lib/test/test_cmd_line.py 2008-12-02 05:23:26 UTC (rev 5673) +++ branches/newstyle-java-types/Lib/test/test_cmd_line.py 2008-12-02 07:46:14 UTC (rev 5674) @@ -45,8 +45,11 @@ self.assertTrue('usage' in self.start_python('-h')) def test_version(self): - version = 'Jython %d.%d' % sys.version_info[:2] - self.assertTrue(self.start_python('-V').startswith(version)) + from org.python.util import InteractiveConsole + expected = InteractiveConsole.getDefaultBanner() + reported = self.start_python('-V') + self.assertTrue(reported.startswith(expected), + "-V should start with '%s' but it printed '%s'" % (expected, reported)) def test_main(): test.test_support.run_unittest(CmdLineTest) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cg...@us...> - 2008-12-02 05:23:28
|
Revision: 5673 http://jython.svn.sourceforge.net/jython/?rev=5673&view=rev Author: cgroves Date: 2008-12-02 05:23:26 +0000 (Tue, 02 Dec 2008) Log Message: ----------- Changing the items in the dicts of loaded classes seemed to be confusing the exceptions module at least, so let's leave reloading Java classes a no-op until a later date. Modified Paths: -------------- branches/newstyle-java-types/src/org/python/core/__builtin__.java Modified: branches/newstyle-java-types/src/org/python/core/__builtin__.java =================================================================== --- branches/newstyle-java-types/src/org/python/core/__builtin__.java 2008-12-02 03:31:45 UTC (rev 5672) +++ branches/newstyle-java-types/src/org/python/core/__builtin__.java 2008-12-02 05:23:26 UTC (rev 5673) @@ -98,7 +98,8 @@ if (arg1 instanceof PySystemState) { return __builtin__.reload((PySystemState)arg1); } else if(arg1 instanceof PyJavaType) { - return __builtin__.reload((PyJavaType)arg1); + // This has always been a no-op. Should be disabled in py3k. + return arg1; } throw Py.TypeError("reload() argument must be a module"); } @@ -1107,12 +1108,6 @@ return o; } - public static PyObject reload(PyJavaType o) { - // Reset the contents of our dict to the state from our class - o.init(); - return o; - } - public static PyString repr(PyObject o) { return o.__repr__(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |