From 4c2b15b37b91c1fc43a280cfecf14003f4bfc62f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Nieper-Wi=C3=9Fkirchen?= Date: Thu, 30 Jan 2025 15:25:07 +0100 Subject: [PATCH 01/20] Add generate-symbol procedure --- s/5_7.ss | 19 +++++++++++++----- s/cpprim.ss | 53 ++++++++++++++++++++++++++++++++++++++++----------- s/primdata.ss | 4 +++- 3 files changed, 59 insertions(+), 17 deletions(-) diff --git a/s/5_7.ss b/s/5_7.ss index 02fd1dc09..72ac13e59 100644 --- a/s/5_7.ss +++ b/s/5_7.ss @@ -1,12 +1,12 @@ ;;; 5_7.ss ;;; Copyright 1984-2017 Cisco Systems, Inc. -;;; +;;; ;;; Licensed under the Apache License, Version 2.0 (the "License"); ;;; you may not use this file except in compliance with the License. ;;; You may obtain a copy of the License at -;;; +;;; ;;; http://www.apache.org/licenses/LICENSE-2.0 -;;; +;;; ;;; Unless required by applicable law or agreed to in writing, software ;;; distributed under the License is distributed on an "AS IS" BASIS, ;;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -192,7 +192,7 @@ [(x) (unless (and (or (fixnum? x) (bignum? x)) (>= x 0)) ($oops 'gensym-count "~s is not a nonnegative integer" x)) - (set! count x)])) + (set! count x)])) (set-who! gensym (case-lambda [() (#3%gensym)] @@ -215,4 +215,13 @@ [(pretty-name unique-name) (unless (immutable-string? pretty-name) ($oops who "~s is not an immutable string" pretty-name)) (unless (immutable-string? unique-name) ($oops who "~s is not an immutable string" unique-name)) - ($strings->gensym pretty-name unique-name)]))) + ($strings->gensym pretty-name unique-name)])) + (set-who! generate-symbol + (case-lambda + [() (#3%$generate-symbol)] + [(pretty-name) + (if (immutable-string? pretty-name) + (#3%$generate-symbol pretty-name) + (if (string? pretty-name) + (#3%$generate-symbol (string->immutable-string pretty-name)) + ($oops who "~s is not a string" pretty-name)))]))) diff --git a/s/cpprim.ss b/s/cpprim.ss index 1a17a1253..53e279d58 100644 --- a/s/cpprim.ss +++ b/s/cpprim.ss @@ -2987,7 +2987,7 @@ ,(%constant sfalse) ,(let ([s `(inline ,(make-info-load 'unsigned-8 #f) ,%load ,si ,%zero (immediate 0))]) (%inline eq? (immediate ,space) ,s)))))))) - + (define-inline 2 $maybe-seginfo [(e) (bind #t (e) @@ -4799,7 +4799,7 @@ [(e) (ensure-single-valued e)] [(e1 e2) (build-fp-op-2 %fp+ e1 e2)] [(e1 . e*) (reduce-fp src sexpr 3 'fl+ e1 e*)]) - + (define-inline 3 fl* [() `(quote 1.0)] [(e) (ensure-single-valued e)] @@ -4865,7 +4865,7 @@ (define-inline 3 flexpt [(e1 e2) (build-fl-call (lookup-c-entry flexpt) e1 e2)]) - + (let () (define build-fl-make-rectangular (lambda (e1 e2) @@ -5236,7 +5236,7 @@ (define-fl2-call flatan flatan2) (define-fl-call flexp) (define-fl2-call fllog fllog2)) - + (define-inline 2 flexpt [(e1 e2) (build-checked-fp-op e1 e2 (lambda (e1 e2) (build-fl-call (lookup-c-entry flexpt) e1 e2)) @@ -5594,7 +5594,7 @@ (define-fptr-ref-inline $fptr-ref-unsigned-48 'unsigned-48 #f) (define-fptr-ref-inline $fptr-ref-swap-integer-48 'integer-48 #t) (define-fptr-ref-inline $fptr-ref-swap-unsigned-48 'unsigned-48 #t) - + (define-fptr-ref-inline $fptr-ref-integer-56 'integer-56 #f) (define-fptr-ref-inline $fptr-ref-unsigned-56 'unsigned-56 #f) (define-fptr-ref-inline $fptr-ref-swap-integer-56 'integer-56 #t) @@ -5711,7 +5711,7 @@ (define-fptr-set!-inline #t $fptr-set-unsigned-48! 'unsigned-48 build-object-set!) (define-fptr-set!-inline #t $fptr-set-swap-integer-48! 'integer-48 build-swap-object-set!) (define-fptr-set!-inline #t $fptr-set-swap-unsigned-48! 'unsigned-48 build-swap-object-set!) - + (define-fptr-set!-inline #t $fptr-set-integer-56! 'integer-56 build-object-set!) (define-fptr-set!-inline #t $fptr-set-unsigned-56! 'unsigned-56 build-object-set!) (define-fptr-set!-inline #t $fptr-set-swap-integer-56! 'integer-56 build-swap-object-set!) @@ -7846,7 +7846,7 @@ (%mref ,(%mref ,e-k ,(constant continuation-stack-disp)) ,(translate e-i (constant fixnum-offset) (constant log2-ptr-bytes)) 0)) - + (define build-return-code (lambda (e-ra) (safe-assert (= (constant compact-return-address-toplink-disp) @@ -7881,7 +7881,7 @@ ,(%constant compact-frame-words-mask)) ,(%constant fixnum-offset)) ,(%mref ,ra ,(constant return-address-frame-size-disp))))))) - + (define-inline 3 $continuation-return-code [(e) (build-return-code (build-ra e))]) (define-inline 3 $continuation-return-offset @@ -8244,6 +8244,37 @@ [() (build-make-symbol (%constant sfalse))] [(e-pname) (and (constant? immutable-string? e-pname) (go e-pname))] [(e-pname e-uname) #f])) + (let () + (define build-make-symbol + (lambda (e-name) + (bind #t ([t (%constant-alloc type-symbol (constant size-symbol))]) + (%seq + (set! ,(%mref ,t ,(constant symbol-name-disp)) ,e-name) + (set! ,(%mref ,t ,(constant symbol-value-disp)) ,(%constant sunbound)) + (set! ,(%mref ,t ,(constant symbol-pvalue-disp)) + (literal + ,(make-info-literal #f 'library + (lookup-libspec nonprocedure-code) + (constant code-data-disp)))) + (set! ,(%mref ,t ,(constant symbol-plist-disp)) ,(%constant snil)) + (set! ,(%mref ,t ,(constant symbol-splist-disp)) ,(%constant snil)) + (set! ,(%mref ,t ,(constant symbol-hash-disp)) ,(%constant sfalse)) + ,t)))) + (define (go e-pname) + (bind #t ([t (%constant-alloc type-pair (constant size-pair))]) + (%seq + (set! ,(%mref ,t ,(constant pair-cdr-disp)) ,e-pname) + (set! ,(%mref ,t ,(constant pair-car-disp)) ,(%constant strue)) + ,(build-make-symbol t)))) + (define-inline 3 $generate-symbol + [() (build-make-symbol (%constant strue))] + [(e-pname) (bind #f (e-pname) (go e-pname))]) + (define-inline 3 generate-symbol + [() (build-make-symbol (%constant strue))] + [(e-pname) (and (constant? immutable-string? e-pname) (go e-pname))]) + (define-inline 2 generate-symbol + [() (build-make-symbol (%constant strue))] + [(e-pname) (and (constant? immutable-string? e-pname) (go e-pname))])) (define-inline 3 symbol->string [(e-sym) (bind #t (e-sym) @@ -8251,9 +8282,9 @@ `(if ,e-name (if ,(%type-check mask-pair type-pair ,e-name) ,(bind #t ([e-cdr (%mref ,e-name ,(constant pair-cdr-disp))]) - `(if ,e-cdr - ,e-cdr - ,(%mref ,e-name ,(constant pair-car-disp)))) + `(if ,e-cdr + ,e-cdr + ,(%mref ,e-name ,(constant pair-car-disp)))) ,e-name) ,(%primcall #f sexpr $gensym->pretty-name ,e-sym))))]) (define-inline 3 $fxaddress diff --git a/s/primdata.ss b/s/primdata.ss index b9e4f91f4..23aefad13 100644 --- a/s/primdata.ss +++ b/s/primdata.ss @@ -297,7 +297,7 @@ (map [sig [(procedure list list ...) -> (list)]] [flags cp02 cp03 ieee r5rs true]) (for-each [sig [(procedure list list ...) -> (ptr ...)]] [flags cp02 cp03 ieee r5rs]) (symbol? [sig [(ptr) -> (boolean)]] [pred symbol] [flags pure unrestricted mifoldable discard ieee r5rs]) - (symbol->string [sig [(symbol) -> (string)]] [flags true mifoldable discard safeongoodargs ieee r5rs]) + (symbol->string [sig [(symbol) -> (string)]] [flags true mifoldable safeongoodargs ieee r5rs]) (symbol=? [sig [(symbol symbol symbol ...) -> (boolean)]] [flags pure mifoldable discard cp03 safeongoodargs]) (string->symbol [sig [(string) -> (interned-symbol)]] [flags true mifoldable discard safeongoodargs ieee r5rs]) (char? [sig [(ptr) -> (boolean)]] [pred char] [flags pure unrestricted mifoldable discard ieee r5rs]) @@ -1434,6 +1434,7 @@ (fxvector-ref [sig [(nonempty-fxvector sub-index) -> (fixnum)]] [flags mifoldable discard cp02]) (fxvector-set! [sig [(nonempty-fxvector sub-index fixnum) -> (void)]] [flags true]) (fxvector? [sig [(ptr) -> (boolean)]] [pred fxvector] [flags pure unrestricted mifoldable discard]) + (generate-symbol [sig [() (string) -> (symbol)]] [flags alloc safeongoodargs]) (gensym [sig [() (string) (string string) -> (gensym)]] [flags alloc safeongoodargs]) (gensym? [sig [(ptr) -> (boolean)]] [pred gensym] [flags pure unrestricted mifoldable discard]) (gensym->unique-string [sig [(gensym) -> (string)]] [flags true mifoldable]) ; can't discard ... if we have our hands on it, it must be in the oblist after this @@ -2215,6 +2216,7 @@ ($gc-cpu-time [flags true]) ($gc-real-time [flags true]) ($generation [flags single-valued]) + ($generate-symbol [sig [() (immutable-string) -> (symbol)]] [flags alloc]) ; needs immutable strings ($gensym [sig [() (immutable-string) (immutable-string immutable-string) -> (gensym)]] [flags alloc]) ; needs immutable strings ($gensym->pretty-name [flags single-valued]) ($get-timer [flags single-valued]) From 7ddb8c88525b65505caa61689102cdc76ddef1b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Nieper-Wi=C3=9Fkirchen?= Date: Thu, 30 Jan 2025 17:58:24 +0100 Subject: [PATCH 02/20] Add -symbol->name --- s/5_7.ss | 18 ++++++++++++++++++ s/cpprim.ss | 4 +++- s/primdata.ss | 1 + 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/s/5_7.ss b/s/5_7.ss index 72ac13e59..fc4582a6a 100644 --- a/s/5_7.ss +++ b/s/5_7.ss @@ -216,6 +216,24 @@ (unless (immutable-string? pretty-name) ($oops who "~s is not an immutable string" pretty-name)) (unless (immutable-string? unique-name) ($oops who "~s is not an immutable string" unique-name)) ($strings->gensym pretty-name unique-name)])) + (set! $generated-symbol->name + (lambda (x) + (with-tc-mutex + (let ([name ($symbol-name x)]) + (cond + [(pair? name) + (if (eq? (cdr name) #t) + (car name) + (let ([uname (string-append (car name) "-" (generate-unique-name))]) + ;; FIXME: (generate-unique-name) is not quite right. + ($string-set-immutable! uname) + ($intern-gensym x (cons uname #t)) + uname))] + [else + (let ([uname (generate-unique-name)]) + ($string-set-immutable! uname) + ($intern-gensym x (cons uname #t)) + uname)]))))) (set-who! generate-symbol (case-lambda [() (#3%$generate-symbol)] diff --git a/s/cpprim.ss b/s/cpprim.ss index 53e279d58..075da29d1 100644 --- a/s/cpprim.ss +++ b/s/cpprim.ss @@ -8285,7 +8285,9 @@ `(if ,e-cdr ,e-cdr ,(%mref ,e-name ,(constant pair-car-disp)))) - ,e-name) + (if ,(%inline eq? ,e-name ,(%constant strue)) + ,(%primcall #f sexpr $generated-symbol->name ,e-sym) + ,e-name)) ,(%primcall #f sexpr $gensym->pretty-name ,e-sym))))]) (define-inline 3 $fxaddress [(e) (%inline logand diff --git a/s/primdata.ss b/s/primdata.ss index 23aefad13..5d178205e 100644 --- a/s/primdata.ss +++ b/s/primdata.ss @@ -2217,6 +2217,7 @@ ($gc-real-time [flags true]) ($generation [flags single-valued]) ($generate-symbol [sig [() (immutable-string) -> (symbol)]] [flags alloc]) ; needs immutable strings + ($generated-symbol->name [flags single-valued]) ($gensym [sig [() (immutable-string) (immutable-string immutable-string) -> (gensym)]] [flags alloc]) ; needs immutable strings ($gensym->pretty-name [flags single-valued]) ($get-timer [flags single-valued]) From 47e52bcbdffc8959bbb6821b5d7233e5dcca41d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Nieper-Wi=C3=9Fkirchen?= Date: Thu, 30 Jan 2025 18:16:15 +0100 Subject: [PATCH 03/20] Correct `gensym?` in the presence of generated symbols --- s/cpprim.ss | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/s/cpprim.ss b/s/cpprim.ss index 075da29d1..c48881af7 100644 --- a/s/cpprim.ss +++ b/s/cpprim.ss @@ -8199,8 +8199,11 @@ (bind #t ([t (%mref ,e ,(constant symbol-name-disp))]) `(if ,t ,(build-and (%type-check mask-pair type-pair ,t) - (build-and (%mref ,t ,(constant pair-cdr-disp)) - (%constant strue))) + (bind #t ([t2 (%mref ,t ,(constant pair-cdr-disp))]) + (build-and t2 + (build-and + (build-not (%inline eq? ,t2 ,(%constant strue))) + (build-not (%inline eq? ,(%mref ,t ,(constant pair-car-disp)) ,(%constant strue))))))) ,(%constant strue)))))]) (define-inline 2 uninterned-symbol? [(e) From 0fb972fec39f3eb814a078606201a4c4f561fb94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Nieper-Wi=C3=9Fkirchen?= Date: Thu, 30 Jan 2025 19:33:22 +0100 Subject: [PATCH 04/20] Add missing --- s/5_7.ss | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/s/5_7.ss b/s/5_7.ss index fc4582a6a..552cb3d2b 100644 --- a/s/5_7.ss +++ b/s/5_7.ss @@ -242,4 +242,10 @@ (#3%$generate-symbol pretty-name) (if (string? pretty-name) (#3%$generate-symbol (string->immutable-string pretty-name)) - ($oops who "~s is not a string" pretty-name)))]))) + ($oops who "~s is not a string" pretty-name)))])) + (set-who! $generate-symbol + (case-lambda + [() (#3%$generate-symbol)] + [(pretty-name) + (unless (immutable-string? pretty-name) ($oops who "~s is not an immutable string" pretty-name)) + (#3%$generate-symbol pretty-name)]))) From 30e3932c1d4edaa788e5a98cd9ff97bb125daac8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Nieper-Wi=C3=9Fkirchen?= Date: Thu, 30 Jan 2025 20:09:21 +0100 Subject: [PATCH 05/20] Fix logic of pretty names --- s/5_7.ss | 9 +++++---- s/cpprim.ss | 15 ++++++++++----- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/s/5_7.ss b/s/5_7.ss index 552cb3d2b..ea8da7157 100644 --- a/s/5_7.ss +++ b/s/5_7.ss @@ -218,17 +218,18 @@ ($strings->gensym pretty-name unique-name)])) (set! $generated-symbol->name (lambda (x) + ;; do not generate name within the mutex... (with-tc-mutex (let ([name ($symbol-name x)]) (cond [(pair? name) - (if (eq? (cdr name) #t) - (car name) - (let ([uname (string-append (car name) "-" (generate-unique-name))]) + (if (eq? (car name) #t) + (let ([uname (string-append (cdr name) "-" (generate-unique-name))]) ;; FIXME: (generate-unique-name) is not quite right. ($string-set-immutable! uname) ($intern-gensym x (cons uname #t)) - uname))] + uname) + (car name))] [else (let ([uname (generate-unique-name)]) ($string-set-immutable! uname) diff --git a/s/cpprim.ss b/s/cpprim.ss index c48881af7..5cadc3af1 100644 --- a/s/cpprim.ss +++ b/s/cpprim.ss @@ -8199,10 +8199,10 @@ (bind #t ([t (%mref ,e ,(constant symbol-name-disp))]) `(if ,t ,(build-and (%type-check mask-pair type-pair ,t) - (bind #t ([t2 (%mref ,t ,(constant pair-cdr-disp))]) - (build-and t2 + (bind #t ([e-cdr (%mref ,t ,(constant pair-cdr-disp))]) + (build-and e-cdr (build-and - (build-not (%inline eq? ,t2 ,(%constant strue))) + (build-not (%inline eq? ,e-cdr ,(%constant strue))) (build-not (%inline eq? ,(%mref ,t ,(constant pair-car-disp)) ,(%constant strue))))))) ,(%constant strue)))))]) (define-inline 2 uninterned-symbol? @@ -8284,9 +8284,14 @@ (bind #t ([e-name (%mref ,e-sym ,(constant symbol-name-disp))]) `(if ,e-name (if ,(%type-check mask-pair type-pair ,e-name) - ,(bind #t ([e-cdr (%mref ,e-name ,(constant pair-cdr-disp))]) + ,(bind #t ([e-car (%mref ,e-name ,(constant pair-car-disp))] + [e-cdr (%mref ,e-name ,(constant pair-cdr-disp))]) `(if ,e-cdr - ,e-cdr + (if ,(%inline eq? ,e-cdr ,(%constant strue)) + ,e-car + (if ,(%inline eq? ,e-car ,(%constant strue)) + ,(%primcall #f sexpr $generated-symbol->name ,e-sym) + ,e-cdr)) ,(%mref ,e-name ,(constant pair-car-disp)))) (if ,(%inline eq? ,e-name ,(%constant strue)) ,(%primcall #f sexpr $generated-symbol->name ,e-sym) From 367ec493f7a0467765f6035ee22c3e114b9ad0e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Nieper-Wi=C3=9Fkirchen?= Date: Thu, 30 Jan 2025 20:25:50 +0100 Subject: [PATCH 06/20] Improve generated name --- s/5_7.ss | 58 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/s/5_7.ss b/s/5_7.ss index ea8da7157..2b97900ea 100644 --- a/s/5_7.ss +++ b/s/5_7.ss @@ -84,23 +84,26 @@ (eval-when (compile) (optimize-level 3)) (let ([prefix "g"] [count 0]) + (define unique-id (foreign-procedure "(cs)unique_id" () scheme-object)) + (define make-key + (lambda (post*) + (define alphabet "abcdefghijklmnopqrstuvwxyz0123456789") + (define b (string-length alphabet)) + (define digit->char (lambda (n) (string-ref alphabet n))) + (list->string + (let loop ([n (unique-id)] [a post*]) + (if (< n b) + ; ensure name starts with letter. assumes a-z first in alphabet. + (if (< n 26) + (cons (digit->char n) a) + (cons* (string-ref alphabet 0) (digit->char n) a)) + (loop (quotient n b) (cons (digit->char (remainder n b)) a))))))) (define generate-unique-name ; a-z must come first in alphabet. separator must not be in alphabet. (let ([suffix 0]) - (define unique-id (foreign-procedure "(cs)unique_id" () scheme-object)) (define (make-session-key) - (define alphabet "abcdefghijklmnopqrstuvwxyz0123456789") (define separator #\-) - (define b (string-length alphabet)) - (define digit->char (lambda (n) (string-ref alphabet n))) - (list->string - (let loop ([n (unique-id)] [a (list separator)]) - (if (< n b) - ; ensure name starts with letter. assumes a-z first in alphabet. - (if (< n 26) - (cons (digit->char n) a) - (cons* (string-ref alphabet 0) (digit->char n) a)) - (loop (quotient n b) (cons (digit->char (remainder n b)) a)))))) + (make-key (list separator))) (define (session-key) (or $session-key (let ([k (make-session-key)]) @@ -218,23 +221,20 @@ ($strings->gensym pretty-name unique-name)])) (set! $generated-symbol->name (lambda (x) - ;; do not generate name within the mutex... - (with-tc-mutex - (let ([name ($symbol-name x)]) - (cond - [(pair? name) - (if (eq? (car name) #t) - (let ([uname (string-append (cdr name) "-" (generate-unique-name))]) - ;; FIXME: (generate-unique-name) is not quite right. - ($string-set-immutable! uname) - ($intern-gensym x (cons uname #t)) - uname) - (car name))] - [else - (let ([uname (generate-unique-name)]) - ($string-set-immutable! uname) - ($intern-gensym x (cons uname #t)) - uname)]))))) + (let ([key (make-key '())]) ; construct the key outside the critical section + (with-tc-mutex + (let ([name ($symbol-name x)]) + (if (pair? name) + (if (eq? (car name) #t) + (let ([uname (string-append (cdr name) "-" key)]) + ($string-set-immutable! uname) + ($intern-gensym x (cons uname #t)) + uname) + (car name)) + (let ([uname (string-append "g-" key)]) + ($string-set-immutable! uname) + ($intern-gensym x (cons uname #t)) + uname))))))) (set-who! generate-symbol (case-lambda [() (#3%$generate-symbol)] From 8d6153fc85ab7191774f94d137871c7bc87bc9e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Nieper-Wi=C3=9Fkirchen?= Date: Thu, 30 Jan 2025 20:37:31 +0100 Subject: [PATCH 07/20] Add tests (one failing) --- mats/5_7.ms | 44 +++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 41 insertions(+), 3 deletions(-) diff --git a/mats/5_7.ms b/mats/5_7.ms index 58c0c31ae..da1eb905f 100644 --- a/mats/5_7.ms +++ b/mats/5_7.ms @@ -1,12 +1,12 @@ ;;; 5-7.ms ;;; Copyright 1984-2017 Cisco Systems, Inc. -;;; +;;; ;;; Licensed under the Apache License, Version 2.0 (the "License"); ;;; you may not use this file except in compliance with the License. ;;; You may obtain a copy of the License at -;;; +;;; ;;; http://www.apache.org/licenses/LICENSE-2.0 -;;; +;;; ;;; Unless required by applicable law or agreed to in writing, software ;;; distributed under the License is distributed on an "AS IS" BASIS, ;;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -153,3 +153,41 @@ (equal? "hello" (symbol->string (car r))))))) ) + +(mat generate-symbol + (symbol? (generate-symbol)) + (symbol? (generate-symbol "pretty")) + (symbol? (let ([x (generate-symbol)]) + (symbol->string x) ; intern + x)) + (symbol? (let ([x (generate-symbol "pretty")]) + (symbol->string x) ; intern + x)) + (not (uninterned-symbol? (generate-symbol))) + (not (uninterned-symbol? (generate-symbol "beautiful"))) + (not (uninterned-symbol? (let ([x (generate-symbol)]) + (symbol->string x) ; intern + x))) + (not (uninterned-symbol? (let ([x (generate-symbol "beautiful")]) + (symbol->string x) ; intern + x))) + (not (gensym? (generate-symbol))) + (not (gensym? (generate-symbol "handsome"))) + (not (gensym? (let ([x (generate-symbol)]) + (symbol->string x) ; intern + x))) + (not (gensym? (let ([x (generate-symbol "handsome")]) + (symbol->string x) ; intern + x))) + (let ([s (generate-symbol)]) + (symbol=? s s)) + (let ([s1 (generate-symbol)] [s2 (generate-symbol)]) + (not (symbol=? s1 s2))) + (let ([s1 (generate-symbol "g1")] [s2 (generate-symbol "g1")]) + (not (symbol=? s1 s2))) + (let ([s1 (generate-symbol "g1")] [s2 'g1]) + (not (symbol=? s1 s2))) + (let ([s (generate-symbol "g1")]) + (not (string=? (symbol->string s) "g1"))) + (let ([s (generate-symbol)]) ;FIXME + (symbol=? (string->symbol (symbol->string s)) s))) From 7db0600e33dbe0787bf151e0303317bfbfc23dce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Nieper-Wi=C3=9Fkirchen?= Date: Thu, 30 Jan 2025 20:59:35 +0100 Subject: [PATCH 08/20] Fix tests --- c/intern.c | 23 ++++++++++++++++------- mats/5_7.ms | 2 +- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/c/intern.c b/c/intern.c index 5e0d2958c..821fbee1f 100644 --- a/c/intern.c +++ b/c/intern.c @@ -1,12 +1,12 @@ /* intern.c * Copyright 1984-2017 Cisco Systems, Inc. - * + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -151,6 +151,15 @@ ptr S_mkstring(const string_char *s, iptr n) { return mkstring(s, n); } +static ptr real_symname(ptr sym) { + ptr name = SYMNAME(sym); + if (!GENSYMP(sym)) + return name; + if (Scdr(name) != Strue) + return Sfalse; + return Scar(name); +} + /* handles single-byte characters, implicit length */ ptr S_intern(const unsigned char *s) { iptr n = strlen((const char *)s); @@ -164,8 +173,8 @@ ptr S_intern(const unsigned char *s) { b = S_G.oblist[idx]; while (b != NULL) { sym = b->sym; - if (!GENSYMP(sym)) { - ptr str = SYMNAME(sym); + ptr str = real_symname(sym); + if (str != Sfalse) { if (Sstring_length(str) == n) { iptr i; for (i = 0; ; i += 1) { @@ -203,8 +212,8 @@ ptr S_intern_sc(const string_char *name, iptr n, ptr name_str) { b = S_G.oblist[idx]; while (b != NULL) { sym = b->sym; - if (!GENSYMP(sym)) { - ptr str = SYMNAME(sym); + ptr str = real_symname(sym); + if (str != Sfalse) { if (Sstring_length(str) == n) { iptr i; for (i = 0; ; i += 1) { diff --git a/mats/5_7.ms b/mats/5_7.ms index da1eb905f..ac0738038 100644 --- a/mats/5_7.ms +++ b/mats/5_7.ms @@ -189,5 +189,5 @@ (not (symbol=? s1 s2))) (let ([s (generate-symbol "g1")]) (not (string=? (symbol->string s) "g1"))) - (let ([s (generate-symbol)]) ;FIXME + (let ([s (generate-symbol)]) (symbol=? (string->symbol (symbol->string s)) s))) From 2d79d9a2fa7c31e131dec43ea58a209bba0ed4a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Nieper-Wi=C3=9Fkirchen?= Date: Thu, 30 Jan 2025 21:44:05 +0100 Subject: [PATCH 09/20] Add R6RS version of generate-temporaries --- mats/8.ms | 34 ++++++++++++++++++++++++++++++++++ s/primdata.ss | 3 ++- s/syntax.ss | 22 ++++++++++++++++++++++ 3 files changed, 58 insertions(+), 1 deletion(-) diff --git a/mats/8.ms b/mats/8.ms index 5ff89eef0..cacc0ea89 100644 --- a/mats/8.ms +++ b/mats/8.ms @@ -792,6 +792,40 @@ (equal? $gt-x '(53 -10 . 17)) ) +(mat r6rs:generate-temporaries + (error? (r6rs:generate-temporaries)) + (error? (r6rs:generate-temporaries '(a b c) '(d e f))) + (error? (r6rs:generate-temporaries '(a b . c))) + (error? (r6rs:generate-temporaries (let ([x (list 'a 'b 'c)]) (set-cdr! (cddr x) (cdr x)) x))) + (andmap identifier? (r6rs:generate-temporaries '(a b c))) + (= (length (r6rs:generate-temporaries '(a b c))) 3) + (andmap identifier? (r6rs:generate-temporaries #'(a b c))) + (= (length (r6rs:generate-temporaries #'(a b c))) 3) + (andmap identifier? (r6rs:generate-temporaries (cons 'q #'(1 2 3)))) + (= (length (r6rs:generate-temporaries (cons 'q #'(1 2 3)))) 4) + (andmap (lambda (x) (not (gensym? (syntax->datum x)))) (r6rs:generate-temporaries '(a b c))) + ; make sure r6rs:generate-temporaries isn't confused by annotations + (begin + (let ((op (open-output-file "testfile.ss" 'replace))) + (pretty-print + '(begin + (define-syntax $gt-a + (lambda (x) + (syntax-case x () + [(_ x) + (with-syntax ([(t1 t2 t3) (r6rs:generate-temporaries #'(1 1 1))]) + #'(define x (let ([t1 17] [t2 53] [t3 -10]) (cons* t2 t3 t1))))]))) + ($gt-a $gt-x)) + op) + (close-output-port op) + (compile-file "testfile.ss")) + #t) + (begin + (load "testfile.so") + #t) + (equal? $gt-x '(53 -10 . 17)) +) + (mat syntax->list (error? (syntax->list #'a)) (error? (syntax->list #'(a b . e))) diff --git a/s/primdata.ss b/s/primdata.ss index 5d178205e..3c757b41a 100644 --- a/s/primdata.ss +++ b/s/primdata.ss @@ -799,7 +799,7 @@ (free-identifier=? [sig [(identifier identifier) -> (boolean)]] [flags pure mifoldable discard cp03]) (syntax->datum [sig [(ptr) -> (ptr)]] [flags pure unrestricted mifoldable discard]) (datum->syntax [sig [(identifier ptr) -> (syntax)]] [flags pure mifoldable discard true]) - (generate-temporaries [sig [(ptr) -> (list)]] [flags alloc]) ; the argument can be a list or a syntax with a list or an annotation + ((r6rs: generate-temporaries) [sig [(ptr) -> (list)]] [flags alloc]) ; the argument can be a list or a syntax with a list or an annotation (syntax-violation [sig [(maybe-who string ptr) (maybe-who string ptr ptr) -> (bottom)]] [flags abort-op]) ) @@ -1435,6 +1435,7 @@ (fxvector-set! [sig [(nonempty-fxvector sub-index fixnum) -> (void)]] [flags true]) (fxvector? [sig [(ptr) -> (boolean)]] [pred fxvector] [flags pure unrestricted mifoldable discard]) (generate-symbol [sig [() (string) -> (symbol)]] [flags alloc safeongoodargs]) + (generate-temporaries [sig [(ptr) -> (list)]] [flags alloc]) ; the argument can be a list or a syntax with a list or an annotation (gensym [sig [() (string) (string string) -> (gensym)]] [flags alloc safeongoodargs]) (gensym? [sig [(ptr) -> (boolean)]] [pred gensym] [flags pure unrestricted mifoldable discard]) (gensym->unique-string [sig [(gensym) -> (string)]] [flags true mifoldable]) ; can't discard ... if we have our hands on it, it must be in the oblist after this diff --git a/s/syntax.ss b/s/syntax.ss index d53ccd5bd..9cba47bc5 100644 --- a/s/syntax.ss +++ b/s/syntax.ss @@ -7316,6 +7316,28 @@ (set-who! generate-temporaries (lambda (x) (define (gen-temp) (wrap (gensym) top-wrap)) + (let f ([fast x] [slow x]) + (let ([fast (strip-outer fast)]) + (cond + [(null? fast) '()] + [(pair? fast) + (cons (gen-temp) + (let ([fast (strip-outer (cdr fast))]) + (cond + [(null? fast) '()] + [(pair? fast) + (cons (gen-temp) + (let ([slow (strip-outer slow)]) + (if (eq? fast slow) + ($oops who "cyclic list structure ~s" x) + (if (pair? slow) + (f (cdr fast) (cdr slow)) + ($oops who "improper list structure ~s" x)))))] + [else ($oops who "improper list structure ~s" x)])))] + [else ($oops who "improper list structure ~s" x)]))))) + (set-who! #(r6rs: generate-temporaries) + (lambda (x) + (define (gen-temp) (wrap (generate-symbol) top-wrap)) (let f ([fast x] [slow x]) (let ([fast (strip-outer fast)]) (cond From 1bebff729bbe1e64423a092d5bacb4f10c0bb1f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Nieper-Wi=C3=9Fkirchen?= Date: Thu, 30 Jan 2025 22:54:03 +0100 Subject: [PATCH 10/20] Fix uses of $symbol-name --- s/cp0.ss | 33 +++++++++++++++++++-------------- s/cpnanopass.ss | 13 +++++++++---- 2 files changed, 28 insertions(+), 18 deletions(-) diff --git a/s/cp0.ss b/s/cp0.ss index 9c2ead447..6c60ca828 100644 --- a/s/cp0.ss +++ b/s/cp0.ss @@ -1,12 +1,12 @@ ;;; cp0.ss ;;; Copyright 1984-2017 Cisco Systems, Inc. -;;; +;;; ;;; Licensed under the Apache License, Version 2.0 (the "License"); ;;; you may not use this file except in compliance with the License. ;;; You may obtain a copy of the License at -;;; +;;; ;;; http://www.apache.org/licenses/LICENSE-2.0 -;;; +;;; ;;; Unless required by applicable law or agreed to in writing, software ;;; distributed under the License is distributed on an "AS IS" BASIS, ;;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -231,7 +231,7 @@ (if (null? old-ids) (reverse rnew-ids) (loop - (cdr old-ids) + (cdr old-ids) (and opnds (cdr opnds)) (cons (let ([old-id (car old-ids)] @@ -250,7 +250,7 @@ id)) rnew-ids))))]) (values (make-env (list->vector old-ids) (list->vector new-ids) old-env) new-ids)))) - + (define deinitialize-ids! (lambda (ids) ; clear operand field (a) to release storage the operands occupy and (b) to @@ -749,7 +749,12 @@ (define (symbol->lambda-name sym) (let ([x ($symbol-name sym)]) - (if (pair? x) (or (cdr x) (car x)) x))) + (if (pair? x) + (if (eq? #t (cdr x)) + (car x) + (or (cdr x) (car x))) + (and (not (eq? x #t)) + x)))) (define (preinfo-lambda-set-name-and-flags preinfo name flags) (let ([new-name (and @@ -1231,7 +1236,7 @@ [(case-lambda ,preinfo ,cl* ...) #t] [(if ,e1 ,e2 ,e3) (memoize (and (ivory1? e1) (ivory? e2) (ivory? e3)))] [(seq ,e1 ,e2) (memoize (and (ivory? e1) (ivory? e2)))] - [(record-ref ,rtd ,type ,index ,e) + [(record-ref ,rtd ,type ,index ,e) ; here ivory? differs from pure? (and (rtd-immutable-field? rtd index) (memoize (ivory1? e)))] @@ -1728,11 +1733,11 @@ ; (let ((x e)) x) => e ; x is clearly not assigned, even if flags are polluted and say it is (make-nontail (app-ctxt ctxt) (car rhs*))] - ; we drop the RHS of a let binding into the let body when the body expression is a call + ; we drop the RHS of a let binding into the let body when the body expression is a call ; and we can do so without violating evaluation order of bindings wrt the let body: ; * for pure, singly referenced bindings, we drop them to the variable reference site ; * for impure, singly referenced bindings, we drop them only into the most deeply - ; nested call of the let body to ensure the expression is fully evaluated before + ; nested call of the let body to ensure the expression is fully evaluated before ; any body (sub-)expressions ; when we drop an impure let binding, we require the other bindings at the same level ; to be unassigned so the location creation for the other bindings remains in the @@ -3471,7 +3476,7 @@ (values #t ctrtd-opaque-known) (nanopass-case (Lsrc Expr) (if x (result-exp (value-visit-operand! x)) false-rec) [(quote ,d) - (if d + (if d (values #t ctrtd-opaque-known) (if (and (not d) (or (not prtd) (and (record-type-opaque-known? prtd) (not (record-type-opaque? prtd))))) (values #f ctrtd-opaque-known) @@ -4509,7 +4514,7 @@ (let ([main (let f ([t** temp**] [e** (reverse e**)] [ls* (cons ?ls ?ls*)]) (if (null? t**) - (let ([results + (let ([results (let ([preinfo (app-preinfo ctxt)]) (let g ([t** temp**]) (if (null? (car t**)) @@ -4526,7 +4531,7 @@ (make-seq* (app-ctxt ctxt) results)))) (non-result-exp (value-visit-operand! (car ls*)) (build-let (car t**) (car e**) - (f (cdr t**) (cdr e**) (cdr ls*))))))]) + (f (cdr t**) (cdr e**) (cdr ls*))))))]) (if (fx= lvl 2) (make-seq (app-ctxt ctxt) `(if ,(build-primcall 2 'procedure? (list `(ref #f ,p))) @@ -5377,7 +5382,7 @@ (inline-make-guardian ctxt empty-env sc wd name moi formal* (lambda (ref-tc) - (list + (list (let* ([obj (cp0-make-temp #t)] [ref-obj (build-ref obj)]) (list (list obj) (build-primcall 3 '$install-guardian @@ -5386,7 +5391,7 @@ (list (list obj rep) (build-primcall 3 '$install-guardian (list (build-ref obj) (build-ref rep) ref-tc ordered?-bool)))))))) - + (define-inline 2 make-guardian [() (build-make-guardian '() false-rec ctxt empty-env sc wd name moi)] [(?ordered?) diff --git a/s/cpnanopass.ss b/s/cpnanopass.ss index b774bb192..5ec8da0f8 100644 --- a/s/cpnanopass.ss +++ b/s/cpnanopass.ss @@ -659,7 +659,7 @@ (let ([seqno next-lambda-seqno]) (set! next-lambda-seqno (fx+ seqno 1)) seqno)))) - + (include "np-info.ss") (module () @@ -791,7 +791,12 @@ [(string? x) x] [(symbol? x) (let ([name ($symbol-name x)]) - (if (pair? name) (or (cdr name) (car name)) name))] + (if (pair? name) + (if (eq? #t (cdr name)) + (car name) + (or (cdr name) (car name))) + (and (not (eq? name #t)) + name)))] [(eq? #f x) #f] [else (error 'np-discover-names "x is not a name" x)])))) (Expr : Expr (ir name moi) -> Expr () @@ -5203,7 +5208,7 @@ ,(if (not reify?) `(set! ,lvalue ,t) (%seq - (set! ,lvalue ,t) + (set! ,lvalue ,t) (set! ,%td (inline ,(intrinsic-info-asmlib reify-1cc #f) ,%asmlibcall)))) ;; Reified with attachment ,(let ([get `(set! ,lvalue ,(%mref ,ats ,(constant pair-car-disp)))]) @@ -8501,7 +8506,7 @@ (fx- offset (fx- (constant size-rp-header) (constant size-rp-compact-header))) offset))) - + (define asm-data-label (lambda (code* l offset func code-size) (let ([rel (make-funcrel 'abs l offset)]) From 159e1534b1f4b0e1544ff6e665f6d52333f0434a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Nieper-Wi=C3=9Fkirchen?= Date: Fri, 31 Jan 2025 07:23:36 +0100 Subject: [PATCH 11/20] Document variations on symbol-name --- s/cpprim.ss | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/s/cpprim.ss b/s/cpprim.ss index 5cadc3af1..4957384c2 100644 --- a/s/cpprim.ss +++ b/s/cpprim.ss @@ -8282,6 +8282,15 @@ [(e-sym) (bind #t (e-sym) (bind #t ([e-name (%mref ,e-sym ,(constant symbol-name-disp))]) + ; the symbol name can be of the following forms: + ; - : ordinary symbol + ; - #f: gensym, yet uninterned + ; - #t: generated symbol, yet uninterned + ; - ( . #f): uninterned symbol + ; - (#f . ): gensym with pretty name, yet uninterned + ; - (#t . ): generated symbol with pretty name, yet uninterned + ; - ( . ): gensym, interned + ; - ( . #t): generated symbol, interned `(if ,e-name (if ,(%type-check mask-pair type-pair ,e-name) ,(bind #t ([e-car (%mref ,e-name ,(constant pair-car-disp))] From ecfd7720b0b9687b90e6cc0822484017906a8b22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Nieper-Wi=C3=9Fkirchen?= Date: Fri, 31 Jan 2025 07:33:49 +0100 Subject: [PATCH 12/20] Update expected errors --- mats/root-experr-compile-0-f-f-f | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mats/root-experr-compile-0-f-f-f b/mats/root-experr-compile-0-f-f-f index e8c2d2edc..cf580eb99 100644 --- a/mats/root-experr-compile-0-f-f-f +++ b/mats/root-experr-compile-0-f-f-f @@ -8706,6 +8706,10 @@ enum.mo:Expected error in mat enumeration: "make-record-type: cannot extend seal 8.mo:Expected error in mat generate-temporaries: "incorrect argument count in call (generate-temporaries (quote (a b c)) (quote (d e f)))". 8.mo:Expected error in mat generate-temporaries: "generate-temporaries: improper list structure (a b . c)". 8.mo:Expected error in mat generate-temporaries: "generate-temporaries: cyclic list structure (a b c b c b ...)". +8.mo:Expected error in mat r6rs:generate-temporaries: "incorrect argument count in call (generate-temporaries)". +8.mo:Expected error in mat r6rs:generate-temporaries: "incorrect argument count in call (generate-temporaries (quote (a b c)) (quote (d e f)))". +8.mo:Expected error in mat r6rs:generate-temporaries: "generate-temporaries: improper list structure (a b . c)". +8.mo:Expected error in mat r6rs:generate-temporaries: "generate-temporaries: cyclic list structure (a b c b c b ...)". 8.mo:Expected error in mat syntax->list: "syntax->list: invalid argument #". 8.mo:Expected error in mat syntax->list: "syntax->list: invalid argument #". 8.mo:Expected error in mat syntax->vector: "syntax->vector: invalid argument #". From f6251409901b5b860a5aaf24a60b857e48ff2b49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Nieper-Wi=C3=9Fkirchen?= Date: Fri, 31 Jan 2025 07:52:54 +0100 Subject: [PATCH 13/20] Update patch file --- mats/patch-compile-0-t-f-f | 162 +++++++++++++++++++------------------ 1 file changed, 84 insertions(+), 78 deletions(-) diff --git a/mats/patch-compile-0-t-f-f b/mats/patch-compile-0-t-f-f index 846559535..9f412ef5a 100644 --- a/mats/patch-compile-0-t-f-f +++ b/mats/patch-compile-0-t-f-f @@ -1,5 +1,5 @@ -*** output-compile-0-f-f-f-experr/errors-compile-0-f-f-f Sat Oct 26 11:30:13 2024 ---- output-compile-0-t-f-f-experr/errors-compile-0-t-f-f Sat Oct 26 11:34:11 2024 +*** errors-compile-0-f-f-f 2025-01-31 07:30:30.869627363 +0100 +--- output-compile-0-t-f-f-spi-rmg/errors-compile-0-t-f-f 2025-01-31 07:41:21.423357785 +0100 *************** *** 180,186 **** 3.mo:Expected error in mat case-lambda: "incorrect number of arguments 2 to #". @@ -4634,24 +4634,22 @@ 7.mo:Expected error in mat top-level-value-functions: "define-top-level-value: # is not a symbol". 7.mo:Expected error in mat top-level-value-functions: "variable i-am-not-bound-i-hope is not bound". *************** -*** 8202,8209 **** +*** 8202,8208 **** record.mo:Expected error in mat r6rs-records-procedural: "incorrect number of arguments 1 to #". record.mo:Expected error in mat r6rs-records-procedural: "incorrect number of arguments 1 to #". record.mo:Expected error in mat r6rs-records-procedural: "incorrect number of arguments 3 to #". -- record.mo:Expected error in mat r6rs-records-procedural: "incorrect number of arguments 3 to #". +! record.mo:Expected error in mat r6rs-records-procedural: "incorrect number of arguments 3 to #". record.mo:Expected error in mat r6rs-records-procedural: "incorrect number of arguments 4 to #". record.mo:Expected error in mat r6rs-records-procedural: "make-record-constructor-descriptor: record constructor descriptor # is not for parent of record type #". record.mo:Expected error in mat r6rs-records-procedural: "make-record-type-descriptor: cannot extend sealed record type # as foo". - record.mo:Expected error in mat r6rs-records-syntactic: "invalid syntax point". ---- 8202,8209 ---- +--- 8202,8208 ---- record.mo:Expected error in mat r6rs-records-procedural: "incorrect number of arguments 1 to #". record.mo:Expected error in mat r6rs-records-procedural: "incorrect number of arguments 1 to #". record.mo:Expected error in mat r6rs-records-procedural: "incorrect number of arguments 3 to #". +! record.mo:Expected error in mat r6rs-records-procedural: "incorrect number of arguments 4 to #". record.mo:Expected error in mat r6rs-records-procedural: "incorrect number of arguments 4 to #". -+ record.mo:Expected error in mat r6rs-records-procedural: "incorrect number of arguments 4 to #". record.mo:Expected error in mat r6rs-records-procedural: "make-record-constructor-descriptor: record constructor descriptor # is not for parent of record type #". record.mo:Expected error in mat r6rs-records-procedural: "make-record-type-descriptor: cannot extend sealed record type # as foo". - record.mo:Expected error in mat r6rs-records-syntactic: "invalid syntax point". *************** *** 8293,8412 **** hash.mo:Expected error in mat old-hash-table: "hash-table-for-each: ((a . b)) is not an eq hashtable". @@ -5224,7 +5222,7 @@ hash.mo:Expected error in mat fasl-other-hashtable: "fasl-write: invalid fasl object #". hash.mo:Expected error in mat fasl-other-hashtable: "fasl-write: invalid fasl object #". *************** -*** 8702,8709 **** +*** 8702,8713 **** 8.mo:Expected error in mat with-syntax: "invalid syntax a". 8.mo:Expected error in mat with-syntax: "duplicate pattern variable x in (x x)". 8.mo:Expected error in mat with-syntax: "duplicate pattern variable x in (x x)". @@ -5232,8 +5230,12 @@ ! 8.mo:Expected error in mat generate-temporaries: "incorrect argument count in call (generate-temporaries (quote (a b c)) (quote (d e f)))". 8.mo:Expected error in mat generate-temporaries: "generate-temporaries: improper list structure (a b . c)". 8.mo:Expected error in mat generate-temporaries: "generate-temporaries: cyclic list structure (a b c b c b ...)". +! 8.mo:Expected error in mat r6rs:generate-temporaries: "incorrect argument count in call (generate-temporaries)". +! 8.mo:Expected error in mat r6rs:generate-temporaries: "incorrect argument count in call (generate-temporaries (quote (a b c)) (quote (d e f)))". + 8.mo:Expected error in mat r6rs:generate-temporaries: "generate-temporaries: improper list structure (a b . c)". + 8.mo:Expected error in mat r6rs:generate-temporaries: "generate-temporaries: cyclic list structure (a b c b c b ...)". 8.mo:Expected error in mat syntax->list: "syntax->list: invalid argument #". ---- 8702,8709 ---- +--- 8702,8713 ---- 8.mo:Expected error in mat with-syntax: "invalid syntax a". 8.mo:Expected error in mat with-syntax: "duplicate pattern variable x in (x x)". 8.mo:Expected error in mat with-syntax: "duplicate pattern variable x in (x x)". @@ -5241,9 +5243,13 @@ ! 8.mo:Expected error in mat generate-temporaries: "incorrect number of arguments 2 to #". 8.mo:Expected error in mat generate-temporaries: "generate-temporaries: improper list structure (a b . c)". 8.mo:Expected error in mat generate-temporaries: "generate-temporaries: cyclic list structure (a b c b c b ...)". +! 8.mo:Expected error in mat r6rs:generate-temporaries: "incorrect number of arguments 0 to #". +! 8.mo:Expected error in mat r6rs:generate-temporaries: "incorrect number of arguments 2 to #". + 8.mo:Expected error in mat r6rs:generate-temporaries: "generate-temporaries: improper list structure (a b . c)". + 8.mo:Expected error in mat r6rs:generate-temporaries: "generate-temporaries: cyclic list structure (a b c b c b ...)". 8.mo:Expected error in mat syntax->list: "syntax->list: invalid argument #". *************** -*** 9320,9335 **** +*** 9324,9339 **** 8.mo:Expected error in mat rnrs-eval: "attempt to assign unbound identifier foo". 8.mo:Expected error in mat rnrs-eval: "invalid definition in immutable environment (define cons (quote #))". 8.mo:Expected error in mat top-level-syntax-functions: "top-level-syntax: "hello" is not a symbol". @@ -5260,7 +5266,7 @@ 8.mo:Expected error in mat top-level-syntax-functions: "define-top-level-syntax: hello is not an environment". 8.mo:Expected error in mat top-level-syntax-functions: "define-top-level-syntax: # is not a symbol". 8.mo:Expected error in mat top-level-syntax-functions: "define-top-level-syntax: cannot modify immutable environment #". ---- 9320,9335 ---- +--- 9324,9339 ---- 8.mo:Expected error in mat rnrs-eval: "attempt to assign unbound identifier foo". 8.mo:Expected error in mat rnrs-eval: "invalid definition in immutable environment (define cons (quote #))". 8.mo:Expected error in mat top-level-syntax-functions: "top-level-syntax: "hello" is not a symbol". @@ -5278,7 +5284,7 @@ 8.mo:Expected error in mat top-level-syntax-functions: "define-top-level-syntax: # is not a symbol". 8.mo:Expected error in mat top-level-syntax-functions: "define-top-level-syntax: cannot modify immutable environment #". *************** -*** 9428,9450 **** +*** 9432,9454 **** fx.mo:Expected error in mat fx=?: "fx=?: (a) is not a fixnum". fx.mo:Expected error in mat fx=?: "fx=?: is not a fixnum". fx.mo:Expected error in mat fx=?: "fx=?: <-int> is not a fixnum". @@ -5302,7 +5308,7 @@ fx.mo:Expected error in mat $fxu<: "incorrect number of arguments 1 to #". fx.mo:Expected error in mat $fxu<: "incorrect number of arguments 3 to #". fx.mo:Expected error in mat $fxu<: "$fxu<: <-int> is not a fixnum". ---- 9428,9450 ---- +--- 9432,9454 ---- fx.mo:Expected error in mat fx=?: "fx=?: (a) is not a fixnum". fx.mo:Expected error in mat fx=?: "fx=?: is not a fixnum". fx.mo:Expected error in mat fx=?: "fx=?: <-int> is not a fixnum". @@ -5327,7 +5333,7 @@ fx.mo:Expected error in mat $fxu<: "incorrect number of arguments 3 to #". fx.mo:Expected error in mat $fxu<: "$fxu<: <-int> is not a fixnum". *************** -*** 9486,9498 **** +*** 9490,9502 **** fx.mo:Expected error in mat fx-/wraparound: "fx-: <-int> is not a fixnum". fx.mo:Expected error in mat fx-/wraparound: "fx-: <-int> is not a fixnum". fx.mo:Expected error in mat fx*: "fx*: (a . b) is not a fixnum". @@ -5341,7 +5347,7 @@ fx.mo:Expected error in mat r6rs:fx*: "fx*: is not a fixnum". fx.mo:Expected error in mat r6rs:fx*: "fx*: <-int> is not a fixnum". fx.mo:Expected error in mat r6rs:fx*: "fx*: #f is not a fixnum". ---- 9486,9498 ---- +--- 9490,9502 ---- fx.mo:Expected error in mat fx-/wraparound: "fx-: <-int> is not a fixnum". fx.mo:Expected error in mat fx-/wraparound: "fx-: <-int> is not a fixnum". fx.mo:Expected error in mat fx*: "fx*: (a . b) is not a fixnum". @@ -5356,7 +5362,7 @@ fx.mo:Expected error in mat r6rs:fx*: "fx*: <-int> is not a fixnum". fx.mo:Expected error in mat r6rs:fx*: "fx*: #f is not a fixnum". *************** -*** 9547,9559 **** +*** 9551,9563 **** fx.mo:Expected error in mat fx1+: "fx1+: <-int> is not a fixnum". fx.mo:Expected error in mat fx1+: "fx1+: is not a fixnum". fx.mo:Expected error in mat fx1+: "fx1+: a is not a fixnum". @@ -5370,7 +5376,7 @@ fx.mo:Expected error in mat fxmax: "fxmax: a is not a fixnum". fx.mo:Expected error in mat fxmax: "fxmax: is not a fixnum". fx.mo:Expected error in mat fxmax: "fxmax: <-int> is not a fixnum". ---- 9547,9559 ---- +--- 9551,9563 ---- fx.mo:Expected error in mat fx1+: "fx1+: <-int> is not a fixnum". fx.mo:Expected error in mat fx1+: "fx1+: is not a fixnum". fx.mo:Expected error in mat fx1+: "fx1+: a is not a fixnum". @@ -5385,7 +5391,7 @@ fx.mo:Expected error in mat fxmax: "fxmax: is not a fixnum". fx.mo:Expected error in mat fxmax: "fxmax: <-int> is not a fixnum". *************** -*** 9659,9668 **** +*** 9663,9672 **** fx.mo:Expected error in mat fxarithmetic-shift: "fxarithmetic-shift: fixnum overflow with arguments and 10". fx.mo:Expected error in mat fxarithmetic-shift: "fxarithmetic-shift: fixnum overflow with arguments -4097 and ". fx.mo:Expected error in mat fxarithmetic-shift: "fxarithmetic-shift: fixnum overflow with arguments <-int> and 1". @@ -5396,7 +5402,7 @@ fx.mo:Expected error in mat fxbit-field: "fxbit-field: 35.0 is not a fixnum". fx.mo:Expected error in mat fxbit-field: "fxbit-field: 5.0 is not a valid start index". fx.mo:Expected error in mat fxbit-field: "fxbit-field: 8.0 is not a valid end index". ---- 9659,9668 ---- +--- 9663,9672 ---- fx.mo:Expected error in mat fxarithmetic-shift: "fxarithmetic-shift: fixnum overflow with arguments and 10". fx.mo:Expected error in mat fxarithmetic-shift: "fxarithmetic-shift: fixnum overflow with arguments -4097 and ". fx.mo:Expected error in mat fxarithmetic-shift: "fxarithmetic-shift: fixnum overflow with arguments <-int> and 1". @@ -5408,7 +5414,7 @@ fx.mo:Expected error in mat fxbit-field: "fxbit-field: 5.0 is not a valid start index". fx.mo:Expected error in mat fxbit-field: "fxbit-field: 8.0 is not a valid end index". *************** -*** 9676,9709 **** +*** 9680,9713 **** fx.mo:Expected error in mat fxbit-field: "fxbit-field: is not a valid end index". fx.mo:Expected error in mat fxbit-field: "fxbit-field: is not a valid start index". fx.mo:Expected error in mat fxbit-field: "fxbit-field: is not a valid end index". @@ -5443,7 +5449,7 @@ fx.mo:Expected error in mat fxif: "fxif: a is not a fixnum". fx.mo:Expected error in mat fxif: "fxif: 3.4 is not a fixnum". fx.mo:Expected error in mat fxif: "fxif: (a) is not a fixnum". ---- 9676,9709 ---- +--- 9680,9713 ---- fx.mo:Expected error in mat fxbit-field: "fxbit-field: is not a valid end index". fx.mo:Expected error in mat fxbit-field: "fxbit-field: is not a valid start index". fx.mo:Expected error in mat fxbit-field: "fxbit-field: is not a valid end index". @@ -5479,7 +5485,7 @@ fx.mo:Expected error in mat fxif: "fxif: 3.4 is not a fixnum". fx.mo:Expected error in mat fxif: "fxif: (a) is not a fixnum". *************** -*** 9713,9756 **** +*** 9717,9760 **** fx.mo:Expected error in mat fxif: "fxif: <-int> is not a fixnum". fx.mo:Expected error in mat fxif: "fxif: <-int> is not a fixnum". fx.mo:Expected error in mat fxif: "fxif: <-int> is not a fixnum". @@ -5524,7 +5530,7 @@ fx.mo:Expected error in mat fxcopy-bit: "fxcopy-bit: 3.4 is not a fixnum". fx.mo:Expected error in mat fxcopy-bit: "fxcopy-bit: "3" is not a fixnum". fx.mo:Expected error in mat fxcopy-bit: "fxcopy-bit: is not a fixnum". ---- 9713,9756 ---- +--- 9717,9760 ---- fx.mo:Expected error in mat fxif: "fxif: <-int> is not a fixnum". fx.mo:Expected error in mat fxif: "fxif: <-int> is not a fixnum". fx.mo:Expected error in mat fxif: "fxif: <-int> is not a fixnum". @@ -5570,7 +5576,7 @@ fx.mo:Expected error in mat fxcopy-bit: "fxcopy-bit: "3" is not a fixnum". fx.mo:Expected error in mat fxcopy-bit: "fxcopy-bit: is not a fixnum". *************** -*** 9759,9769 **** +*** 9763,9773 **** fx.mo:Expected error in mat fxcopy-bit: "fxcopy-bit: invalid bit index -1". fx.mo:Expected error in mat fxcopy-bit: "fxcopy-bit: invalid bit index ". fx.mo:Expected error in mat fxcopy-bit: "fxcopy-bit: invalid bit index ". @@ -5582,7 +5588,7 @@ fx.mo:Expected error in mat fxcopy-bit-field: "fxcopy-bit-field: "3" is not a fixnum". fx.mo:Expected error in mat fxcopy-bit-field: "fxcopy-bit-field: 3.4 is not a valid start index". fx.mo:Expected error in mat fxcopy-bit-field: "fxcopy-bit-field: 3/4 is not a valid end index". ---- 9759,9769 ---- +--- 9763,9773 ---- fx.mo:Expected error in mat fxcopy-bit: "fxcopy-bit: invalid bit index -1". fx.mo:Expected error in mat fxcopy-bit: "fxcopy-bit: invalid bit index ". fx.mo:Expected error in mat fxcopy-bit: "fxcopy-bit: invalid bit index ". @@ -5595,7 +5601,7 @@ fx.mo:Expected error in mat fxcopy-bit-field: "fxcopy-bit-field: 3.4 is not a valid start index". fx.mo:Expected error in mat fxcopy-bit-field: "fxcopy-bit-field: 3/4 is not a valid end index". *************** -*** 9823,9832 **** +*** 9827,9836 **** fx.mo:Expected error in mat fxdiv0-and-mod0: "fxmod0: (a) is not a fixnum". fx.mo:Expected error in mat fxdiv0-and-mod0: "fxmod0: undefined for 0". fx.mo:Expected error in mat fxdiv0-and-mod0: "fxmod0: undefined for 0". @@ -5606,7 +5612,7 @@ fx.mo:Expected error in mat fx+/carry: "fx+/carry: 1.0 is not a fixnum". fx.mo:Expected error in mat fx+/carry: "fx+/carry: 2.0 is not a fixnum". fx.mo:Expected error in mat fx+/carry: "fx+/carry: 3.0 is not a fixnum". ---- 9823,9832 ---- +--- 9827,9836 ---- fx.mo:Expected error in mat fxdiv0-and-mod0: "fxmod0: (a) is not a fixnum". fx.mo:Expected error in mat fxdiv0-and-mod0: "fxmod0: undefined for 0". fx.mo:Expected error in mat fxdiv0-and-mod0: "fxmod0: undefined for 0". @@ -5618,7 +5624,7 @@ fx.mo:Expected error in mat fx+/carry: "fx+/carry: 2.0 is not a fixnum". fx.mo:Expected error in mat fx+/carry: "fx+/carry: 3.0 is not a fixnum". *************** -*** 9842,9851 **** +*** 9846,9855 **** fx.mo:Expected error in mat fx+/carry: "fx+/carry: <-int> is not a fixnum". fx.mo:Expected error in mat fx+/carry: "fx+/carry: <-int> is not a fixnum". fx.mo:Expected error in mat fx+/carry: "fx+/carry: <-int> is not a fixnum". @@ -5629,7 +5635,7 @@ fx.mo:Expected error in mat fx-/carry: "fx-/carry: 1.0 is not a fixnum". fx.mo:Expected error in mat fx-/carry: "fx-/carry: 2.0 is not a fixnum". fx.mo:Expected error in mat fx-/carry: "fx-/carry: 3.0 is not a fixnum". ---- 9842,9851 ---- +--- 9846,9855 ---- fx.mo:Expected error in mat fx+/carry: "fx+/carry: <-int> is not a fixnum". fx.mo:Expected error in mat fx+/carry: "fx+/carry: <-int> is not a fixnum". fx.mo:Expected error in mat fx+/carry: "fx+/carry: <-int> is not a fixnum". @@ -5641,7 +5647,7 @@ fx.mo:Expected error in mat fx-/carry: "fx-/carry: 2.0 is not a fixnum". fx.mo:Expected error in mat fx-/carry: "fx-/carry: 3.0 is not a fixnum". *************** -*** 9861,9870 **** +*** 9865,9874 **** fx.mo:Expected error in mat fx-/carry: "fx-/carry: <-int> is not a fixnum". fx.mo:Expected error in mat fx-/carry: "fx-/carry: <-int> is not a fixnum". fx.mo:Expected error in mat fx-/carry: "fx-/carry: <-int> is not a fixnum". @@ -5652,7 +5658,7 @@ fx.mo:Expected error in mat fx*/carry: "fx*/carry: 1.0 is not a fixnum". fx.mo:Expected error in mat fx*/carry: "fx*/carry: 2.0 is not a fixnum". fx.mo:Expected error in mat fx*/carry: "fx*/carry: 3.0 is not a fixnum". ---- 9861,9870 ---- +--- 9865,9874 ---- fx.mo:Expected error in mat fx-/carry: "fx-/carry: <-int> is not a fixnum". fx.mo:Expected error in mat fx-/carry: "fx-/carry: <-int> is not a fixnum". fx.mo:Expected error in mat fx-/carry: "fx-/carry: <-int> is not a fixnum". @@ -5664,7 +5670,7 @@ fx.mo:Expected error in mat fx*/carry: "fx*/carry: 2.0 is not a fixnum". fx.mo:Expected error in mat fx*/carry: "fx*/carry: 3.0 is not a fixnum". *************** -*** 9880,9890 **** +*** 9884,9894 **** fx.mo:Expected error in mat fx*/carry: "fx*/carry: <-int> is not a fixnum". fx.mo:Expected error in mat fx*/carry: "fx*/carry: <-int> is not a fixnum". fx.mo:Expected error in mat fx*/carry: "fx*/carry: <-int> is not a fixnum". @@ -5676,7 +5682,7 @@ fx.mo:Expected error in mat fxrotate-bit-field: "fxrotate-bit-field: a is not a fixnum". fx.mo:Expected error in mat fxrotate-bit-field: "fxrotate-bit-field: invalid start index 0.0". fx.mo:Expected error in mat fxrotate-bit-field: "fxrotate-bit-field: invalid end index 2.0". ---- 9880,9890 ---- +--- 9884,9894 ---- fx.mo:Expected error in mat fx*/carry: "fx*/carry: <-int> is not a fixnum". fx.mo:Expected error in mat fx*/carry: "fx*/carry: <-int> is not a fixnum". fx.mo:Expected error in mat fx*/carry: "fx*/carry: <-int> is not a fixnum". @@ -5689,7 +5695,7 @@ fx.mo:Expected error in mat fxrotate-bit-field: "fxrotate-bit-field: invalid start index 0.0". fx.mo:Expected error in mat fxrotate-bit-field: "fxrotate-bit-field: invalid end index 2.0". *************** -*** 9907,9916 **** +*** 9911,9920 **** fx.mo:Expected error in mat fxrotate-bit-field: "fxrotate-bit-field: invalid end index ". fx.mo:Expected error in mat fxrotate-bit-field: "fxrotate-bit-field: invalid end index ". fx.mo:Expected error in mat fxrotate-bit-field: "fxrotate-bit-field: count 1 is greater than difference between end index 5 and start index 5". @@ -5700,7 +5706,7 @@ fx.mo:Expected error in mat fxreverse-bit-field: "fxreverse-bit-field: a is not a fixnum". fx.mo:Expected error in mat fxreverse-bit-field: "fxreverse-bit-field: invalid start index 0.0". fx.mo:Expected error in mat fxreverse-bit-field: "fxreverse-bit-field: invalid end index 2.0". ---- 9907,9916 ---- +--- 9911,9920 ---- fx.mo:Expected error in mat fxrotate-bit-field: "fxrotate-bit-field: invalid end index ". fx.mo:Expected error in mat fxrotate-bit-field: "fxrotate-bit-field: invalid end index ". fx.mo:Expected error in mat fxrotate-bit-field: "fxrotate-bit-field: count 1 is greater than difference between end index 5 and start index 5". @@ -5712,7 +5718,7 @@ fx.mo:Expected error in mat fxreverse-bit-field: "fxreverse-bit-field: invalid start index 0.0". fx.mo:Expected error in mat fxreverse-bit-field: "fxreverse-bit-field: invalid end index 2.0". *************** -*** 9926,9943 **** +*** 9930,9947 **** fx.mo:Expected error in mat fxreverse-bit-field: "fxreverse-bit-field: invalid end index ". fx.mo:Expected error in mat fxreverse-bit-field: "fxreverse-bit-field: invalid end index <-int>". fx.mo:Expected error in mat fxreverse-bit-field: "fxreverse-bit-field: start index 7 is greater than end index 5". @@ -5731,7 +5737,7 @@ fl.mo:Expected error in mat fl=: "fl=: (a) is not a flonum". fl.mo:Expected error in mat fl=: "fl=: a is not a flonum". fl.mo:Expected error in mat fl=: "fl=: a is not a flonum". ---- 9926,9943 ---- +--- 9930,9947 ---- fx.mo:Expected error in mat fxreverse-bit-field: "fxreverse-bit-field: invalid end index ". fx.mo:Expected error in mat fxreverse-bit-field: "fxreverse-bit-field: invalid end index <-int>". fx.mo:Expected error in mat fxreverse-bit-field: "fxreverse-bit-field: start index 7 is greater than end index 5". @@ -5751,7 +5757,7 @@ fl.mo:Expected error in mat fl=: "fl=: a is not a flonum". fl.mo:Expected error in mat fl=: "fl=: a is not a flonum". *************** -*** 9945,9951 **** +*** 9949,9955 **** fl.mo:Expected error in mat fl=: "fl=: 3 is not a flonum". fl.mo:Expected error in mat fl=: "fl=: 7/2 is not a flonum". fl.mo:Expected error in mat fl=: "fl=: 7/2 is not a flonum". @@ -5759,7 +5765,7 @@ fl.mo:Expected error in mat fl<: "fl<: (a) is not a flonum". fl.mo:Expected error in mat fl<: "fl<: a is not a flonum". fl.mo:Expected error in mat fl<: "fl<: a is not a flonum". ---- 9945,9951 ---- +--- 9949,9955 ---- fl.mo:Expected error in mat fl=: "fl=: 3 is not a flonum". fl.mo:Expected error in mat fl=: "fl=: 7/2 is not a flonum". fl.mo:Expected error in mat fl=: "fl=: 7/2 is not a flonum". @@ -5768,7 +5774,7 @@ fl.mo:Expected error in mat fl<: "fl<: a is not a flonum". fl.mo:Expected error in mat fl<: "fl<: a is not a flonum". *************** -*** 9953,9959 **** +*** 9957,9963 **** fl.mo:Expected error in mat fl<: "fl<: 3 is not a flonum". fl.mo:Expected error in mat fl<: "fl<: 7/2 is not a flonum". fl.mo:Expected error in mat fl<: "fl<: 7/2 is not a flonum". @@ -5776,7 +5782,7 @@ fl.mo:Expected error in mat fl>: "fl>: (a) is not a flonum". fl.mo:Expected error in mat fl>: "fl>: a is not a flonum". fl.mo:Expected error in mat fl>: "fl>: a is not a flonum". ---- 9953,9959 ---- +--- 9957,9963 ---- fl.mo:Expected error in mat fl<: "fl<: 3 is not a flonum". fl.mo:Expected error in mat fl<: "fl<: 7/2 is not a flonum". fl.mo:Expected error in mat fl<: "fl<: 7/2 is not a flonum". @@ -5785,7 +5791,7 @@ fl.mo:Expected error in mat fl>: "fl>: a is not a flonum". fl.mo:Expected error in mat fl>: "fl>: a is not a flonum". *************** -*** 9961,9967 **** +*** 9965,9971 **** fl.mo:Expected error in mat fl>: "fl>: 3 is not a flonum". fl.mo:Expected error in mat fl>: "fl>: 7/2 is not a flonum". fl.mo:Expected error in mat fl>: "fl>: 7/2 is not a flonum". @@ -5793,7 +5799,7 @@ fl.mo:Expected error in mat fl<=: "fl<=: (a) is not a flonum". fl.mo:Expected error in mat fl<=: "fl<=: a is not a flonum". fl.mo:Expected error in mat fl<=: "fl<=: a is not a flonum". ---- 9961,9967 ---- +--- 9965,9971 ---- fl.mo:Expected error in mat fl>: "fl>: 3 is not a flonum". fl.mo:Expected error in mat fl>: "fl>: 7/2 is not a flonum". fl.mo:Expected error in mat fl>: "fl>: 7/2 is not a flonum". @@ -5802,7 +5808,7 @@ fl.mo:Expected error in mat fl<=: "fl<=: a is not a flonum". fl.mo:Expected error in mat fl<=: "fl<=: a is not a flonum". *************** -*** 9969,9975 **** +*** 9973,9979 **** fl.mo:Expected error in mat fl<=: "fl<=: 3 is not a flonum". fl.mo:Expected error in mat fl<=: "fl<=: 7/2 is not a flonum". fl.mo:Expected error in mat fl<=: "fl<=: 7/2 is not a flonum". @@ -5810,7 +5816,7 @@ fl.mo:Expected error in mat fl>=: "fl>=: (a) is not a flonum". fl.mo:Expected error in mat fl>=: "fl>=: a is not a flonum". fl.mo:Expected error in mat fl>=: "fl>=: a is not a flonum". ---- 9969,9975 ---- +--- 9973,9979 ---- fl.mo:Expected error in mat fl<=: "fl<=: 3 is not a flonum". fl.mo:Expected error in mat fl<=: "fl<=: 7/2 is not a flonum". fl.mo:Expected error in mat fl<=: "fl<=: 7/2 is not a flonum". @@ -5819,7 +5825,7 @@ fl.mo:Expected error in mat fl>=: "fl>=: a is not a flonum". fl.mo:Expected error in mat fl>=: "fl>=: a is not a flonum". *************** -*** 9977,10016 **** +*** 9981,10020 **** fl.mo:Expected error in mat fl>=: "fl>=: 3 is not a flonum". fl.mo:Expected error in mat fl>=: "fl>=: 7/2 is not a flonum". fl.mo:Expected error in mat fl>=: "fl>=: 7/2 is not a flonum". @@ -5860,7 +5866,7 @@ fl.mo:Expected error in mat fl>=?: "fl>=?: a is not a flonum". fl.mo:Expected error in mat fl>=?: "fl>=?: a is not a flonum". fl.mo:Expected error in mat fl>=?: "fl>=?: 3 is not a flonum". ---- 9977,10016 ---- +--- 9981,10020 ---- fl.mo:Expected error in mat fl>=: "fl>=: 3 is not a flonum". fl.mo:Expected error in mat fl>=: "fl>=: 7/2 is not a flonum". fl.mo:Expected error in mat fl>=: "fl>=: 7/2 is not a flonum". @@ -5902,7 +5908,7 @@ fl.mo:Expected error in mat fl>=?: "fl>=?: a is not a flonum". fl.mo:Expected error in mat fl>=?: "fl>=?: 3 is not a flonum". *************** -*** 10020,10026 **** +*** 10024,10030 **** fl.mo:Expected error in mat fl+: "fl+: (a . b) is not a flonum". fl.mo:Expected error in mat fl+: "fl+: 1 is not a flonum". fl.mo:Expected error in mat fl+: "fl+: 2/3 is not a flonum". @@ -5910,7 +5916,7 @@ fl.mo:Expected error in mat fl-: "fl-: (a . b) is not a flonum". fl.mo:Expected error in mat fl-: "fl-: 1 is not a flonum". fl.mo:Expected error in mat fl-: "fl-: a is not a flonum". ---- 10020,10026 ---- +--- 10024,10030 ---- fl.mo:Expected error in mat fl+: "fl+: (a . b) is not a flonum". fl.mo:Expected error in mat fl+: "fl+: 1 is not a flonum". fl.mo:Expected error in mat fl+: "fl+: 2/3 is not a flonum". @@ -5919,7 +5925,7 @@ fl.mo:Expected error in mat fl-: "fl-: 1 is not a flonum". fl.mo:Expected error in mat fl-: "fl-: a is not a flonum". *************** -*** 10030,10119 **** +*** 10034,10123 **** fl.mo:Expected error in mat fl*: "fl*: (a . b) is not a flonum". fl.mo:Expected error in mat fl*: "fl*: 1 is not a flonum". fl.mo:Expected error in mat fl*: "fl*: 2/3 is not a flonum". @@ -6010,7 +6016,7 @@ fl.mo:Expected error in mat flsingle: "flsingle: a is not a flonum". fl.mo:Expected error in mat flsingle: "flsingle: 3 is not a flonum". fl.mo:Expected error in mat flsingle: "flsingle: 2.0+1.0i is not a flonum". ---- 10030,10119 ---- +--- 10034,10123 ---- fl.mo:Expected error in mat fl*: "fl*: (a . b) is not a flonum". fl.mo:Expected error in mat fl*: "fl*: 1 is not a flonum". fl.mo:Expected error in mat fl*: "fl*: 2/3 is not a flonum". @@ -6102,7 +6108,7 @@ fl.mo:Expected error in mat flsingle: "flsingle: 3 is not a flonum". fl.mo:Expected error in mat flsingle: "flsingle: 2.0+1.0i is not a flonum". *************** -*** 10132,10167 **** +*** 10136,10171 **** fl.mo:Expected error in mat flinfinite?: "flinfinite?: 3 is not a flonum". fl.mo:Expected error in mat flinfinite?: "flinfinite?: 3/4 is not a flonum". fl.mo:Expected error in mat flinfinite?: "flinfinite?: hi is not a flonum". @@ -6139,7 +6145,7 @@ fl.mo:Expected error in mat fleven?: "fleven?: a is not a flonum". fl.mo:Expected error in mat fleven?: "fleven?: 3 is not a flonum". fl.mo:Expected error in mat fleven?: "fleven?: 3.2 is not an integer". ---- 10132,10167 ---- +--- 10136,10171 ---- fl.mo:Expected error in mat flinfinite?: "flinfinite?: 3 is not a flonum". fl.mo:Expected error in mat flinfinite?: "flinfinite?: 3/4 is not a flonum". fl.mo:Expected error in mat flinfinite?: "flinfinite?: hi is not a flonum". @@ -6177,7 +6183,7 @@ fl.mo:Expected error in mat fleven?: "fleven?: 3 is not a flonum". fl.mo:Expected error in mat fleven?: "fleven?: 3.2 is not an integer". *************** -*** 10169,10176 **** +*** 10173,10180 **** fl.mo:Expected error in mat fleven?: "fleven?: 1+1i is not a flonum". fl.mo:Expected error in mat fleven?: "fleven?: +inf.0 is not an integer". fl.mo:Expected error in mat fleven?: "fleven?: +nan.0 is not an integer". @@ -6186,7 +6192,7 @@ fl.mo:Expected error in mat flodd?: "flodd?: a is not a flonum". fl.mo:Expected error in mat flodd?: "flodd?: 3 is not a flonum". fl.mo:Expected error in mat flodd?: "flodd?: 3.2 is not an integer". ---- 10169,10176 ---- +--- 10173,10180 ---- fl.mo:Expected error in mat fleven?: "fleven?: 1+1i is not a flonum". fl.mo:Expected error in mat fleven?: "fleven?: +inf.0 is not an integer". fl.mo:Expected error in mat fleven?: "fleven?: +nan.0 is not an integer". @@ -6196,7 +6202,7 @@ fl.mo:Expected error in mat flodd?: "flodd?: 3 is not a flonum". fl.mo:Expected error in mat flodd?: "flodd?: 3.2 is not an integer". *************** -*** 10178,10184 **** +*** 10182,10188 **** fl.mo:Expected error in mat flodd?: "flodd?: 3+1i is not a flonum". fl.mo:Expected error in mat flodd?: "flodd?: +inf.0 is not an integer". fl.mo:Expected error in mat flodd?: "flodd?: +nan.0 is not an integer". @@ -6204,7 +6210,7 @@ fl.mo:Expected error in mat flmin: "flmin: a is not a flonum". fl.mo:Expected error in mat flmin: "flmin: a is not a flonum". fl.mo:Expected error in mat flmin: "flmin: a is not a flonum". ---- 10178,10184 ---- +--- 10182,10188 ---- fl.mo:Expected error in mat flodd?: "flodd?: 3+1i is not a flonum". fl.mo:Expected error in mat flodd?: "flodd?: +inf.0 is not an integer". fl.mo:Expected error in mat flodd?: "flodd?: +nan.0 is not an integer". @@ -6213,7 +6219,7 @@ fl.mo:Expected error in mat flmin: "flmin: a is not a flonum". fl.mo:Expected error in mat flmin: "flmin: a is not a flonum". *************** -*** 10186,10192 **** +*** 10190,10196 **** fl.mo:Expected error in mat flmin: "flmin: a is not a flonum". fl.mo:Expected error in mat flmin: "flmin: 0.0+1.0i is not a flonum". fl.mo:Expected error in mat flmin: "flmin: 0+1i is not a flonum". @@ -6221,7 +6227,7 @@ fl.mo:Expected error in mat flmax: "flmax: a is not a flonum". fl.mo:Expected error in mat flmax: "flmax: a is not a flonum". fl.mo:Expected error in mat flmax: "flmax: 3 is not a flonum". ---- 10186,10192 ---- +--- 10190,10196 ---- fl.mo:Expected error in mat flmin: "flmin: a is not a flonum". fl.mo:Expected error in mat flmin: "flmin: 0.0+1.0i is not a flonum". fl.mo:Expected error in mat flmin: "flmin: 0+1i is not a flonum". @@ -6230,7 +6236,7 @@ fl.mo:Expected error in mat flmax: "flmax: a is not a flonum". fl.mo:Expected error in mat flmax: "flmax: 3 is not a flonum". *************** -*** 10194,10207 **** +*** 10198,10211 **** fl.mo:Expected error in mat flmax: "flmax: a is not a flonum". fl.mo:Expected error in mat flmax: "flmax: 0.0+1.0i is not a flonum". fl.mo:Expected error in mat flmax: "flmax: 0+1i is not a flonum". @@ -6245,7 +6251,7 @@ fl.mo:Expected error in mat fldenominator: "fldenominator: a is not a flonum". fl.mo:Expected error in mat fldenominator: "fldenominator: 3 is not a flonum". fl.mo:Expected error in mat fldenominator: "fldenominator: 0+1i is not a flonum". ---- 10194,10207 ---- +--- 10198,10211 ---- fl.mo:Expected error in mat flmax: "flmax: a is not a flonum". fl.mo:Expected error in mat flmax: "flmax: 0.0+1.0i is not a flonum". fl.mo:Expected error in mat flmax: "flmax: 0+1i is not a flonum". @@ -6261,7 +6267,7 @@ fl.mo:Expected error in mat fldenominator: "fldenominator: 3 is not a flonum". fl.mo:Expected error in mat fldenominator: "fldenominator: 0+1i is not a flonum". *************** -*** 10230,10238 **** +*** 10234,10242 **** fl.mo:Expected error in mat fldiv0-and-mod0: "flmod0: 17 is not a flonum". fl.mo:Expected error in mat fldiv0-and-mod0: "flmod0: a is not a flonum". fl.mo:Expected error in mat fldiv0-and-mod0: "flmod0: (a) is not a flonum". @@ -6271,7 +6277,7 @@ fl.mo:Expected error in mat flbit-field: "flbit-field: 0 is not a flonum". fl.mo:Expected error in mat flbit-field: "flbit-field: invalid start index -1". fl.mo:Expected error in mat flbit-field: "flbit-field: invalid end index 1". ---- 10230,10238 ---- +--- 10234,10242 ---- fl.mo:Expected error in mat fldiv0-and-mod0: "flmod0: 17 is not a flonum". fl.mo:Expected error in mat fldiv0-and-mod0: "flmod0: a is not a flonum". fl.mo:Expected error in mat fldiv0-and-mod0: "flmod0: (a) is not a flonum". @@ -6282,7 +6288,7 @@ fl.mo:Expected error in mat flbit-field: "flbit-field: invalid start index -1". fl.mo:Expected error in mat flbit-field: "flbit-field: invalid end index 1". *************** -*** 10258,10264 **** +*** 10262,10268 **** cfl.mo:Expected error in mat cfl-: "cfl-: a is not a cflonum". cfl.mo:Expected error in mat cfl-: "cfl-: a is not a cflonum". cfl.mo:Expected error in mat cfl-: "cfl-: a is not a cflonum". @@ -6290,7 +6296,7 @@ cfl.mo:Expected error in mat cfl-: "cfl-: a is not a cflonum". cfl.mo:Expected error in mat cfl-: "cfl-: a is not a cflonum". cfl.mo:Expected error in mat cfl-: "cfl-: a is not a cflonum". ---- 10258,10264 ---- +--- 10262,10268 ---- cfl.mo:Expected error in mat cfl-: "cfl-: a is not a cflonum". cfl.mo:Expected error in mat cfl-: "cfl-: a is not a cflonum". cfl.mo:Expected error in mat cfl-: "cfl-: a is not a cflonum". @@ -6299,7 +6305,7 @@ cfl.mo:Expected error in mat cfl-: "cfl-: a is not a cflonum". cfl.mo:Expected error in mat cfl-: "cfl-: a is not a cflonum". *************** -*** 10268,10281 **** +*** 10272,10285 **** cfl.mo:Expected error in mat cfl/: "cfl/: a is not a cflonum". cfl.mo:Expected error in mat cfl/: "cfl/: a is not a cflonum". cfl.mo:Expected error in mat cfl/: "cfl/: a is not a cflonum". @@ -6314,7 +6320,7 @@ foreign.mo:Expected error in mat load-shared-object: "load-shared-object: invalid path 3". foreign.mo:Expected error in mat foreign-procedure: "foreign-procedure: no entry for "i do not exist"". foreign.mo:Expected error in mat foreign-procedure: "foreign-procedure: no entry for "i do not exist"". ---- 10268,10281 ---- +--- 10272,10285 ---- cfl.mo:Expected error in mat cfl/: "cfl/: a is not a cflonum". cfl.mo:Expected error in mat cfl/: "cfl/: a is not a cflonum". cfl.mo:Expected error in mat cfl/: "cfl/: a is not a cflonum". @@ -6330,7 +6336,7 @@ foreign.mo:Expected error in mat foreign-procedure: "foreign-procedure: no entry for "i do not exist"". foreign.mo:Expected error in mat foreign-procedure: "foreign-procedure: no entry for "i do not exist"". *************** -*** 10310,10317 **** +*** 10314,10321 **** foreign.mo:Expected error in mat foreign-procedure: "id: invalid foreign-procedure argument foo". foreign.mo:Expected error in mat foreign-procedure: "foreign-procedure: invalid foreign procedure handle abcde". foreign.mo:Expected error in mat foreign-procedure: "float_id: invalid foreign-procedure argument 0". @@ -6339,7 +6345,7 @@ foreign.mo:Expected error in mat foreign-sizeof: "foreign-sizeof: invalid foreign type specifier i-am-not-a-type". foreign.mo:Expected error in mat foreign-sizeof: "foreign-sizeof: invalid foreign type specifier 1". foreign.mo:Expected error in mat foreign-bytevectors: "u8*->u8*: invalid foreign-procedure argument "hello"". ---- 10310,10317 ---- +--- 10314,10321 ---- foreign.mo:Expected error in mat foreign-procedure: "id: invalid foreign-procedure argument foo". foreign.mo:Expected error in mat foreign-procedure: "foreign-procedure: invalid foreign procedure handle abcde". foreign.mo:Expected error in mat foreign-procedure: "float_id: invalid foreign-procedure argument 0". @@ -6349,7 +6355,7 @@ foreign.mo:Expected error in mat foreign-sizeof: "foreign-sizeof: invalid foreign type specifier 1". foreign.mo:Expected error in mat foreign-bytevectors: "u8*->u8*: invalid foreign-procedure argument "hello"". *************** -*** 10831,10843 **** +*** 10843,10855 **** unix.mo:Expected error in mat file-operations: "file-access-time: failed for "testlink": no such file or directory". unix.mo:Expected error in mat file-operations: "file-change-time: failed for "testlink": no such file or directory". unix.mo:Expected error in mat file-operations: "file-modification-time: failed for "testlink": no such file or directory". @@ -6363,7 +6369,7 @@ windows.mo:Expected error in mat registry: "get-registry: pooh is not a string". windows.mo:Expected error in mat registry: "put-registry!: 3 is not a string". windows.mo:Expected error in mat registry: "put-registry!: 3 is not a string". ---- 10831,10843 ---- +--- 10843,10855 ---- unix.mo:Expected error in mat file-operations: "file-access-time: failed for "testlink": no such file or directory". unix.mo:Expected error in mat file-operations: "file-change-time: failed for "testlink": no such file or directory". unix.mo:Expected error in mat file-operations: "file-modification-time: failed for "testlink": no such file or directory". @@ -6378,7 +6384,7 @@ windows.mo:Expected error in mat registry: "put-registry!: 3 is not a string". windows.mo:Expected error in mat registry: "put-registry!: 3 is not a string". *************** -*** 10865,10936 **** +*** 10877,10948 **** ieee.mo:Expected error in mat flonum->fixnum: "flonum->fixnum: result for -inf.0 would be outside of fixnum range". ieee.mo:Expected error in mat flonum->fixnum: "flonum->fixnum: result for +nan.0 would be outside of fixnum range". ieee.mo:Expected error in mat fllp: "fllp: 3 is not a flonum". @@ -6451,7 +6457,7 @@ date.mo:Expected error in mat time: "time>=?: 3 is not a time record". date.mo:Expected error in mat time: "time>=?: # is not a time record". date.mo:Expected error in mat time: "time>=?: types of