[Jython-checkins] jython: Filled in some generic type-info in PyUnicode and PyList.
stefan.richthofer
jython-checkins at python.org
Wed Jan 11 18:14:53 EST 2017
https://hg.python.org/jython/rev/a463c085baf4
changeset: 8004:a463c085baf4
user: Stefan Richthofer <stefan.richthofer at gmx.de>
date: Thu Jan 12 00:14:45 2017 +0100
summary:
Filled in some generic type-info in PyUnicode and PyList.
files:
src/org/python/core/PyList.java | 34 ++++++++++-------
src/org/python/core/PyUnicode.java | 30 +++++++-------
2 files changed, 34 insertions(+), 30 deletions(-)
diff --git a/src/org/python/core/PyList.java b/src/org/python/core/PyList.java
--- a/src/org/python/core/PyList.java
+++ b/src/org/python/core/PyList.java
@@ -106,7 +106,7 @@
// refactor and put in Py presumably;
// presumably we can consume an arbitrary iterable too!
private static void addCollection(List<PyObject> list, Collection<Object> seq) {
- Map<Long, PyObject> seen = new HashMap();
+ Map<Long, PyObject> seen = new HashMap<>();
for (Object item : seq) {
long id = Py.java_obj_id(item);
PyObject seen_obj = seen.get(id);
@@ -118,6 +118,7 @@
}
}
+ @SuppressWarnings("unchecked")
@ExposedNew
@ExposedMethod(doc = BuiltinDocs.list___init___doc)
final void list___init__(PyObject[] args, String[] kwds) {
@@ -141,7 +142,7 @@
list.addAll(((PyTuple) seq).getList());
} else if (seq.getClass().isAssignableFrom(Collection.class)) {
System.err.println("Adding from collection");
- addCollection(list, (Collection)seq);
+ addCollection(list, (Collection<Object>) seq);
} else {
for (PyObject item : seq.asIterable()) {
append(item);
@@ -169,6 +170,7 @@
remove(start, stop);
}
+ @SuppressWarnings("unchecked")
@Override
protected void setslice(int start, int stop, int step, PyObject value) {
if (stop < start) {
@@ -182,11 +184,11 @@
} else if (value instanceof PySequence) {
setsliceIterator(start, stop, step, value.asIterable().iterator());
} else if (value instanceof List) {
- setsliceList(start, stop, step, (List)value);
+ setsliceList(start, stop, step, (List<Object>)value);
} else {
Object valueList = value.__tojava__(List.class);
if (valueList != null && valueList != Py.NoConversion) {
- setsliceList(start, stop, step, (List)valueList);
+ setsliceList(start, stop, step, (List<Object>)valueList);
} else {
value = new PyList(value);
setsliceIterator(start, stop, step, value.asIterable().iterator());
@@ -194,7 +196,7 @@
}
}
- final private void setsliceList(int start, int stop, int step, List value) {
+ final private void setsliceList(int start, int stop, int step, List<Object> value) {
if (step == 1) {
list.subList(start, stop).clear();
int n = value.size();
@@ -333,7 +335,7 @@
int newSize = size * count;
if (list instanceof ArrayList) {
- ((ArrayList) list).ensureCapacity(newSize);
+ ((ArrayList<PyObject>) list).ensureCapacity(newSize);
}
List<PyObject> oldList = new ArrayList<PyObject>(list);
for (int i = 1; i < count; i++) {
@@ -379,8 +381,8 @@
PyList sum = null;
if (o instanceof PySequenceList && !(o instanceof PyTuple)) {
if (o instanceof PyList) {
- List oList = ((PyList) o).list;
- List newList = new ArrayList(list.size() + oList.size());
+ List<PyObject> oList = ((PyList) o).list;
+ ArrayList<PyObject> newList = new ArrayList<>(list.size() + oList.size());
newList.addAll(list);
newList.addAll(oList);
sum = fromList(newList);
@@ -389,11 +391,12 @@
// also support adding java lists (but not PyTuple!)
Object oList = o.__tojava__(List.class);
if (oList != Py.NoConversion && oList != null) {
- List otherList = (List) oList;
+ @SuppressWarnings("unchecked")
+ List<PyObject> otherList = (List<PyObject>) oList;
sum = new PyList();
sum.list_extend(this);
- for (Iterator i = otherList.iterator(); i.hasNext();) {
- sum.add(i.next());
+ for (PyObject ob: otherList) {
+ sum.add(ob);
}
}
}
@@ -406,6 +409,7 @@
}
//XXX: needs __doc__
+ @SuppressWarnings("unchecked")
@ExposedMethod(type = MethodType.BINARY)
final synchronized PyObject list___radd__(PyObject o) {
// Support adding java.util.List, but prevent adding PyTuple.
@@ -417,7 +421,7 @@
Object oList = o.__tojava__(List.class);
if (oList != Py.NoConversion && oList != null) {
sum = new PyList();
- sum.addAll((List) oList);
+ sum.addAll((List<PyObject>) oList);
sum.extend(this);
}
return sum;
@@ -958,7 +962,7 @@
Collections.reverse(decorated);
}
if (list instanceof ArrayList) {
- ((ArrayList) list).ensureCapacity(size);
+ ((ArrayList<PyObject>) list).ensureCapacity(size);
}
for (KV kv : decorated) {
list.add(kv.value);
@@ -1063,8 +1067,8 @@
}
@Override
- public Iterator iterator() {
- return new Iterator() {
+ public Iterator<Object> iterator() {
+ return new Iterator<Object>() {
private final Iterator<PyObject> iter = list.iterator();
diff --git a/src/org/python/core/PyUnicode.java b/src/org/python/core/PyUnicode.java
--- a/src/org/python/core/PyUnicode.java
+++ b/src/org/python/core/PyUnicode.java
@@ -24,7 +24,7 @@
*/
@Untraversable
@ExposedType(name = "unicode", base = PyBaseString.class, doc = BuiltinDocs.unicode_doc)
-public class PyUnicode extends PyString implements Iterable {
+public class PyUnicode extends PyString implements Iterable<Integer> {
/**
* Nearly every significant method comes in two versions: one applicable when the string
@@ -822,7 +822,7 @@
}
}
- private static class SteppedIterator<T> implements Iterator {
+ private static class SteppedIterator<T> implements Iterator<T> {
private final Iterator<T> iter;
private final int step;
@@ -885,14 +885,14 @@
public Iterator<Integer> newSubsequenceIterator(int start, int stop, int step) {
if (isBasicPlane()) {
if (step < 0) {
- return new SteppedIterator(step * -1, new ReversedIterator(
+ return new SteppedIterator<Integer>(step * -1, new ReversedIterator<Integer>(
new SubsequenceIteratorBasic(stop + 1, start + 1, 1)));
} else {
return new SubsequenceIteratorBasic(start, stop, step);
}
} else {
if (step < 0) {
- return new SteppedIterator(step * -1, new ReversedIterator(
+ return new SteppedIterator<Integer>(step * -1, new ReversedIterator<Integer>(
new SubsequenceIteratorImpl(stop + 1, start + 1, 1)));
} else {
return new SubsequenceIteratorImpl(start, stop, step);
@@ -1026,7 +1026,7 @@
return new PyUnicode(buffer);
}
- private static class StripIterator implements Iterator {
+ private static class StripIterator implements Iterator<Integer> {
private final Iterator<Integer> iter;
private int lookahead = -1;
@@ -1062,7 +1062,7 @@
}
@Override
- public Object next() {
+ public Integer next() {
int old = lookahead;
if (iter.hasNext()) {
lookahead = iter.next();
@@ -1121,7 +1121,7 @@
}
// Not basic plane: have to do real Unicode
- return new PyUnicode(new ReversedIterator(new StripIterator(sep, new ReversedIterator(
+ return new PyUnicode(new ReversedIterator<Integer>(new StripIterator(sep, new ReversedIterator<>(
new StripIterator(sep, newSubsequenceIterator())))));
}
@@ -1162,8 +1162,8 @@
}
// Not basic plane: have to do real Unicode
- return new PyUnicode(new ReversedIterator(new StripIterator(sep, new ReversedIterator(
- newSubsequenceIterator()))));
+ return new PyUnicode(new ReversedIterator<Integer>(new StripIterator(sep,
+ new ReversedIterator<>(newSubsequenceIterator()))));
}
@Override
@@ -1176,7 +1176,7 @@
return unicodePartition(coerceToUnicode(sep));
}
- private abstract class SplitIterator implements Iterator {
+ private abstract class SplitIterator implements Iterator<PyUnicode> {
protected final int maxsplit;
protected final Iterator<Integer> iter = newSubsequenceIterator();
@@ -1254,7 +1254,7 @@
}
}
- private static class PeekIterator<T> implements Iterator {
+ private static class PeekIterator<T> implements Iterator<T> {
private T lookahead = null;
private final Iterator<T> iter;
@@ -1286,7 +1286,7 @@
}
}
- private static class ReversedIterator<T> implements Iterator {
+ private static class ReversedIterator<T> implements Iterator<T> {
private final List<T> reversed = Generic.list();
private final Iterator<T> iter;
@@ -1315,9 +1315,9 @@
}
}
- private class LineSplitIterator implements Iterator {
+ private class LineSplitIterator implements Iterator<PyObject> {
- private final PeekIterator<Integer> iter = new PeekIterator(newSubsequenceIterator());
+ private final PeekIterator<Integer> iter = new PeekIterator<>(newSubsequenceIterator());
private final boolean keepends;
LineSplitIterator(boolean keepends) {
@@ -1330,7 +1330,7 @@
}
@Override
- public Object next() {
+ public PyObject next() {
StringBuilder buffer = new StringBuilder();
while (iter.hasNext()) {
int codepoint = iter.next();
--
Repository URL: https://hg.python.org/jython
More information about the Jython-checkins
mailing list