summaryrefslogtreecommitdiff
path: root/libguile/goops.c
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2012-05-23 12:38:56 +0200
committerAndy Wingo <wingo@pobox.com>2012-05-23 12:38:56 +0200
commit747747ee06ac64c224b91e8f64f810a1159c1675 (patch)
treedcbbde402e06dc2ae70d036c6d474c43c87b031e /libguile/goops.c
parent4df52c924dad7c7450dea61186b0820b5da844d1 (diff)
parent2de74cb56e3af44ce624638facfa061603d39c0d (diff)
downloadguile-747747ee06ac64c224b91e8f64f810a1159c1675.tar.gz
Merge remote-tracking branch 'origin/stable-2.0'
This commit removes code that was newly deprecated in stable-2.0. Conflicts: libguile/deprecated.c libguile/deprecated.h libguile/modules.c module/ice-9/boot-9.scm module/ice-9/deprecated.scm
Diffstat (limited to 'libguile/goops.c')
-rw-r--r--libguile/goops.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/libguile/goops.c b/libguile/goops.c
index 5e846eeae..355e5efa4 100644
--- a/libguile/goops.c
+++ b/libguile/goops.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998,1999,2000,2001,2002,2003,2004,2008,2009,2010,2011
+/* Copyright (C) 1998,1999,2000,2001,2002,2003,2004,2008,2009,2010,2011,2012
* Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
@@ -2750,13 +2750,21 @@ SCM_KEYWORD (k_getter, "getter");
SCM
scm_ensure_accessor (SCM name)
{
- SCM gf = scm_call_2 (SCM_TOP_LEVEL_LOOKUP_CLOSURE, name, SCM_BOOL_F);
+ SCM var, gf;
+
+ var = scm_module_variable (scm_current_module (), name);
+ if (SCM_VARIABLEP (var) && !SCM_UNBNDP (SCM_VARIABLE_REF (var)))
+ gf = SCM_VARIABLE_REF (var);
+ else
+ gf = SCM_BOOL_F;
+
if (!SCM_IS_A_P (gf, scm_class_accessor))
{
gf = scm_make (scm_list_3 (scm_class_generic, k_name, name));
gf = scm_make (scm_list_5 (scm_class_accessor,
k_name, name, k_setter, gf));
}
+
return gf;
}