[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] GNU Guile branch, master, updated. release_1-9-1-50-gdab
From: |
Ludovic Courtès |
Subject: |
[Guile-commits] GNU Guile branch, master, updated. release_1-9-1-50-gdab1ed3 |
Date: |
Mon, 10 Aug 2009 17:25:18 +0000 |
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU Guile".
http://git.savannah.gnu.org/cgit/guile.git/commit/?id=dab1ed3767c4fb8840401624e6c5a315e5cb5692
The branch, master has been updated
via dab1ed3767c4fb8840401624e6c5a315e5cb5692 (commit)
from 32be5735cd89931048f12283f3977c72cd292f77 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit dab1ed3767c4fb8840401624e6c5a315e5cb5692
Author: Ludovic Courtès <address@hidden>
Date: Mon Aug 10 19:24:34 2009 +0200
Change `defined?' to accept a module as its second argument.
Reported by Daniel Kraft <address@hidden>.
* doc/ref/api-binding.texi (Binding Reflection): Update documentation of
`defined?'.
* libguile/evalext.c (scm_defined_p): Expect a module as the second
argument, not a lexical environment.
-----------------------------------------------------------------------
Summary of changes:
doc/ref/api-binding.texi | 16 +++++++++++-----
libguile/evalext.c | 46 ++++++++++------------------------------------
2 files changed, 21 insertions(+), 41 deletions(-)
diff --git a/doc/ref/api-binding.texi b/doc/ref/api-binding.texi
index b42f556..e53c480 100644
--- a/doc/ref/api-binding.texi
+++ b/doc/ref/api-binding.texi
@@ -1,6 +1,6 @@
@c -*-texinfo-*-
@c This is part of the GNU Guile Reference Manual.
address@hidden Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004
address@hidden Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2009
@c Free Software Foundation, Inc.
@c See the file guile.texi for copying conditions.
@@ -271,10 +271,16 @@ with duplicate bindings.
Guile provides a procedure for checking whether a symbol is bound in the
top level environment.
address@hidden NJFIXME explain [env]
address@hidden {Scheme Procedure} defined? sym [env]
address@hidden {C Function} scm_defined_p (sym, env)
-Return @code{#t} if @var{sym} is defined in the lexical environment @var{env}.
When @var{env} is not specified, look in the top-level environment as defined
by the current module.
address@hidden {Scheme Procedure} defined? sym [module]
address@hidden {C Function} scm_defined_p (sym, module)
+Return @code{#t} if @var{sym} is defined in the module @var{module} or
+the current module when @var{module} is not specified; otherwise return
address@hidden
+
+Up to Guile 1.8, the second optional argument had to be @dfn{lexical
+environment} as returned by @code{the-environment}, for example. The
+behavior of this function remains unchanged when the second argument is
+omitted.
@end deffn
diff --git a/libguile/evalext.c b/libguile/evalext.c
index 56f74e2..19d8f2e 100644
--- a/libguile/evalext.c
+++ b/libguile/evalext.c
@@ -31,49 +31,23 @@
#include "libguile/evalext.h"
SCM_DEFINE (scm_defined_p, "defined?", 1, 1, 0,
- (SCM sym, SCM env),
- "Return @code{#t} if @var{sym} is defined in the lexical "
- "environment @var{env}. When @var{env} is not specified, "
- "look in the top-level environment as defined by the "
- "current module.")
+ (SCM sym, SCM module),
+ "Return @code{#t} if @var{sym} is defined in the module "
+ "@var{module} or the current module when @var{module} is not"
+ "specified.")
#define FUNC_NAME s_scm_defined_p
{
SCM var;
SCM_VALIDATE_SYMBOL (1, sym);
- if (SCM_UNBNDP (env))
- var = scm_sym2var (sym, scm_current_module_lookup_closure (),
- SCM_BOOL_F);
+ if (SCM_UNBNDP (module))
+ module = scm_current_module ();
else
- {
- SCM frames = env;
- register SCM b;
- for (; SCM_NIMP (frames); frames = SCM_CDR (frames))
- {
- SCM_ASSERT (scm_is_pair (frames), env, SCM_ARG2, FUNC_NAME);
- b = SCM_CAR (frames);
- if (scm_is_true (scm_procedure_p (b)))
- break;
- SCM_ASSERT (scm_is_pair (b), env, SCM_ARG2, FUNC_NAME);
- for (b = SCM_CAR (b); SCM_NIMP (b); b = SCM_CDR (b))
- {
- if (!scm_is_pair (b))
- {
- if (scm_is_eq (b, sym))
- return SCM_BOOL_T;
- else
- break;
- }
- if (scm_is_eq (SCM_CAR (b), sym))
- return SCM_BOOL_T;
- }
- }
- var = scm_sym2var (sym,
- SCM_NIMP (frames) ? SCM_CAR (frames) : SCM_BOOL_F,
- SCM_BOOL_F);
- }
-
+ SCM_VALIDATE_MODULE (2, module);
+
+ var = scm_module_variable (module, sym);
+
return (scm_is_false (var) || SCM_UNBNDP (SCM_VARIABLE_REF (var))
? SCM_BOOL_F
: SCM_BOOL_T);
hooks/post-receive
--
GNU Guile
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Guile-commits] GNU Guile branch, master, updated. release_1-9-1-50-gdab1ed3,
Ludovic Courtès <=