mes: #<eof> is not a character.
authorJan Nieuwenhuizen <janneke@gnu.org>
Thu, 4 Jan 2018 20:36:46 +0000 (21:36 +0100)
committerJan Nieuwenhuizen <janneke@gnu.org>
Thu, 4 Jan 2018 20:36:46 +0000 (21:36 +0100)
* module/mes/display.mes (display):
* module/mes/type-0.mes (char?): -1 is not a character.
  (eof-object?): New function.
* tests/base.test ("#<eof>"): Test it.
* module/mes/scm.mes (eof-object?): Remove.
  (unread-char): Return character (WAS: integer).

module/mes/display.mes
module/mes/scm.mes
module/mes/type-0.mes
tests/base.test

index 1dcbc4b24fdf0577e09f2e81f064dae83b251367..e6831658396590bb5a4d11fd32172a090078b41b 100644 (file)
@@ -1,7 +1,7 @@
 ;;; -*-scheme-*-
 
 ;;; Mes --- Maxwell Equations of Software
 ;;; -*-scheme-*-
 
 ;;; Mes --- Maxwell Equations of Software
-;;; Copyright © 2016,2017 Jan Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2016,2017,2018 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;
 ;;; This file is part of Mes.
 ;;;
 ;;;
 ;;; This file is part of Mes.
 ;;;
     (define (d x cont? sep)
       (for-each (cut write-char <> port) (string->list sep))
       (cond
     (define (d x cont? sep)
       (for-each (cut write-char <> port) (string->list sep))
       (cond
+       ((eof-object? x)
+        (display "#<eof>" port))
        ((char? x)
         (if (not write?) (write-char x port)
        ((char? x)
         (if (not write?) (write-char x port)
-            (let ((name (and=> (assq x '((#\*eof* . *eof*)
-                                         (#\nul . nul)
+            (let ((name (and=> (assq x '((#\nul . nul)
                                          (#\alarm . alarm)
                                          (#\backspace . backspace)
                                          (#\tab . tab)
                                          (#\alarm . alarm)
                                          (#\backspace . backspace)
                                          (#\tab . tab)
index 78f5e137c7a2987c575dac757c6291cfa5d91946..550ec6c6e7b0f760d0844f9484b3ca573b990ffe 100644 (file)
 \f
 (define integer? number?)
 
 \f
 (define integer? number?)
 
-(define (eof-object? x)
-  (or (and (number? x) (= x -1))
-      (and (char? x) (eof-object? (char->integer x)))))
-
 (if (not (defined? 'peek-char))
     (define (peek-char)
       (integer->char (peek-byte))))
 (if (not (defined? 'peek-char))
     (define (peek-char)
       (integer->char (peek-byte))))
@@ -96,7 +92,7 @@
 
 (if (not (defined? 'unread-char))
     (define (unread-char c)
 
 (if (not (defined? 'unread-char))
     (define (unread-char c)
-      (unread-byte (char->integer c))))
+      (integer->char (unread-byte (char->integer c)))))
 
 (define (assq-set! alist key val)
   (let ((entry (assq key alist)))
 
 (define (assq-set! alist key val)
   (let ((entry (assq key alist)))
index 122fc26179e9973e0ae5610c5ef8b0c6aa404152..6b709cfec043fae909e954420f677447798b53dd 100644 (file)
@@ -1,7 +1,7 @@
 ;;; -*-scheme-*-
 
 ;;; Mes --- Maxwell Equations of Software
 ;;; -*-scheme-*-
 
 ;;; Mes --- Maxwell Equations of Software
-;;; Copyright © 2016,2017 Jan Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2016,2017,2018 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;
 ;;; This file is part of Mes.
 ;;;
 ;;;
 ;;; This file is part of Mes.
 ;;;
   (cond ((assq (core:type x) cell:type-alist) => cdr)))
 
 (define (char? x)
   (cond ((assq (core:type x) cell:type-alist) => cdr)))
 
 (define (char? x)
-  (eq? (core:type x) <cell:char>))
+  (and (eq? (core:type x) <cell:char>)
+       (>= (char->integer x) 0)))
+
+(define (eof-object? x)
+  (and (eq? (core:type x) <cell:char>)
+       (= (char->integer x) -1)))
 
 (define (closure? x)
   (eq? (core:type x) <cell:closure>))
 
 (define (closure? x)
   (eq? (core:type x) <cell:closure>))
index fef26f56da2183fe1cd89fbcdcb6b5f0b14b46df..784fe9c4a799ab27c67a8ecb134eac37282fa552 100755 (executable)
@@ -9,7 +9,7 @@ exit $?
 ;;; -*-scheme-*-
 
 ;;; Mes --- Maxwell Equations of Software
 ;;; -*-scheme-*-
 
 ;;; Mes --- Maxwell Equations of Software
-;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2016,2018 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;
 ;;; This file is part of Mes.
 ;;;
 ;;;
 ;;; This file is part of Mes.
 ;;;
@@ -110,4 +110,8 @@ exit $?
         (begin (set! seen? #t)
                (cont 2)))))
 
         (begin (set! seen? #t)
                (cont 2)))))
 
+(if (not guile?)
+    (pass-if-not "#<eof>"
+                 (char? (integer->char -1))))
+
 (result 'report)
 (result 'report)