lloda pushed a commit to branch lloda-squash0 in repository guile. commit 0bbd0b8a7fc706ca99994db79e18c39135394556 Author: Daniel Llorens <daniel.llor...@bluewin.ch> Date: Thu Feb 12 13:02:24 2015 +0100
Fix compilation of rank 0 typed array literals * module/system/vm/assembler.scm (simple-uniform-vector?): array-length fails for rank 0 arrays; fix the shape condition. * test-suite/tests/arrays.test: Test reading of #0f64(x) in compilation context. --- module/system/vm/assembler.scm | 4 +++- test-suite/tests/arrays.test | 8 +++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/module/system/vm/assembler.scm b/module/system/vm/assembler.scm index 96c6a63..5b89b04 100644 --- a/module/system/vm/assembler.scm +++ b/module/system/vm/assembler.scm @@ -1001,7 +1001,9 @@ immediate, and @code{#f} otherwise." (define (simple-uniform-vector? obj) (and (array? obj) (symbol? (array-type obj)) - (equal? (array-shape obj) (list (list 0 (1- (array-length obj))))))) + (match (array-shape obj) + (((0 n)) #t) + (else #f)))) (define (statically-allocatable? x) "Return @code{#t} if a non-immediate constant can be allocated diff --git a/test-suite/tests/arrays.test b/test-suite/tests/arrays.test index e76c699..20cb78b 100644 --- a/test-suite/tests/arrays.test +++ b/test-suite/tests/arrays.test @@ -204,7 +204,13 @@ (with-test-prefix/c&e "array-equal?" (pass-if "#s16(...)" - (array-equal? #s16(1 2 3) #s16(1 2 3)))) + (array-equal? #s16(1 2 3) #s16(1 2 3))) + + (pass-if "#0f64(...)" + (array-equal? #0f64(99) (make-typed-array 'f64 99))) + + (pass-if "#0(...)" + (array-equal? #0(99) (make-array 99)))) ;;; ;;; make-shared-array