summaryrefslogtreecommitdiffstats
path: root/eval.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2015-11-30 06:11:09 -0800
committerKaz Kylheku <kaz@kylheku.com>2015-11-30 06:11:09 -0800
commitd2e883cf32ea9fa82f33768104bc5993bfc60a04 (patch)
tree66a11ab2a82ffa84b1047c5d2485f53b50acbb4a /eval.c
parent72955500f8b3a5bc52585d3f24aa3d71bdca3b19 (diff)
downloadtxr-d2e883cf32ea9fa82f33768104bc5993bfc60a04.tar.gz
txr-d2e883cf32ea9fa82f33768104bc5993bfc60a04.tar.bz2
txr-d2e883cf32ea9fa82f33768104bc5993bfc60a04.zip
func-get-name calculates a name for methods.
* eval.c (func_get_name): Use try to use new method_name function, if unable to get name from the lexical or global environment for functions. * struct.c (meth_s): New symbol variable. (struct_init): Initialize meth_s variable. (method_name): New function. * struct.h (method_name): Declared. * txr.1: Re-documented func-get-name.
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/eval.c b/eval.c
index a1f9a77c..96226331 100644
--- a/eval.c
+++ b/eval.c
@@ -51,6 +51,7 @@
#include "txr.h"
#include "combi.h"
#include "lisplib.h"
+#include "struct.h"
#include "cadr.h"
#include "eval.h"
@@ -345,7 +346,9 @@ val func_get_name(val fun, val env)
return func_get_name(fun, env->e.up_env);
}
} else {
- val name = hash_revget(top_fb, fun, eq_f, cdr_f);
+ uses_or2;
+ val name = or2(hash_revget(top_fb, fun, eq_f, cdr_f),
+ method_name(fun));
if (name)
return name;