[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