mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-03 21:30:29 +02:00
* libguile/tags.h (scm_tc7_program): * libguile/programs.h: Programs now have their own tc7 code. Fix up the macros appropriately. * libguile/programs.c: Remove smobby bits, leaving marking, printing, and application for other parts of Guile. * libguile/debug.c (scm_procedure_source): * libguile/eval.c (scm_trampoline_0, scm_trampoline_1) (scm_trampoline_2): Add cases for tc7_program. * libguile/eval.i.c (CEVAL, SCM_APPLY): * libguile/evalext.c (scm_self_evaluating_p): * libguile/gc-card.c (scm_i_sweep_card, scm_i_tag_name): * libguile/gc-mark.c (1): * libguile/print.c (iprin1): * libguile/procs.c (scm_procedure_p, scm_thunk_p) * libguile/vm-i-system.c (make-closure): Adapt to new procedure representation. * libguile/procprop.c (scm_i_procedure_arity): Do the right thing for programs. * test-suite/tests/procprop.test ("procedure-arity"): Arity test now succeeds. * libguile/goops.c (scm_class_of): Programs now belong to the class <procedure>, not a smob class. * libguile/vm.h (struct vm, struct vm_cont): * libguile/vm-engine.c (vm_engine): * libguile/frames.h (SCM_FRAME_BYTE_CAST, struct vm_frame): * libguile/frames.c (scm_c_make_vm_frame): Fix usages of scm_byte_t, changing them to scm_t_uint8.
60 lines
1.8 KiB
Scheme
60 lines
1.8 KiB
Scheme
;;;; procprop.test --- Procedure properties -*- Scheme -*-
|
||
;;;; Ludovic Courtès <ludo@gnu.org>
|
||
;;;;
|
||
;;;; Copyright (C) 2009 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 as published by the Free Software Foundation; either
|
||
;;;; version 3 of the License, or (at your option) any later version.
|
||
;;;;
|
||
;;;; This library is distributed in the hope that it will be useful,
|
||
;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
;;;; Lesser General Public License for more details.
|
||
;;;;
|
||
;;;; You should have received a copy of the GNU Lesser General Public
|
||
;;;; License along with this library; if not, write to the Free Software
|
||
;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||
|
||
(define-module (test-procpop)
|
||
:use-module (test-suite lib))
|
||
|
||
|
||
(with-test-prefix "procedure-name"
|
||
(pass-if "simple subr"
|
||
(eq? 'display (procedure-name display)))
|
||
|
||
(pass-if "gsubr"
|
||
(eq? 'hashq-ref (procedure-name hashq-ref))))
|
||
|
||
|
||
(with-test-prefix "procedure-arity"
|
||
(pass-if "simple subr"
|
||
(equal? (procedure-property display 'arity)
|
||
'(1 1 #f)))
|
||
|
||
(pass-if "gsubr"
|
||
(equal? (procedure-property hashq-ref 'arity)
|
||
'(2 1 #f)))
|
||
|
||
(pass-if "port-closed?"
|
||
(equal? (procedure-property port-closed? 'arity)
|
||
'(1 0 #f)))
|
||
|
||
(pass-if "apply"
|
||
(equal? (procedure-property apply 'arity)
|
||
'(1 0 #t)))
|
||
|
||
(pass-if "cons*"
|
||
(equal? (procedure-property cons* 'arity)
|
||
'(1 0 #t)))
|
||
|
||
(pass-if "list"
|
||
(equal? (procedure-property list 'arity)
|
||
'(0 0 #t))))
|
||
|
||
|
||
;;; Local Variables:
|
||
;;; coding: latin-1
|
||
;;; End:
|