Non-vector 1D arrays print as #1()
authorDaniel Llorens <daniel.llorens@bluewin.ch>
Wed, 18 Feb 2015 08:32:30 +0000 (09:32 +0100)
committerDaniel Llorens <daniel.llorens@bluewin.ch>
Wed, 18 Feb 2015 08:32:30 +0000 (09:32 +0100)
* libguile/arrays.c (scm_i_print_array): Print the dimension whenever
  the array is a true scm_tc7_array.

* test-suite/tests/arrays.test: Check that non-vector 1D arrays print as
  expected.

libguile/arrays.c
test-suite/tests/arrays.test

index 9e5715c..4c1b824 100644 (file)
@@ -1,5 +1,6 @@
 /* Copyright (C) 1995,1996,1997,1998,2000,2001,2002,2003,2004,2005,
- *   2006, 2009, 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc.
+ *   2006, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Free Software Foundation,
+ *   Inc.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public License
@@ -760,7 +761,7 @@ scm_i_print_array (SCM array, SCM port, scm_print_state *pstate)
   scm_array_get_handle (array, &h);
 
   scm_putc_unlocked ('#', port);
-  if (h.ndims != 1 || h.dims[0].lbnd != 0)
+  if (SCM_I_ARRAYP (array))
     scm_intprint (h.ndims, 10, port);
   if (h.element_type != SCM_ARRAY_ELEMENT_TYPE_SCM)
     scm_write (scm_array_handle_element_type (&h), port);
index 66316fe..e76c699 100644 (file)
@@ -1,6 +1,7 @@
 ;;;; arrays.test --- tests guile's uniform arrays     -*- scheme -*-
 ;;;;
-;;;; Copyright 2004, 2006, 2009, 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc.
+;;;; Copyright 2004, 2006, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Free
+;;;; Software Foundation, Inc.
 ;;;;
 ;;;; This library is free software; you can redistribute it and/or
 ;;;; modify it under the terms of the GNU Lesser General Public
                    #u32(2 3)))
   (pass-if (equal? (array-ref (array-row #2u32((0 1) (2 3)) 1) 0)
                    2)))
+
+;;;
+;;; printing arrays
+;;;
+
+(with-test-prefix/c&e "printing arrays"
+  (pass-if-equal "writing 1D arrays that aren't vectors"
+    "#1(b c)"
+    (format #f "~a" (make-shared-array #(a b c)
+                                       (lambda (i) (list (+ i 1)))
+                                       2))))