Changeset 15096


Ignore:
Timestamp:
08/02/17 21:13:29 (6 months ago)
Author:
mevenson
Message:

Fix and check array types for JSS:JMAP/J2LIST
(Olof-Joachim Frahm)

From <https://github.com/armedbear/abcl/pull/60>.

Merges <https://github.com/armedbear/abcl/pull/60/commits/852463daac38615e30b6c4f1db0aeb4e32e7e2b8>.

Location:
trunk/abcl/contrib/jss
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/abcl/contrib/jss/collections.lisp

    r15091 r15096  
    143143         (iterator-run (#"elements" thing)))
    144144        (t
    145          (let ((array (ignore-errors (#"toArray" thing))))
    146            (if array
     145         (let ((jarray (ignore-errors
     146                        (or (and (jclass-array-p (jclass-of thing))
     147                                 thing)
     148                            (#"toArray" thing)))))
     149           (if jarray
    147150               (loop :for i :from 0 :below (jarray-length jarray)
    148151                     :do (funcall function (jarray-ref jarray i)))
     
    193196         (iterator-collect (#"elements" thing)))
    194197        (t
    195          (let ((array (ignore-errors (#"toArray" thing))))
    196            (if array
    197                (coerce array 'list)
     198         (let ((jarray (ignore-errors
     199                        (or (and (jclass-array-p (jclass-of thing))
     200                                 thing)
     201                            (#"toArray" thing)))))
     202           (if jarray
     203               (loop :for i :from 0 :below (jarray-length jarray)
     204                     :collect (jarray-ref jarray i))
    198205               (error "yet another iteration type - fix it: ~a" (jclass-name (jobject-class thing))))))))))
    199206
  • trunk/abcl/contrib/jss/t/collections.lisp

    r15094 r15096  
    88  (prove:ok (jss:jmap 'constantly
    99                      (java:jnew-array "java.lang.Integer" 10))
    10             "Checking JSS:MAP on Java array of java.lang.Integer
"))
     10            "Checking JSS:JMAP on Java array of java.lang.Integer
")
     11  (prove:ok (jss:j2list (java:jnew-array "java.lang.Integer" 10))
     12            "Checking JSS:J2LIST on Java array of java.langInteger
")
     13  (prove:is (let (list)
     14              (jss:jmap (lambda (x) (push x list))
     15                        (let ((jarray (java:jnew-array "int" 3)))
     16                          (jarray-set jarray 1 1)
     17                          (jarray-set jarray 2 2)
     18                          jarray))
     19              (nreverse list))
     20            '(0 1 2)
     21            "Checking JSS:JMAP on Java array of int
")
     22  (prove:is (jss:j2list (let ((jarray (java:jnew-array "int" 3)))
     23                          (jarray-set jarray 1 1)
     24                          (jarray-set jarray 2 2)
     25                          jarray))
     26            '(0 1 2)
     27            "Checking JSS:J2LIST on Java array of int
"))
    1128
    1229(prove:finalize)
Note: See TracChangeset for help on using the changeset viewer.