[pypy-svn] r25742 - in pypy/dist/pypy/translator/cli: . src test
antocuni at codespeak.net
antocuni at codespeak.net
Wed Apr 12 22:15:12 CEST 2006
Author: antocuni
Date: Wed Apr 12 22:15:03 2006
New Revision: 25742
Modified:
pypy/dist/pypy/translator/cli/cts.py
pypy/dist/pypy/translator/cli/src/pypylib.cs
pypy/dist/pypy/translator/cli/test/compile.py
pypy/dist/pypy/translator/cli/test/runtest.py
pypy/dist/pypy/translator/cli/test/test_list.py
Log:
Added support for list.extend.
Modified: pypy/dist/pypy/translator/cli/cts.py
==============================================================================
--- pypy/dist/pypy/translator/cli/cts.py (original)
+++ pypy/dist/pypy/translator/cli/cts.py Wed Apr 12 22:15:03 2006
@@ -14,6 +14,7 @@
log = py.log.Producer("cli")
py.log.setconsumer("cli", ansi_log)
+PYPY_LIST = '[pypylib]pypy.runtime.List`1<%s>'
_lltype_to_cts = {
Void: 'void',
@@ -26,6 +27,7 @@
Class: 'class [mscorlib]System.Type',
# TODO: it seems a hack
+ List.SELFTYPE_T: 'class ' + (PYPY_LIST % '!0'),
List.ITEMTYPE_T: '!0',
}
@@ -63,7 +65,7 @@
return 'void' # TODO: is it correct to ignore StaticMethod?
elif isinstance(t, List):
item_type = self.lltype_to_cts(t._ITEMTYPE)
- return self.__class('[pypylib]pypy.runtime.List`1<%s>' % item_type, include_class)
+ return self.__class(PYPY_LIST % item_type, include_class)
return _get_from_dict(_lltype_to_cts, t, 'Unknown type %s' % t)
Modified: pypy/dist/pypy/translator/cli/src/pypylib.cs
==============================================================================
--- pypy/dist/pypy/translator/cli/src/pypylib.cs (original)
+++ pypy/dist/pypy/translator/cli/src/pypylib.cs Wed Apr 12 22:15:03 2006
@@ -12,11 +12,6 @@
public class List<T>: System.Collections.Generic.List<T>
{
- public void append(T item)
- {
- this.Add(item);
- }
-
public int length()
{
return this.Count;
@@ -31,5 +26,16 @@
{
this[index] = value_;
}
+
+ public void append(T item)
+ {
+ this.Add(item);
+ }
+
+ public void extend(List<T> other)
+ {
+ this.AddRange(other);
+ }
+
}
}
Modified: pypy/dist/pypy/translator/cli/test/compile.py
==============================================================================
--- pypy/dist/pypy/translator/cli/test/compile.py (original)
+++ pypy/dist/pypy/translator/cli/test/compile.py Wed Apr 12 22:15:03 2006
@@ -25,15 +25,14 @@
def bar(x, y):
- try:
- return ovfcheck(x+y)
- except OverflowError:
- return 0
+ lst = [1,2,3,x,y]
+ lst.extend([1,2])
+ return 0
f = compile_function(bar, [int, int])
try:
- check(bar, f, sys.maxint, 13)
+ check(bar, f, 42, 13)
except py.test.Item.Skipped:
print 'Test skipped'
Modified: pypy/dist/pypy/translator/cli/test/runtest.py
==============================================================================
--- pypy/dist/pypy/translator/cli/test/runtest.py (original)
+++ pypy/dist/pypy/translator/cli/test/runtest.py Wed Apr 12 22:15:03 2006
@@ -102,7 +102,7 @@
self.graph = t.graphs[0]
if getoption('view'):
- t.viewcg()
+ t.view()
if getoption('wd'):
self.tmpdir = py.path.local('.')
Modified: pypy/dist/pypy/translator/cli/test/test_list.py
==============================================================================
--- pypy/dist/pypy/translator/cli/test/test_list.py (original)
+++ pypy/dist/pypy/translator/cli/test/test_list.py Wed Apr 12 22:15:03 2006
@@ -28,3 +28,21 @@
lst[0] = 0
lst[1] = 0
return sum_(lst)
+
+def list_iteration(x, y):
+ lst = create(x, y)
+ total = 1
+ for item in lst:
+ total *= item
+ return total
+
+def list_concat(x, y):
+ lst1 = create(x, x)
+ lst2 = create(y, y)
+ return sum_(lst1 + lst2)
+
+def list_extend(x, y):
+ lst = create(x, y)
+ lst += [y, y*2]
+ lst.extend([x, y])
+ return sum_(lst)
More information about the Pypy-commit
mailing list