mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-20 11:40:18 +02:00
(scm_lookupcar1): Report an "Undefined variable" insetad of an
"Unbound" one for variables that are found but still contain SCM_UNDEFINED.
This commit is contained in:
parent
892065da6c
commit
2d0c133f92
1 changed files with 19 additions and 4 deletions
|
@ -2680,6 +2680,10 @@ scm_ilookup (SCM iloc, SCM env)
|
||||||
SCM_SYMBOL (scm_unbound_variable_key, "unbound-variable");
|
SCM_SYMBOL (scm_unbound_variable_key, "unbound-variable");
|
||||||
|
|
||||||
static void error_unbound_variable (SCM symbol) SCM_NORETURN;
|
static void error_unbound_variable (SCM symbol) SCM_NORETURN;
|
||||||
|
static void error_defined_variable (SCM symbol) SCM_NORETURN;
|
||||||
|
|
||||||
|
/* Call this for variables that are unfound.
|
||||||
|
*/
|
||||||
static void
|
static void
|
||||||
error_unbound_variable (SCM symbol)
|
error_unbound_variable (SCM symbol)
|
||||||
{
|
{
|
||||||
|
@ -2688,6 +2692,20 @@ error_unbound_variable (SCM symbol)
|
||||||
scm_list_1 (symbol), SCM_BOOL_F);
|
scm_list_1 (symbol), SCM_BOOL_F);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Call this for variables that are found but contain SCM_UNDEFINED.
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
error_defined_variable (SCM symbol)
|
||||||
|
{
|
||||||
|
/* We use the 'unbound-variable' key here as well, since it
|
||||||
|
basically is the same kind of error, with a slight variation in
|
||||||
|
the displayed message.
|
||||||
|
*/
|
||||||
|
scm_error (scm_unbound_variable_key, NULL,
|
||||||
|
"Undefined variable: ~S",
|
||||||
|
scm_list_1 (symbol), SCM_BOOL_F);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* The Lookup Car Race
|
/* The Lookup Car Race
|
||||||
- by Eva Luator
|
- by Eva Luator
|
||||||
|
@ -2791,10 +2809,7 @@ scm_lookupcar1 (SCM vloc, SCM genv, int check)
|
||||||
if (scm_is_eq (SCM_CAR (fl), var))
|
if (scm_is_eq (SCM_CAR (fl), var))
|
||||||
{
|
{
|
||||||
if (SCM_UNBNDP (SCM_CAR (*al)))
|
if (SCM_UNBNDP (SCM_CAR (*al)))
|
||||||
{
|
error_defined_variable (var);
|
||||||
env = SCM_EOL;
|
|
||||||
goto errout;
|
|
||||||
}
|
|
||||||
if (!scm_is_eq (SCM_CAR (vloc), var))
|
if (!scm_is_eq (SCM_CAR (vloc), var))
|
||||||
goto race;
|
goto race;
|
||||||
SCM_SETCAR (vloc, iloc);
|
SCM_SETCAR (vloc, iloc);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue