[Jython-checkins] jython: Improved traverse method of derived classes.
stefan.richthofer
jython-checkins at python.org
Tue Feb 24 05:27:51 CET 2015
https://hg.python.org/jython/rev/9f045cc6d5b0
changeset: 7598:9f045cc6d5b0
user: Stefan Richthofer <stefan.richthofer at gmx.de>
date: Tue Feb 24 05:27:15 2015 +0100
summary:
Improved traverse method of derived classes.
Further added test for (time-consuming) non-PyObject finalizers
notifying gc and improved various gc-related docstrings.
files:
Lib/test/test_gc_jy.py | 59 ++++++++-
src/org/python/antlr/ast/AssertDerived.java | 11 +-
src/org/python/antlr/ast/AssignDerived.java | 11 +-
src/org/python/antlr/ast/AttributeDerived.java | 11 +-
src/org/python/antlr/ast/AugAssignDerived.java | 11 +-
src/org/python/antlr/ast/BinOpDerived.java | 11 +-
src/org/python/antlr/ast/BoolOpDerived.java | 11 +-
src/org/python/antlr/ast/BreakDerived.java | 11 +-
src/org/python/antlr/ast/CallDerived.java | 11 +-
src/org/python/antlr/ast/ClassDefDerived.java | 11 +-
src/org/python/antlr/ast/CompareDerived.java | 11 +-
src/org/python/antlr/ast/ContinueDerived.java | 11 +-
src/org/python/antlr/ast/DeleteDerived.java | 11 +-
src/org/python/antlr/ast/DictDerived.java | 11 +-
src/org/python/antlr/ast/EllipsisDerived.java | 11 +-
src/org/python/antlr/ast/ExceptHandlerDerived.java | 11 +-
src/org/python/antlr/ast/ExecDerived.java | 11 +-
src/org/python/antlr/ast/ExprDerived.java | 11 +-
src/org/python/antlr/ast/ExpressionDerived.java | 11 +-
src/org/python/antlr/ast/ExtSliceDerived.java | 11 +-
src/org/python/antlr/ast/ForDerived.java | 11 +-
src/org/python/antlr/ast/FunctionDefDerived.java | 11 +-
src/org/python/antlr/ast/GeneratorExpDerived.java | 11 +-
src/org/python/antlr/ast/GlobalDerived.java | 11 +-
src/org/python/antlr/ast/IfDerived.java | 11 +-
src/org/python/antlr/ast/IfExpDerived.java | 11 +-
src/org/python/antlr/ast/ImportDerived.java | 11 +-
src/org/python/antlr/ast/ImportFromDerived.java | 11 +-
src/org/python/antlr/ast/IndexDerived.java | 11 +-
src/org/python/antlr/ast/InteractiveDerived.java | 11 +-
src/org/python/antlr/ast/LambdaDerived.java | 11 +-
src/org/python/antlr/ast/ListCompDerived.java | 11 +-
src/org/python/antlr/ast/ListDerived.java | 11 +-
src/org/python/antlr/ast/ModuleDerived.java | 11 +-
src/org/python/antlr/ast/NameDerived.java | 11 +-
src/org/python/antlr/ast/NumDerived.java | 11 +-
src/org/python/antlr/ast/PassDerived.java | 11 +-
src/org/python/antlr/ast/PrintDerived.java | 11 +-
src/org/python/antlr/ast/RaiseDerived.java | 11 +-
src/org/python/antlr/ast/ReprDerived.java | 11 +-
src/org/python/antlr/ast/ReturnDerived.java | 11 +-
src/org/python/antlr/ast/SliceDerived.java | 11 +-
src/org/python/antlr/ast/StrDerived.java | 11 +-
src/org/python/antlr/ast/SubscriptDerived.java | 11 +-
src/org/python/antlr/ast/SuiteDerived.java | 11 +-
src/org/python/antlr/ast/TryExceptDerived.java | 11 +-
src/org/python/antlr/ast/TryFinallyDerived.java | 11 +-
src/org/python/antlr/ast/TupleDerived.java | 11 +-
src/org/python/antlr/ast/UnaryOpDerived.java | 11 +-
src/org/python/antlr/ast/WhileDerived.java | 11 +-
src/org/python/antlr/ast/WithDerived.java | 11 +-
src/org/python/antlr/ast/YieldDerived.java | 11 +-
src/org/python/antlr/ast/aliasDerived.java | 11 +-
src/org/python/antlr/ast/argumentsDerived.java | 11 +-
src/org/python/antlr/ast/comprehensionDerived.java | 11 +-
src/org/python/antlr/ast/keywordDerived.java | 11 +-
src/org/python/antlr/op/AddDerived.java | 11 +-
src/org/python/antlr/op/AndDerived.java | 11 +-
src/org/python/antlr/op/AugLoadDerived.java | 11 +-
src/org/python/antlr/op/AugStoreDerived.java | 11 +-
src/org/python/antlr/op/BitAndDerived.java | 11 +-
src/org/python/antlr/op/BitOrDerived.java | 11 +-
src/org/python/antlr/op/BitXorDerived.java | 11 +-
src/org/python/antlr/op/DelDerived.java | 11 +-
src/org/python/antlr/op/DivDerived.java | 11 +-
src/org/python/antlr/op/EqDerived.java | 11 +-
src/org/python/antlr/op/FloorDivDerived.java | 11 +-
src/org/python/antlr/op/GtDerived.java | 11 +-
src/org/python/antlr/op/GtEDerived.java | 11 +-
src/org/python/antlr/op/InDerived.java | 11 +-
src/org/python/antlr/op/InvertDerived.java | 11 +-
src/org/python/antlr/op/IsDerived.java | 11 +-
src/org/python/antlr/op/IsNotDerived.java | 11 +-
src/org/python/antlr/op/LShiftDerived.java | 11 +-
src/org/python/antlr/op/LoadDerived.java | 11 +-
src/org/python/antlr/op/LtDerived.java | 11 +-
src/org/python/antlr/op/LtEDerived.java | 11 +-
src/org/python/antlr/op/ModDerived.java | 11 +-
src/org/python/antlr/op/MultDerived.java | 11 +-
src/org/python/antlr/op/NotDerived.java | 11 +-
src/org/python/antlr/op/NotEqDerived.java | 11 +-
src/org/python/antlr/op/NotInDerived.java | 11 +-
src/org/python/antlr/op/OrDerived.java | 11 +-
src/org/python/antlr/op/ParamDerived.java | 11 +-
src/org/python/antlr/op/PowDerived.java | 11 +-
src/org/python/antlr/op/RShiftDerived.java | 11 +-
src/org/python/antlr/op/StoreDerived.java | 11 +-
src/org/python/antlr/op/SubDerived.java | 11 +-
src/org/python/antlr/op/UAddDerived.java | 11 +-
src/org/python/antlr/op/USubDerived.java | 11 +-
src/org/python/core/ClasspathPyImporterDerived.java | 11 +-
src/org/python/core/JyAttribute.java | 4 +-
src/org/python/core/PyArrayDerived.java | 11 +-
src/org/python/core/PyBaseExceptionDerived.java | 11 +-
src/org/python/core/PyByteArrayDerived.java | 11 +-
src/org/python/core/PyClassMethodDerived.java | 11 +-
src/org/python/core/PyComplexDerived.java | 11 +-
src/org/python/core/PyDictionaryDerived.java | 11 +-
src/org/python/core/PyEnumerateDerived.java | 11 +-
src/org/python/core/PyFileDerived.java | 11 +-
src/org/python/core/PyFloatDerived.java | 11 +-
src/org/python/core/PyFrozenSetDerived.java | 11 +-
src/org/python/core/PyInstance.java | 3 -
src/org/python/core/PyIntegerDerived.java | 11 +-
src/org/python/core/PyListDerived.java | 11 +-
src/org/python/core/PyLongDerived.java | 11 +-
src/org/python/core/PyModuleDerived.java | 11 +-
src/org/python/core/PyObjectDerived.java | 11 +-
src/org/python/core/PyPropertyDerived.java | 11 +-
src/org/python/core/PySetDerived.java | 11 +-
src/org/python/core/PyStringDerived.java | 11 +-
src/org/python/core/PySuperDerived.java | 11 +-
src/org/python/core/PyTupleDerived.java | 11 +-
src/org/python/core/PyTypeDerived.java | 11 +-
src/org/python/core/PyUnicodeDerived.java | 11 +-
src/org/python/core/Traverseproc.java | 25 ++-
src/org/python/core/finalization/FinalizableBuiltin.java | 17 +-
src/org/python/core/finalization/FinalizablePyObject.java | 53 ++++----
src/org/python/modules/PyStructDerived.java | 11 +-
src/org/python/modules/_collections/PyDefaultDictDerived.java | 11 +-
src/org/python/modules/_collections/PyDequeDerived.java | 11 +-
src/org/python/modules/_csv/PyDialectDerived.java | 11 +-
src/org/python/modules/_functools/PyPartialDerived.java | 11 +-
src/org/python/modules/_io/PyFileIODerived.java | 11 +-
src/org/python/modules/_io/PyIOBaseDerived.java | 11 +-
src/org/python/modules/_io/PyRawIOBaseDerived.java | 11 +-
src/org/python/modules/_weakref/ReferenceTypeDerived.java | 11 +-
src/org/python/modules/bz2/PyBZ2CompressorDerived.java | 11 +-
src/org/python/modules/bz2/PyBZ2DecompressorDerived.java | 11 +-
src/org/python/modules/bz2/PyBZ2FileDerived.java | 11 +-
src/org/python/modules/gc.java | 18 +-
src/org/python/modules/itertools/PyTeeIteratorDerived.java | 11 +-
src/org/python/modules/itertools/chainDerived.java | 11 +-
src/org/python/modules/itertools/combinationsDerived.java | 11 +-
src/org/python/modules/itertools/combinationsWithReplacementDerived.java | 11 +-
src/org/python/modules/itertools/compressDerived.java | 11 +-
src/org/python/modules/itertools/countDerived.java | 11 +-
src/org/python/modules/itertools/cycleDerived.java | 11 +-
src/org/python/modules/itertools/dropwhileDerived.java | 11 +-
src/org/python/modules/itertools/groupbyDerived.java | 11 +-
src/org/python/modules/itertools/ifilterDerived.java | 11 +-
src/org/python/modules/itertools/ifilterfalseDerived.java | 11 +-
src/org/python/modules/itertools/isliceDerived.java | 11 +-
src/org/python/modules/itertools/izipDerived.java | 11 +-
src/org/python/modules/itertools/izipLongestDerived.java | 11 +-
src/org/python/modules/itertools/permutationsDerived.java | 11 +-
src/org/python/modules/itertools/productDerived.java | 11 +-
src/org/python/modules/itertools/repeatDerived.java | 11 +-
src/org/python/modules/itertools/starmapDerived.java | 11 +-
src/org/python/modules/itertools/takewhileDerived.java | 11 +-
src/org/python/modules/random/PyRandomDerived.java | 11 +-
src/org/python/modules/thread/PyLocalDerived.java | 11 +-
src/org/python/modules/zipimport/zipimporterDerived.java | 11 +-
src/templates/gderived-defs | 11 +-
tests/java/javatests/GCTestHelper.java | 25 ++++-
155 files changed, 1167 insertions(+), 654 deletions(-)
diff --git a/Lib/test/test_gc_jy.py b/Lib/test/test_gc_jy.py
--- a/Lib/test/test_gc_jy.py
+++ b/Lib/test/test_gc_jy.py
@@ -18,6 +18,7 @@
#i.e. not Jython is running
pass
+
class GCTests_Jy_CyclicGarbage(unittest.TestCase):
@classmethod
@@ -38,7 +39,6 @@
except Exception:
pass
-
# In contrast to the tests in test_gc, these finalizer tests shall work
# even if gc-monitoring is disabled.
def test_finalizer(self):
@@ -66,7 +66,6 @@
self.fail("didn't find obj in garbage (finalizer)")
gc.garbage.remove(obj)
-
def test_finalizer_newclass(self):
# A() is uncollectable if it is part of a cycle, make sure it shows up
# in gc.garbage.
@@ -115,17 +114,13 @@
class GCTests_Jy_preprocess_and_postprocess(unittest.TestCase):
def test_finalization_preprocess_and_postprocess(self):
- #print "test_finalization_preprocess_and_postprocess"
#Note that this test is done here again (already was in another class
#in this module), to see that everything works as it should also with
#a different flag-context.
- #print "test_finalization_preprocess_and_postprocess"
- #gc.removeJythonGCFlags(gc.DONT_FINALIZE_RESURRECTED_OBJECTS)
comments = []
self0 = self
class A:
def __del__(self):
- #print "del A"
self0.assertIn("run PreProcess", comments)
comments.append("A del")
#let's simulate a time-consuming finalizer
@@ -171,6 +166,55 @@
gc.unregisterPreFinalizationProcess(prePr)
gc.unregisterPostFinalizationProcess(postPr)
+ def test_with_extern_NonPyObjectFinalizer_that_notifies_gc(self):
+ #Note that this test is done here again (already was in another class
+ #in this module), to see that everything works as it should also with
+ #a different flag-context.
+ comments = []
+ class A:
+ def __init__(self, index):
+ self.index = index
+
+ def __del__(self):
+ comments.append("A_del_"+str(self.index))
+
+ class PreProcess(Runnable):
+ preCount = 0
+ def run(self):
+ PreProcess.preCount += 1
+
+ class PostProcess(Runnable):
+ postCount = 0
+ def run(self):
+ PostProcess.postCount += 1
+
+ prePr = PreProcess()
+ postPr = PostProcess()
+ time.sleep(1) # <- to avoid that the newly registered processes
+ # become subject to previous run (remember: We
+ # are not in monitor-mode, i.e. gc runs async.
+ gc.registerPreFinalizationProcess(prePr)
+ gc.registerPostFinalizationProcess(postPr)
+ for i in range(4):
+ f = A(i)
+ del f
+ #NastyFinalizer would cause this test occasionally to fail
+ externFinalizer = GCTestHelper.NotSoNastyFinalizer()
+ del externFinalizer
+ for i in range(4, 8):
+ f = A(i)
+ del f
+ System.gc()
+ #we wait a bit longer here, since PostProcess runs asynchronous
+ #and must wait for the finalizer of A
+ time.sleep(4)
+ self.assertEqual(len(comments), 8)
+ self.assertEqual(PreProcess.preCount, 1)
+ self.assertEqual(PostProcess.postCount, 1)
+ comments = []
+ gc.unregisterPreFinalizationProcess(prePr)
+ gc.unregisterPostFinalizationProcess(postPr)
+
@unittest.skipUnless(test_support.is_jython,
'This class tests detailed Jython-specific behavior.')
@@ -367,7 +411,6 @@
del a
del c
#gc.set_debug(gc.DEBUG_SAVEALL)
- #gc.collect()
self.assertEqual(gc.collect(), 0) #c is not cyclic and a, b are resurrected,
#so nothing to count here
#self.asserEqual(len(gc.garbage), 0)
@@ -381,7 +424,6 @@
def test_notifyRerun_for_delayed_finalization(self):
gc.collect()
- resurrect = []
comments = []
class Test_Finalizable(object):
@@ -618,7 +660,6 @@
except Exception:
pass
-
def test_weakref_after_resurrection_threadsafe(self):
gc.collect()
diff --git a/src/org/python/antlr/ast/AssertDerived.java b/src/org/python/antlr/ast/AssertDerived.java
--- a/src/org/python/antlr/ast/AssertDerived.java
+++ b/src/org/python/antlr/ast/AssertDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/AssignDerived.java b/src/org/python/antlr/ast/AssignDerived.java
--- a/src/org/python/antlr/ast/AssignDerived.java
+++ b/src/org/python/antlr/ast/AssignDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/AttributeDerived.java b/src/org/python/antlr/ast/AttributeDerived.java
--- a/src/org/python/antlr/ast/AttributeDerived.java
+++ b/src/org/python/antlr/ast/AttributeDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/AugAssignDerived.java b/src/org/python/antlr/ast/AugAssignDerived.java
--- a/src/org/python/antlr/ast/AugAssignDerived.java
+++ b/src/org/python/antlr/ast/AugAssignDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/BinOpDerived.java b/src/org/python/antlr/ast/BinOpDerived.java
--- a/src/org/python/antlr/ast/BinOpDerived.java
+++ b/src/org/python/antlr/ast/BinOpDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/BoolOpDerived.java b/src/org/python/antlr/ast/BoolOpDerived.java
--- a/src/org/python/antlr/ast/BoolOpDerived.java
+++ b/src/org/python/antlr/ast/BoolOpDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/BreakDerived.java b/src/org/python/antlr/ast/BreakDerived.java
--- a/src/org/python/antlr/ast/BreakDerived.java
+++ b/src/org/python/antlr/ast/BreakDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/CallDerived.java b/src/org/python/antlr/ast/CallDerived.java
--- a/src/org/python/antlr/ast/CallDerived.java
+++ b/src/org/python/antlr/ast/CallDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/ClassDefDerived.java b/src/org/python/antlr/ast/ClassDefDerived.java
--- a/src/org/python/antlr/ast/ClassDefDerived.java
+++ b/src/org/python/antlr/ast/ClassDefDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/CompareDerived.java b/src/org/python/antlr/ast/CompareDerived.java
--- a/src/org/python/antlr/ast/CompareDerived.java
+++ b/src/org/python/antlr/ast/CompareDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/ContinueDerived.java b/src/org/python/antlr/ast/ContinueDerived.java
--- a/src/org/python/antlr/ast/ContinueDerived.java
+++ b/src/org/python/antlr/ast/ContinueDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/DeleteDerived.java b/src/org/python/antlr/ast/DeleteDerived.java
--- a/src/org/python/antlr/ast/DeleteDerived.java
+++ b/src/org/python/antlr/ast/DeleteDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/DictDerived.java b/src/org/python/antlr/ast/DictDerived.java
--- a/src/org/python/antlr/ast/DictDerived.java
+++ b/src/org/python/antlr/ast/DictDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/EllipsisDerived.java b/src/org/python/antlr/ast/EllipsisDerived.java
--- a/src/org/python/antlr/ast/EllipsisDerived.java
+++ b/src/org/python/antlr/ast/EllipsisDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/ExceptHandlerDerived.java b/src/org/python/antlr/ast/ExceptHandlerDerived.java
--- a/src/org/python/antlr/ast/ExceptHandlerDerived.java
+++ b/src/org/python/antlr/ast/ExceptHandlerDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/ExecDerived.java b/src/org/python/antlr/ast/ExecDerived.java
--- a/src/org/python/antlr/ast/ExecDerived.java
+++ b/src/org/python/antlr/ast/ExecDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/ExprDerived.java b/src/org/python/antlr/ast/ExprDerived.java
--- a/src/org/python/antlr/ast/ExprDerived.java
+++ b/src/org/python/antlr/ast/ExprDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/ExpressionDerived.java b/src/org/python/antlr/ast/ExpressionDerived.java
--- a/src/org/python/antlr/ast/ExpressionDerived.java
+++ b/src/org/python/antlr/ast/ExpressionDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/ExtSliceDerived.java b/src/org/python/antlr/ast/ExtSliceDerived.java
--- a/src/org/python/antlr/ast/ExtSliceDerived.java
+++ b/src/org/python/antlr/ast/ExtSliceDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/ForDerived.java b/src/org/python/antlr/ast/ForDerived.java
--- a/src/org/python/antlr/ast/ForDerived.java
+++ b/src/org/python/antlr/ast/ForDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/FunctionDefDerived.java b/src/org/python/antlr/ast/FunctionDefDerived.java
--- a/src/org/python/antlr/ast/FunctionDefDerived.java
+++ b/src/org/python/antlr/ast/FunctionDefDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/GeneratorExpDerived.java b/src/org/python/antlr/ast/GeneratorExpDerived.java
--- a/src/org/python/antlr/ast/GeneratorExpDerived.java
+++ b/src/org/python/antlr/ast/GeneratorExpDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/GlobalDerived.java b/src/org/python/antlr/ast/GlobalDerived.java
--- a/src/org/python/antlr/ast/GlobalDerived.java
+++ b/src/org/python/antlr/ast/GlobalDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/IfDerived.java b/src/org/python/antlr/ast/IfDerived.java
--- a/src/org/python/antlr/ast/IfDerived.java
+++ b/src/org/python/antlr/ast/IfDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/IfExpDerived.java b/src/org/python/antlr/ast/IfExpDerived.java
--- a/src/org/python/antlr/ast/IfExpDerived.java
+++ b/src/org/python/antlr/ast/IfExpDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/ImportDerived.java b/src/org/python/antlr/ast/ImportDerived.java
--- a/src/org/python/antlr/ast/ImportDerived.java
+++ b/src/org/python/antlr/ast/ImportDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/ImportFromDerived.java b/src/org/python/antlr/ast/ImportFromDerived.java
--- a/src/org/python/antlr/ast/ImportFromDerived.java
+++ b/src/org/python/antlr/ast/ImportFromDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/IndexDerived.java b/src/org/python/antlr/ast/IndexDerived.java
--- a/src/org/python/antlr/ast/IndexDerived.java
+++ b/src/org/python/antlr/ast/IndexDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/InteractiveDerived.java b/src/org/python/antlr/ast/InteractiveDerived.java
--- a/src/org/python/antlr/ast/InteractiveDerived.java
+++ b/src/org/python/antlr/ast/InteractiveDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/LambdaDerived.java b/src/org/python/antlr/ast/LambdaDerived.java
--- a/src/org/python/antlr/ast/LambdaDerived.java
+++ b/src/org/python/antlr/ast/LambdaDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/ListCompDerived.java b/src/org/python/antlr/ast/ListCompDerived.java
--- a/src/org/python/antlr/ast/ListCompDerived.java
+++ b/src/org/python/antlr/ast/ListCompDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/ListDerived.java b/src/org/python/antlr/ast/ListDerived.java
--- a/src/org/python/antlr/ast/ListDerived.java
+++ b/src/org/python/antlr/ast/ListDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/ModuleDerived.java b/src/org/python/antlr/ast/ModuleDerived.java
--- a/src/org/python/antlr/ast/ModuleDerived.java
+++ b/src/org/python/antlr/ast/ModuleDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/NameDerived.java b/src/org/python/antlr/ast/NameDerived.java
--- a/src/org/python/antlr/ast/NameDerived.java
+++ b/src/org/python/antlr/ast/NameDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/NumDerived.java b/src/org/python/antlr/ast/NumDerived.java
--- a/src/org/python/antlr/ast/NumDerived.java
+++ b/src/org/python/antlr/ast/NumDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/PassDerived.java b/src/org/python/antlr/ast/PassDerived.java
--- a/src/org/python/antlr/ast/PassDerived.java
+++ b/src/org/python/antlr/ast/PassDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/PrintDerived.java b/src/org/python/antlr/ast/PrintDerived.java
--- a/src/org/python/antlr/ast/PrintDerived.java
+++ b/src/org/python/antlr/ast/PrintDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/RaiseDerived.java b/src/org/python/antlr/ast/RaiseDerived.java
--- a/src/org/python/antlr/ast/RaiseDerived.java
+++ b/src/org/python/antlr/ast/RaiseDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/ReprDerived.java b/src/org/python/antlr/ast/ReprDerived.java
--- a/src/org/python/antlr/ast/ReprDerived.java
+++ b/src/org/python/antlr/ast/ReprDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/ReturnDerived.java b/src/org/python/antlr/ast/ReturnDerived.java
--- a/src/org/python/antlr/ast/ReturnDerived.java
+++ b/src/org/python/antlr/ast/ReturnDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/SliceDerived.java b/src/org/python/antlr/ast/SliceDerived.java
--- a/src/org/python/antlr/ast/SliceDerived.java
+++ b/src/org/python/antlr/ast/SliceDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/StrDerived.java b/src/org/python/antlr/ast/StrDerived.java
--- a/src/org/python/antlr/ast/StrDerived.java
+++ b/src/org/python/antlr/ast/StrDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/SubscriptDerived.java b/src/org/python/antlr/ast/SubscriptDerived.java
--- a/src/org/python/antlr/ast/SubscriptDerived.java
+++ b/src/org/python/antlr/ast/SubscriptDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/SuiteDerived.java b/src/org/python/antlr/ast/SuiteDerived.java
--- a/src/org/python/antlr/ast/SuiteDerived.java
+++ b/src/org/python/antlr/ast/SuiteDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/TryExceptDerived.java b/src/org/python/antlr/ast/TryExceptDerived.java
--- a/src/org/python/antlr/ast/TryExceptDerived.java
+++ b/src/org/python/antlr/ast/TryExceptDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/TryFinallyDerived.java b/src/org/python/antlr/ast/TryFinallyDerived.java
--- a/src/org/python/antlr/ast/TryFinallyDerived.java
+++ b/src/org/python/antlr/ast/TryFinallyDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/TupleDerived.java b/src/org/python/antlr/ast/TupleDerived.java
--- a/src/org/python/antlr/ast/TupleDerived.java
+++ b/src/org/python/antlr/ast/TupleDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/UnaryOpDerived.java b/src/org/python/antlr/ast/UnaryOpDerived.java
--- a/src/org/python/antlr/ast/UnaryOpDerived.java
+++ b/src/org/python/antlr/ast/UnaryOpDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/WhileDerived.java b/src/org/python/antlr/ast/WhileDerived.java
--- a/src/org/python/antlr/ast/WhileDerived.java
+++ b/src/org/python/antlr/ast/WhileDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/WithDerived.java b/src/org/python/antlr/ast/WithDerived.java
--- a/src/org/python/antlr/ast/WithDerived.java
+++ b/src/org/python/antlr/ast/WithDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/YieldDerived.java b/src/org/python/antlr/ast/YieldDerived.java
--- a/src/org/python/antlr/ast/YieldDerived.java
+++ b/src/org/python/antlr/ast/YieldDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/aliasDerived.java b/src/org/python/antlr/ast/aliasDerived.java
--- a/src/org/python/antlr/ast/aliasDerived.java
+++ b/src/org/python/antlr/ast/aliasDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/argumentsDerived.java b/src/org/python/antlr/ast/argumentsDerived.java
--- a/src/org/python/antlr/ast/argumentsDerived.java
+++ b/src/org/python/antlr/ast/argumentsDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/comprehensionDerived.java b/src/org/python/antlr/ast/comprehensionDerived.java
--- a/src/org/python/antlr/ast/comprehensionDerived.java
+++ b/src/org/python/antlr/ast/comprehensionDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/ast/keywordDerived.java b/src/org/python/antlr/ast/keywordDerived.java
--- a/src/org/python/antlr/ast/keywordDerived.java
+++ b/src/org/python/antlr/ast/keywordDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/op/AddDerived.java b/src/org/python/antlr/op/AddDerived.java
--- a/src/org/python/antlr/op/AddDerived.java
+++ b/src/org/python/antlr/op/AddDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/op/AndDerived.java b/src/org/python/antlr/op/AndDerived.java
--- a/src/org/python/antlr/op/AndDerived.java
+++ b/src/org/python/antlr/op/AndDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/op/AugLoadDerived.java b/src/org/python/antlr/op/AugLoadDerived.java
--- a/src/org/python/antlr/op/AugLoadDerived.java
+++ b/src/org/python/antlr/op/AugLoadDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/op/AugStoreDerived.java b/src/org/python/antlr/op/AugStoreDerived.java
--- a/src/org/python/antlr/op/AugStoreDerived.java
+++ b/src/org/python/antlr/op/AugStoreDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/op/BitAndDerived.java b/src/org/python/antlr/op/BitAndDerived.java
--- a/src/org/python/antlr/op/BitAndDerived.java
+++ b/src/org/python/antlr/op/BitAndDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/op/BitOrDerived.java b/src/org/python/antlr/op/BitOrDerived.java
--- a/src/org/python/antlr/op/BitOrDerived.java
+++ b/src/org/python/antlr/op/BitOrDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/op/BitXorDerived.java b/src/org/python/antlr/op/BitXorDerived.java
--- a/src/org/python/antlr/op/BitXorDerived.java
+++ b/src/org/python/antlr/op/BitXorDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/op/DelDerived.java b/src/org/python/antlr/op/DelDerived.java
--- a/src/org/python/antlr/op/DelDerived.java
+++ b/src/org/python/antlr/op/DelDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/op/DivDerived.java b/src/org/python/antlr/op/DivDerived.java
--- a/src/org/python/antlr/op/DivDerived.java
+++ b/src/org/python/antlr/op/DivDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/op/EqDerived.java b/src/org/python/antlr/op/EqDerived.java
--- a/src/org/python/antlr/op/EqDerived.java
+++ b/src/org/python/antlr/op/EqDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/op/FloorDivDerived.java b/src/org/python/antlr/op/FloorDivDerived.java
--- a/src/org/python/antlr/op/FloorDivDerived.java
+++ b/src/org/python/antlr/op/FloorDivDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/op/GtDerived.java b/src/org/python/antlr/op/GtDerived.java
--- a/src/org/python/antlr/op/GtDerived.java
+++ b/src/org/python/antlr/op/GtDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/op/GtEDerived.java b/src/org/python/antlr/op/GtEDerived.java
--- a/src/org/python/antlr/op/GtEDerived.java
+++ b/src/org/python/antlr/op/GtEDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/op/InDerived.java b/src/org/python/antlr/op/InDerived.java
--- a/src/org/python/antlr/op/InDerived.java
+++ b/src/org/python/antlr/op/InDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/op/InvertDerived.java b/src/org/python/antlr/op/InvertDerived.java
--- a/src/org/python/antlr/op/InvertDerived.java
+++ b/src/org/python/antlr/op/InvertDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/op/IsDerived.java b/src/org/python/antlr/op/IsDerived.java
--- a/src/org/python/antlr/op/IsDerived.java
+++ b/src/org/python/antlr/op/IsDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/op/IsNotDerived.java b/src/org/python/antlr/op/IsNotDerived.java
--- a/src/org/python/antlr/op/IsNotDerived.java
+++ b/src/org/python/antlr/op/IsNotDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/op/LShiftDerived.java b/src/org/python/antlr/op/LShiftDerived.java
--- a/src/org/python/antlr/op/LShiftDerived.java
+++ b/src/org/python/antlr/op/LShiftDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/op/LoadDerived.java b/src/org/python/antlr/op/LoadDerived.java
--- a/src/org/python/antlr/op/LoadDerived.java
+++ b/src/org/python/antlr/op/LoadDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/op/LtDerived.java b/src/org/python/antlr/op/LtDerived.java
--- a/src/org/python/antlr/op/LtDerived.java
+++ b/src/org/python/antlr/op/LtDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/op/LtEDerived.java b/src/org/python/antlr/op/LtEDerived.java
--- a/src/org/python/antlr/op/LtEDerived.java
+++ b/src/org/python/antlr/op/LtEDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/op/ModDerived.java b/src/org/python/antlr/op/ModDerived.java
--- a/src/org/python/antlr/op/ModDerived.java
+++ b/src/org/python/antlr/op/ModDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/op/MultDerived.java b/src/org/python/antlr/op/MultDerived.java
--- a/src/org/python/antlr/op/MultDerived.java
+++ b/src/org/python/antlr/op/MultDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/op/NotDerived.java b/src/org/python/antlr/op/NotDerived.java
--- a/src/org/python/antlr/op/NotDerived.java
+++ b/src/org/python/antlr/op/NotDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/op/NotEqDerived.java b/src/org/python/antlr/op/NotEqDerived.java
--- a/src/org/python/antlr/op/NotEqDerived.java
+++ b/src/org/python/antlr/op/NotEqDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/op/NotInDerived.java b/src/org/python/antlr/op/NotInDerived.java
--- a/src/org/python/antlr/op/NotInDerived.java
+++ b/src/org/python/antlr/op/NotInDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/op/OrDerived.java b/src/org/python/antlr/op/OrDerived.java
--- a/src/org/python/antlr/op/OrDerived.java
+++ b/src/org/python/antlr/op/OrDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/op/ParamDerived.java b/src/org/python/antlr/op/ParamDerived.java
--- a/src/org/python/antlr/op/ParamDerived.java
+++ b/src/org/python/antlr/op/ParamDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/op/PowDerived.java b/src/org/python/antlr/op/PowDerived.java
--- a/src/org/python/antlr/op/PowDerived.java
+++ b/src/org/python/antlr/op/PowDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/op/RShiftDerived.java b/src/org/python/antlr/op/RShiftDerived.java
--- a/src/org/python/antlr/op/RShiftDerived.java
+++ b/src/org/python/antlr/op/RShiftDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/op/StoreDerived.java b/src/org/python/antlr/op/StoreDerived.java
--- a/src/org/python/antlr/op/StoreDerived.java
+++ b/src/org/python/antlr/op/StoreDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/op/SubDerived.java b/src/org/python/antlr/op/SubDerived.java
--- a/src/org/python/antlr/op/SubDerived.java
+++ b/src/org/python/antlr/op/SubDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/op/UAddDerived.java b/src/org/python/antlr/op/UAddDerived.java
--- a/src/org/python/antlr/op/UAddDerived.java
+++ b/src/org/python/antlr/op/UAddDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/antlr/op/USubDerived.java b/src/org/python/antlr/op/USubDerived.java
--- a/src/org/python/antlr/op/USubDerived.java
+++ b/src/org/python/antlr/op/USubDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/core/ClasspathPyImporterDerived.java b/src/org/python/core/ClasspathPyImporterDerived.java
--- a/src/org/python/core/ClasspathPyImporterDerived.java
+++ b/src/org/python/core/ClasspathPyImporterDerived.java
@@ -33,12 +33,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/core/JyAttribute.java b/src/org/python/core/JyAttribute.java
--- a/src/org/python/core/JyAttribute.java
+++ b/src/org/python/core/JyAttribute.java
@@ -40,7 +40,7 @@
* Stores list of weak references linking to this {@code PyObject}.
* This list is weakref-based, so it does not keep the
* weakrefs alive. This is the only way to find out which
- * weakrefs (i.e. org.python.modules._weakref.AbstractReference)
+ * weakrefs (i.e. {@link org.python.modules._weakref.AbstractReference})
* linked to the object after a resurrection. A weak
* hash-map-based approach for this purpose would break on
* resurrection.
@@ -48,7 +48,7 @@
public static final byte WEAK_REF_ATTR = 0; //first transient
/**
- * Reserved for use by <a href="http://www.jyni.org">JyNI</a>.
+ * Reserved for use by <a href="http://www.jyni.org" target="_blank">JyNI</a>.
*/
public static final byte JYNI_HANDLE_ATTR = 1;
diff --git a/src/org/python/core/PyArrayDerived.java b/src/org/python/core/PyArrayDerived.java
--- a/src/org/python/core/PyArrayDerived.java
+++ b/src/org/python/core/PyArrayDerived.java
@@ -33,12 +33,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/core/PyBaseExceptionDerived.java b/src/org/python/core/PyBaseExceptionDerived.java
--- a/src/org/python/core/PyBaseExceptionDerived.java
+++ b/src/org/python/core/PyBaseExceptionDerived.java
@@ -33,12 +33,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/core/PyByteArrayDerived.java b/src/org/python/core/PyByteArrayDerived.java
--- a/src/org/python/core/PyByteArrayDerived.java
+++ b/src/org/python/core/PyByteArrayDerived.java
@@ -33,12 +33,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/core/PyClassMethodDerived.java b/src/org/python/core/PyClassMethodDerived.java
--- a/src/org/python/core/PyClassMethodDerived.java
+++ b/src/org/python/core/PyClassMethodDerived.java
@@ -33,12 +33,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/core/PyComplexDerived.java b/src/org/python/core/PyComplexDerived.java
--- a/src/org/python/core/PyComplexDerived.java
+++ b/src/org/python/core/PyComplexDerived.java
@@ -33,12 +33,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/core/PyDictionaryDerived.java b/src/org/python/core/PyDictionaryDerived.java
--- a/src/org/python/core/PyDictionaryDerived.java
+++ b/src/org/python/core/PyDictionaryDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/core/PyEnumerateDerived.java b/src/org/python/core/PyEnumerateDerived.java
--- a/src/org/python/core/PyEnumerateDerived.java
+++ b/src/org/python/core/PyEnumerateDerived.java
@@ -33,12 +33,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/core/PyFileDerived.java b/src/org/python/core/PyFileDerived.java
--- a/src/org/python/core/PyFileDerived.java
+++ b/src/org/python/core/PyFileDerived.java
@@ -33,12 +33,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/core/PyFloatDerived.java b/src/org/python/core/PyFloatDerived.java
--- a/src/org/python/core/PyFloatDerived.java
+++ b/src/org/python/core/PyFloatDerived.java
@@ -33,12 +33,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/core/PyFrozenSetDerived.java b/src/org/python/core/PyFrozenSetDerived.java
--- a/src/org/python/core/PyFrozenSetDerived.java
+++ b/src/org/python/core/PyFrozenSetDerived.java
@@ -33,12 +33,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/core/PyInstance.java b/src/org/python/core/PyInstance.java
--- a/src/org/python/core/PyInstance.java
+++ b/src/org/python/core/PyInstance.java
@@ -1963,9 +1963,6 @@
/* Traverseproc implementation */
@Override
public int traverse(Visitproc visit, Object arg) {
-// Potential PyObject refs in PyInstance:
-// public transient PyClass instclass;
-// public PyObject __dict__;
if (instclass != null) {
int retVal = visit.visit(instclass, arg);
if (retVal != 0) {
diff --git a/src/org/python/core/PyIntegerDerived.java b/src/org/python/core/PyIntegerDerived.java
--- a/src/org/python/core/PyIntegerDerived.java
+++ b/src/org/python/core/PyIntegerDerived.java
@@ -33,12 +33,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/core/PyListDerived.java b/src/org/python/core/PyListDerived.java
--- a/src/org/python/core/PyListDerived.java
+++ b/src/org/python/core/PyListDerived.java
@@ -33,12 +33,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/core/PyLongDerived.java b/src/org/python/core/PyLongDerived.java
--- a/src/org/python/core/PyLongDerived.java
+++ b/src/org/python/core/PyLongDerived.java
@@ -33,12 +33,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/core/PyModuleDerived.java b/src/org/python/core/PyModuleDerived.java
--- a/src/org/python/core/PyModuleDerived.java
+++ b/src/org/python/core/PyModuleDerived.java
@@ -33,12 +33,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/core/PyObjectDerived.java b/src/org/python/core/PyObjectDerived.java
--- a/src/org/python/core/PyObjectDerived.java
+++ b/src/org/python/core/PyObjectDerived.java
@@ -33,12 +33,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/core/PyPropertyDerived.java b/src/org/python/core/PyPropertyDerived.java
--- a/src/org/python/core/PyPropertyDerived.java
+++ b/src/org/python/core/PyPropertyDerived.java
@@ -33,12 +33,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/core/PySetDerived.java b/src/org/python/core/PySetDerived.java
--- a/src/org/python/core/PySetDerived.java
+++ b/src/org/python/core/PySetDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/core/PyStringDerived.java b/src/org/python/core/PyStringDerived.java
--- a/src/org/python/core/PyStringDerived.java
+++ b/src/org/python/core/PyStringDerived.java
@@ -33,12 +33,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/core/PySuperDerived.java b/src/org/python/core/PySuperDerived.java
--- a/src/org/python/core/PySuperDerived.java
+++ b/src/org/python/core/PySuperDerived.java
@@ -33,12 +33,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/core/PyTupleDerived.java b/src/org/python/core/PyTupleDerived.java
--- a/src/org/python/core/PyTupleDerived.java
+++ b/src/org/python/core/PyTupleDerived.java
@@ -33,12 +33,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/core/PyTypeDerived.java b/src/org/python/core/PyTypeDerived.java
--- a/src/org/python/core/PyTypeDerived.java
+++ b/src/org/python/core/PyTypeDerived.java
@@ -33,12 +33,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/core/PyUnicodeDerived.java b/src/org/python/core/PyUnicodeDerived.java
--- a/src/org/python/core/PyUnicodeDerived.java
+++ b/src/org/python/core/PyUnicodeDerived.java
@@ -33,12 +33,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/core/Traverseproc.java b/src/org/python/core/Traverseproc.java
--- a/src/org/python/core/Traverseproc.java
+++ b/src/org/python/core/Traverseproc.java
@@ -2,10 +2,12 @@
/**
* <p>
- * This interface defines a CPython equivalent traverse mechanism allowing
- * to detect reference cycles. While this is crucial for cyclic gc support
- * in CPython, it only serves debugging purposes in Jython. As a side effect
- * it allows a more complete implementation of the gc module.
+ * This interface defines a
+ * <a href="https://docs.python.org/2.7/c-api/gcsupport.html" target="_blank">
+ * CPython equivalent traverse mechanism
+ * </a> allowing to detect reference cycles. While this is crucial for cyclic
+ * gc support in CPython, it only serves debugging purposes in Jython. As a side
+ * effect it allows a more complete implementation of the gc module.
* </p>
* <p>
* Note that implementing this interface is only OPTIONAL.<b> Gc will work fine
@@ -32,7 +34,8 @@
* gc behaviors.
* </p>
* <p>
- * Further this mechanism is crucial for some aspects of gc-support of the JyNI
+ * Further this mechanism is crucial for some aspects of gc-support of the
+ * <a href="http://www.jyni.org" target="_blank">JyNI</a>
* project. JyNI does not strictly depend on it to emulate CPython's gc
* for extensions, but would have to perform inefficient reflection-based
* traversal in some edge-cases (which might also conflict security managers).
@@ -447,19 +450,23 @@
public interface Traverseproc {
/**
- * Traverses all reachable {@code PyObject}s.
+ * Traverses all directly contained {@code PyObject}s.
* Like in CPython, {@code arg} must be passed
* unmodified to {@code visit} as its second parameter.
- * If {@code visit.visit} returns nonzero, this return value
+ * If {@link Visitproc#visit(PyObject, Object)} returns
+ * nonzero, this return value
* must be returned immediately by traverse.
+ *
+ * {@link Visitproc#visit(PyObject, Object)} must not be
+ * called with a {@code null} PyObject-argument.
*/
public int traverse(Visitproc visit, Object arg);
/**
* Optional operation.
* Should only be implemented if it is more efficient
- * than calling {@code traverse} with a visitproc
- * that just watches out for {@code ob}.
+ * than calling {@link #traverse(Visitproc, Object)} with
+ * a visitproc that just watches out for {@code ob}.
* Must return {@code false} if {@code ob} is {@code null}.
*/
public boolean refersDirectlyTo(PyObject ob) throws UnsupportedOperationException;
diff --git a/src/org/python/core/finalization/FinalizableBuiltin.java b/src/org/python/core/finalization/FinalizableBuiltin.java
--- a/src/org/python/core/finalization/FinalizableBuiltin.java
+++ b/src/org/python/core/finalization/FinalizableBuiltin.java
@@ -6,13 +6,16 @@
public interface FinalizableBuiltin {
/**
- * {@code __del_builtin__} is the built-in's own finalizer, while
- * {@code __del_derived__} refers to an instance's in-dict {@code __del__}.
- * A FinalizeTrigger calls {@code __del_derived__} first and
- * - if existent - {@code __del_builtin__} after that. A plain {@code __del__}
- * would behave as overwritten by {@code __del__Derived}, i.e. won't be called
- * if the type implements {@code FinalizablePyObjectDerived} while
- * {@code __del_builtin__} is called in any case.
+ * {@link #__del_builtin__()} is the built-in's own finalizer, while
+ * {@link FinalizablePyObjectDerived#__del_derived__()} refers to an
+ * instance's in-dict {@code __del__}.
+ * A FinalizeTrigger calls {@link FinalizablePyObjectDerived#__del_derived__()}
+ * first and - if existent - {@link #__del_builtin__()} after that. A plain
+ * {@link FinalizablePyObject#__del__()}
+ * would behave as overwritten by
+ * {@link FinalizablePyObjectDerived#__del_derived__()}, i.e. won't be called
+ * if the type implements {@link FinalizablePyObjectDerived}, while
+ * {@link #__del_builtin__()} is called in any case.
*/
public void __del_builtin__();
}
diff --git a/src/org/python/core/finalization/FinalizablePyObject.java b/src/org/python/core/finalization/FinalizablePyObject.java
--- a/src/org/python/core/finalization/FinalizablePyObject.java
+++ b/src/org/python/core/finalization/FinalizablePyObject.java
@@ -9,20 +9,22 @@
* {@link org.python.core.finalization.FinalizableBuiltin}.
* </p>
* <p>
- * The difference is that {@code __del__} can be overwritten by a
+ * The difference is that {@link #__del__()} can be overwritten by a
* new-style subclass's {@code __del__}-method on Python-side, while
- * {@code __del_builtin__} is always called. If a Python-side
- * finalizer exists, {@code __del_builtin__} will be called after the
+ * {@link FinalizableBuiltin#__del_builtin__()} is always called.
+ * If a Python-side finalizer exists,
+ * {@link FinalizableBuiltin#__del_builtin__()} will be called after the
* Python-side finalizer has been processed.
* </p>
* <p>
* One can even implement both interfaces.
- * If both interfaces are implemented, the {@code FinalizeTrigger} will
- * call {@code __del__} first and then {@code __del_builtin__}. If a
+ * If both interfaces are implemented, the {@link FinalizeTrigger} will
+ * call {@link #__del__()} first and then
+ * {@link FinalizableBuiltin#__del_builtin__()}. If a
* new-style subclass has an own, Python-side {@code __del__}-method, this
- * overwrites the Java-implemented {@code __del__}, but not
- * {@code __del_builtin__}, which will be called after the Python-side
- * finalizer.
+ * overwrites the Java-implemented {@link #__del__()}, but not
+ * {@link FinalizableBuiltin#__del_builtin__()}, which will be called after
+ * the Python-side finalizer.
* </p>
* <p>
* If you are writing a custom built-in that shall directly
@@ -32,38 +34,38 @@
* <p>
* <ol>
* <li>
- * Let your subclass implement {@code FinalizablePyObject}
- * (or {@link org.python.core.finalization.FinalizableBuiltin}).
+ * Let your subclass implement {@link FinalizablePyObject}
+ * (or {@link FinalizableBuiltin}).
* </li>
* <li>
* In every constructor call<br>
* {@code FinalizeTrigger.ensureFinalizer(this);}<br>
* </li>
* <li>
- * Write your {@code __del__}-method however you intend it.
- * (or {@code __del__Builtin} if
- * {@link org.python.core.finalization.FinalizableBuiltin} was used)
+ * Write your {@link #__del__()}-method however you intend it.
+ * (or {@link FinalizableBuiltin#__del_builtin__()} if
+ * {@link FinalizableBuiltin} was used)
* </li>
* <li>
* (optional)<br>
* If your finalizer resurrects the object (Python allows this) and you wish the
* finalizer to run again on next collection of the object:<br>
- * In the block where the resurrection occurs, let your {@code __del__}- or
- * {@code __del_builtin__}-method call<br>
+ * In the block where the resurrection occurs, let your {@link #__del__()}- or
+ * {@link FinalizableBuiltin#__del_builtin__()}-method call<br>
* {@code FinalizeTrigger.ensureFinalizer(this);}.
* If you implement {@code __del__} in Python and need this functionality, you can
* simply call {@code someObject.__ensure_finalizer__()}<br>
- * Note that this is Jython specific and should be surrounded by a {@code try/except}
- * block to ensure compatibility with other Python implementations.
+ * Note that this is Jython-specific and should be surrounded by a
+ * {@code try/except}-block to ensure compatibility with other Python implementations.
* </li>
* </ol>
* </p>
* <p>
* Note: Regarding to object resurrection, Jython currently behaves like CPython >= 3.4.
- * That means the finalizer {@code __del__} or {@code __del_builtin__} is called only the
- * first time an object gets gc'ed. If pre-3.4.-behavior is required for some reason (i.e.
- * have the finalizer called repeatedly on every collection after a resurrection), one can
- * achieve this manually via step 5).
+ * That means the finalizer {@link #__del__()} or {@link FinalizableBuiltin#__del_builtin__()}
+ * is called only the first time an object gets gc'ed. If pre-3.4.-behavior is required for
+ * some reason (i.e. have the finalizer called repeatedly on every collection after a
+ * resurrection), one can achieve this manually via step 5).
* </p>
* <p>
* The built-in function {@code __ensure_finalizer__} is also useful if a class acquires a
@@ -72,7 +74,7 @@
* CPython).
* However, one can manually tell earlier created instances to become finalizable by
* calling {@code __ensure_finalizer__()} on them. As mentioned above, it is recommended to
- * surround this with a {@code try/except} block to ensure compatibility with other Python
+ * surround this with a {@code try/except}-block to ensure compatibility with other Python
* implementations.
* </p>
* <p>
@@ -82,8 +84,8 @@
* </p>
* <p>
* It is possible to switch finalization on and off at any desired time for a certain object.
- * This can be helpful if it is only necessary to have {@code __del__} or
- * {@code __del_builtin__} called for certain configurations of an object.
+ * This can be helpful if it is only necessary to have {@link #__del__()} or
+ * {@link FinalizableBuiltin#__del_builtin__()} called for certain configurations of an object.
* </p>
* <p>
* To turn off the finalizer, call</br>
@@ -91,6 +93,9 @@
* To turn it on again, call</br>
* {@code ((FinalizeTrigger) JyAttribute.getAttr(this, JyAttribute.FINALIZE_TRIGGER_ATTR)).trigger(this);}
* </p>
+ *
+ * @see org.python.core.JyAttribute#FINALIZE_TRIGGER_ATTR
+ * @see FinalizableBuiltin#__del_builtin__()
*/
public interface FinalizablePyObject {
diff --git a/src/org/python/modules/PyStructDerived.java b/src/org/python/modules/PyStructDerived.java
--- a/src/org/python/modules/PyStructDerived.java
+++ b/src/org/python/modules/PyStructDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/modules/_collections/PyDefaultDictDerived.java b/src/org/python/modules/_collections/PyDefaultDictDerived.java
--- a/src/org/python/modules/_collections/PyDefaultDictDerived.java
+++ b/src/org/python/modules/_collections/PyDefaultDictDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/modules/_collections/PyDequeDerived.java b/src/org/python/modules/_collections/PyDequeDerived.java
--- a/src/org/python/modules/_collections/PyDequeDerived.java
+++ b/src/org/python/modules/_collections/PyDequeDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/modules/_csv/PyDialectDerived.java b/src/org/python/modules/_csv/PyDialectDerived.java
--- a/src/org/python/modules/_csv/PyDialectDerived.java
+++ b/src/org/python/modules/_csv/PyDialectDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/modules/_functools/PyPartialDerived.java b/src/org/python/modules/_functools/PyPartialDerived.java
--- a/src/org/python/modules/_functools/PyPartialDerived.java
+++ b/src/org/python/modules/_functools/PyPartialDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/modules/_io/PyFileIODerived.java b/src/org/python/modules/_io/PyFileIODerived.java
--- a/src/org/python/modules/_io/PyFileIODerived.java
+++ b/src/org/python/modules/_io/PyFileIODerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/modules/_io/PyIOBaseDerived.java b/src/org/python/modules/_io/PyIOBaseDerived.java
--- a/src/org/python/modules/_io/PyIOBaseDerived.java
+++ b/src/org/python/modules/_io/PyIOBaseDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/modules/_io/PyRawIOBaseDerived.java b/src/org/python/modules/_io/PyRawIOBaseDerived.java
--- a/src/org/python/modules/_io/PyRawIOBaseDerived.java
+++ b/src/org/python/modules/_io/PyRawIOBaseDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/modules/_weakref/ReferenceTypeDerived.java b/src/org/python/modules/_weakref/ReferenceTypeDerived.java
--- a/src/org/python/modules/_weakref/ReferenceTypeDerived.java
+++ b/src/org/python/modules/_weakref/ReferenceTypeDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/modules/bz2/PyBZ2CompressorDerived.java b/src/org/python/modules/bz2/PyBZ2CompressorDerived.java
--- a/src/org/python/modules/bz2/PyBZ2CompressorDerived.java
+++ b/src/org/python/modules/bz2/PyBZ2CompressorDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/modules/bz2/PyBZ2DecompressorDerived.java b/src/org/python/modules/bz2/PyBZ2DecompressorDerived.java
--- a/src/org/python/modules/bz2/PyBZ2DecompressorDerived.java
+++ b/src/org/python/modules/bz2/PyBZ2DecompressorDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/modules/bz2/PyBZ2FileDerived.java b/src/org/python/modules/bz2/PyBZ2FileDerived.java
--- a/src/org/python/modules/bz2/PyBZ2FileDerived.java
+++ b/src/org/python/modules/bz2/PyBZ2FileDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/modules/gc.java b/src/org/python/modules/gc.java
--- a/src/org/python/modules/gc.java
+++ b/src/org/python/modules/gc.java
@@ -939,8 +939,7 @@
* to care for other finalizers these must call
* {@code gc.notifyPreFinalization()} before anything else is done and
* {@code gc.notifyPostFinalization()} afterwards; between these calls the finalizer
- * must not terminate by throwing an exception). (Note: Using this for extern
- * finalizers is currently experimental and needs more testing.)
+ * must not terminate by throwing an exception).
* This works independently from monitoring, which is mainly needed to allow
* counting of cyclic garbage in {@link #collect()}.
* </p>
@@ -960,7 +959,6 @@
* {@code gc.notifyPreFinalization()} before anything else is done and
* {@code gc.notifyPostFinalization()} right before the finalization method returns.
* Between these calls the finalizer must not terminate by throwing an exception.
- * (Note: Using this for extern finalizers is currently experimental and needs more testing.)
* </p>
* <p>
* We recommend to use this feature in a way such that false-positive runs are
@@ -1039,8 +1037,7 @@
* to care for other finalizers these must call
* {@code gc.notifyPreFinalization()} before anything else is done and
* {@code gc.notifyPostFinalization()} afterwards; between these calls the finalizer
- * must not terminate by throwing an exception). (Note: Using this for extern
- * finalizers is currently experimental and needs more testing.)
+ * must not terminate by throwing an exception).
* This works independently from monitoring (which is mainly needed to allow
* garbage counting in {@link #collect()}).
* </p>
@@ -1061,7 +1058,6 @@
* {@code gc.notifyPreFinalization()} before anything else is done and
* {@code gc.notifyPostFinalization()} right before the finalization method returns.
* Between these calls the finalizer must not terminate by throwing an exception.
- * (Note: Using this for extern finalizers is currently experimental and needs more testing.)
* </p>
* <p>
* If it runs too early, we can at least guarantee that it will run again after
@@ -1532,7 +1528,7 @@
* Not supported by Jython.
* Throws {@link org.python.core.Py#NotImplementedError}.
*
- * @throws org.python.core.Py#NotImplementedError
+ * @throws org.python.core.Py.NotImplementedError
*/
public static void disable() {
throw Py.NotImplementedError("can't disable Java GC");
@@ -2000,7 +1996,7 @@
* Not supported by Jython.
* Throws {@link org.python.core.Py#NotImplementedError}.
*
- * @throws org.python.core.Py#NotImplementedError
+ * @throws org.python.core.Py.NotImplementedError
*/
public static PyObject get_count() {
throw Py.NotImplementedError("not applicable to Java GC");
@@ -2047,7 +2043,7 @@
* Not supported by Jython.
* Throws {@link org.python.core.Py#NotImplementedError}.
*
- * @throws org.python.core.Py#NotImplementedError
+ * @throws org.python.core.Py.NotImplementedError
*/
public static void set_threshold(PyObject[] args, String[] kwargs) {
throw Py.NotImplementedError("not applicable to Java GC");
@@ -2057,7 +2053,7 @@
* Not supported by Jython.
* Throws {@link org.python.core.Py#NotImplementedError}.
*
- * @throws org.python.core.Py#NotImplementedError
+ * @throws org.python.core.Py.NotImplementedError
*/
public static PyObject get_threshold() {
throw Py.NotImplementedError("not applicable to Java GC");
@@ -2067,7 +2063,7 @@
* Not supported by Jython.
* Throws {@link org.python.core.Py#NotImplementedError}.
*
- * @throws org.python.core.Py#NotImplementedError
+ * @throws org.python.core.Py.NotImplementedError
*/
public static PyObject get_objects() {
throw Py.NotImplementedError("not applicable to Java GC");
diff --git a/src/org/python/modules/itertools/PyTeeIteratorDerived.java b/src/org/python/modules/itertools/PyTeeIteratorDerived.java
--- a/src/org/python/modules/itertools/PyTeeIteratorDerived.java
+++ b/src/org/python/modules/itertools/PyTeeIteratorDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/modules/itertools/chainDerived.java b/src/org/python/modules/itertools/chainDerived.java
--- a/src/org/python/modules/itertools/chainDerived.java
+++ b/src/org/python/modules/itertools/chainDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/modules/itertools/combinationsDerived.java b/src/org/python/modules/itertools/combinationsDerived.java
--- a/src/org/python/modules/itertools/combinationsDerived.java
+++ b/src/org/python/modules/itertools/combinationsDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/modules/itertools/combinationsWithReplacementDerived.java b/src/org/python/modules/itertools/combinationsWithReplacementDerived.java
--- a/src/org/python/modules/itertools/combinationsWithReplacementDerived.java
+++ b/src/org/python/modules/itertools/combinationsWithReplacementDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/modules/itertools/compressDerived.java b/src/org/python/modules/itertools/compressDerived.java
--- a/src/org/python/modules/itertools/compressDerived.java
+++ b/src/org/python/modules/itertools/compressDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/modules/itertools/countDerived.java b/src/org/python/modules/itertools/countDerived.java
--- a/src/org/python/modules/itertools/countDerived.java
+++ b/src/org/python/modules/itertools/countDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/modules/itertools/cycleDerived.java b/src/org/python/modules/itertools/cycleDerived.java
--- a/src/org/python/modules/itertools/cycleDerived.java
+++ b/src/org/python/modules/itertools/cycleDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/modules/itertools/dropwhileDerived.java b/src/org/python/modules/itertools/dropwhileDerived.java
--- a/src/org/python/modules/itertools/dropwhileDerived.java
+++ b/src/org/python/modules/itertools/dropwhileDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/modules/itertools/groupbyDerived.java b/src/org/python/modules/itertools/groupbyDerived.java
--- a/src/org/python/modules/itertools/groupbyDerived.java
+++ b/src/org/python/modules/itertools/groupbyDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/modules/itertools/ifilterDerived.java b/src/org/python/modules/itertools/ifilterDerived.java
--- a/src/org/python/modules/itertools/ifilterDerived.java
+++ b/src/org/python/modules/itertools/ifilterDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/modules/itertools/ifilterfalseDerived.java b/src/org/python/modules/itertools/ifilterfalseDerived.java
--- a/src/org/python/modules/itertools/ifilterfalseDerived.java
+++ b/src/org/python/modules/itertools/ifilterfalseDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/modules/itertools/isliceDerived.java b/src/org/python/modules/itertools/isliceDerived.java
--- a/src/org/python/modules/itertools/isliceDerived.java
+++ b/src/org/python/modules/itertools/isliceDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/modules/itertools/izipDerived.java b/src/org/python/modules/itertools/izipDerived.java
--- a/src/org/python/modules/itertools/izipDerived.java
+++ b/src/org/python/modules/itertools/izipDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/modules/itertools/izipLongestDerived.java b/src/org/python/modules/itertools/izipLongestDerived.java
--- a/src/org/python/modules/itertools/izipLongestDerived.java
+++ b/src/org/python/modules/itertools/izipLongestDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/modules/itertools/permutationsDerived.java b/src/org/python/modules/itertools/permutationsDerived.java
--- a/src/org/python/modules/itertools/permutationsDerived.java
+++ b/src/org/python/modules/itertools/permutationsDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/modules/itertools/productDerived.java b/src/org/python/modules/itertools/productDerived.java
--- a/src/org/python/modules/itertools/productDerived.java
+++ b/src/org/python/modules/itertools/productDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/modules/itertools/repeatDerived.java b/src/org/python/modules/itertools/repeatDerived.java
--- a/src/org/python/modules/itertools/repeatDerived.java
+++ b/src/org/python/modules/itertools/repeatDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/modules/itertools/starmapDerived.java b/src/org/python/modules/itertools/starmapDerived.java
--- a/src/org/python/modules/itertools/starmapDerived.java
+++ b/src/org/python/modules/itertools/starmapDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/modules/itertools/takewhileDerived.java b/src/org/python/modules/itertools/takewhileDerived.java
--- a/src/org/python/modules/itertools/takewhileDerived.java
+++ b/src/org/python/modules/itertools/takewhileDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/modules/random/PyRandomDerived.java b/src/org/python/modules/random/PyRandomDerived.java
--- a/src/org/python/modules/random/PyRandomDerived.java
+++ b/src/org/python/modules/random/PyRandomDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/modules/thread/PyLocalDerived.java b/src/org/python/modules/thread/PyLocalDerived.java
--- a/src/org/python/modules/thread/PyLocalDerived.java
+++ b/src/org/python/modules/thread/PyLocalDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/org/python/modules/zipimport/zipimporterDerived.java b/src/org/python/modules/zipimport/zipimporterDerived.java
--- a/src/org/python/modules/zipimport/zipimporterDerived.java
+++ b/src/org/python/modules/zipimport/zipimporterDerived.java
@@ -34,12 +34,15 @@
public int traverseDerived(Visitproc visit,Object arg) {
int retVal;
for(int i=0;i<slots.length;++i) {
- retVal=visit.visit(slots[i],arg);
- if (retVal!=0) {
- return retVal;
+ if (slots[i]!=null) {
+ retVal=visit.visit(slots[i],arg);
+ if (retVal!=0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit,arg);
+ retVal=visit.visit(objtype,arg);
+ return retVal!=0?retVal:traverseDictIfAny(visit,arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/src/templates/gderived-defs b/src/templates/gderived-defs
--- a/src/templates/gderived-defs
+++ b/src/templates/gderived-defs
@@ -35,12 +35,15 @@
public int traverseDerived(Visitproc visit, Object arg) {
int retVal;
for (int i = 0; i < slots.length; ++i) {
- retVal = visit.visit(slots[i], arg);
- if (retVal != 0) {
- return retVal;
+ if (slots[i] != null) {
+ retVal = visit.visit(slots[i], arg);
+ if (retVal != 0) {
+ return retVal;
+ }
}
}
- return traverseDictIfAny(visit, arg);
+ retVal = visit.visit(objtype, arg);
+ return retVal != 0 ? retVal : traverseDictIfAny(visit, arg);
}
/* end of TraverseprocDerived implementation */
diff --git a/tests/java/javatests/GCTestHelper.java b/tests/java/javatests/GCTestHelper.java
--- a/tests/java/javatests/GCTestHelper.java
+++ b/tests/java/javatests/GCTestHelper.java
@@ -4,7 +4,12 @@
import java.util.*;
public class GCTestHelper {
-
+
+ /**
+ * NastyFinalizer is a non-PyObject class with a time-consuming
+ * finalizer that does not notify Jython-gc. This would cause
+ * some tests in test_gc_jy.py to fail.
+ */
public static class NastyFinalizer {
public void finalize() {
@@ -16,6 +21,24 @@
}
/**
+ * In contrast to Nasty finalizer, this class - still equally
+ * time-consuming - calls {@code gc.notifyPreFinalization()}
+ * and {@code gc.notifyPostFinalization()} and thus lets all
+ * tests work as expected.
+ */
+ public static class NotSoNastyFinalizer {
+
+ public void finalize() {
+ org.python.modules.gc.notifyPreFinalization();
+ try {
+ Thread.sleep(2000);
+ } catch (InterruptedException ie) {
+ }
+ org.python.modules.gc.notifyPostFinalization();
+ }
+ }
+
+ /**
* PyReflectionTraversed is a test-PyObject that intentionally
* violates the Traverseproc-mechanism, i.e. holds a non-static
* reference to another PyObject, but neither implements Traverseproc
--
Repository URL: https://hg.python.org/jython
More information about the Jython-checkins
mailing list