"Return the name of the procedure @var{proc}")
#define FUNC_NAME s_scm_procedure_name
{
- SCM name;
-
SCM_VALIDATE_PROC (1, proc);
while (SCM_STRUCTP (proc) && SCM_STRUCT_APPLICABLE_P (proc))
proc = SCM_STRUCT_PROCEDURE (proc);
- name = scm_procedure_property (proc, scm_sym_name);
- if (scm_is_false (name) && SCM_PROGRAM_P (proc))
- name = scm_program_name (proc);
- return name;
+ return scm_procedure_property (proc, scm_sym_name);
}
#undef FUNC_NAME
}
#undef FUNC_NAME
-SCM_DEFINE (scm_program_name, "program-name", 1, 0, 0,
- (SCM program),
- "")
-#define FUNC_NAME s_scm_program_name
-{
- SCM_VALIDATE_PROGRAM (1, program);
- return scm_assq_ref (scm_i_program_properties (program), scm_sym_name);
-}
-#undef FUNC_NAME
-
SCM_DEFINE (scm_program_source, "program-source", 2, 0, 0,
(SCM program, SCM ip),
"")
SCM_API SCM scm_program_sources (SCM program);
SCM_API SCM scm_program_source (SCM program, SCM ip);
SCM_API SCM scm_program_arities (SCM program);
-SCM_API SCM scm_program_name (SCM program);
SCM_API SCM scm_program_objects (SCM program);
SCM_API SCM scm_program_module (SCM program);
SCM_API SCM scm_program_num_free_variables (SCM program);
-;;;; Copyright (C) 2000,2001, 2002, 2003, 2006, 2009 Free Software Foundation, Inc.
+;;;; Copyright (C) 2000,2001, 2002, 2003, 2006, 2009, 2010 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
(define-module (ice-9 documentation)
:use-module (ice-9 rdelim)
- :use-module ((system vm program) :select (program? program-documentation))
:export (file-commentary
documentation-files search-documentation-files
object-documentation)
(cond ((null? files) documentation-files)
(else files))))
-;; helper until the procedure documentation property is cleaned up
-(define (proc-doc proc)
- (or (procedure-documentation proc)
- (procedure-property proc 'documentation)))
-
(define (object-documentation object)
"Return the docstring for OBJECT.
OBJECT can be a procedure, macro or any object that has its
`documentation' property set."
(or (and (procedure? object)
- (proc-doc object))
+ (procedure-documentation object))
(object-property object 'documentation)
- (and (program? object)
- (program-documentation object))
(and (macro? object)
(object-documentation (macro-transformer object)))
(and (procedure? object)
(length x))
0))
(cond ((program? proc)
- (values (program-name proc)
+ (values (procedure-name proc)
(map (lambda (a)
(list (arity:nreq a) (arity:nopt a) (arity:rest? a)
(map car (arity:kw a))
source:addr source:line source:column source:file
program-sources program-source
- program-documentation program-name
program-bindings program-bindings-by-index program-bindings-for-ip
program-arities program-arity arity:start arity:end
(define (source:column source)
(cdddr source))
-(define (program-documentation prog)
- (procedure-property prog 'documentation))
-
(define (collapse-locals locs)
(let lp ((ret '()) (locs locs))
(if (null? locs)
(define (write-program prog port)
(format port "#<procedure ~a~a>"
- (or (program-name prog)
+ (or (procedure-name prog)
(and=> (program-source prog 0)
(lambda (s)
(format #f "~a at ~a:~a:~a"