summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2015-08-24 07:59:46 -0700
committerKaz Kylheku <kaz@kylheku.com>2015-08-24 07:59:46 -0700
commitdfeadd4e8a8b1f1acdde2937ad4a210a9350b59e (patch)
treeb9f496bc17a073e4adb3b20054c8bd553612410c
parent5deaba90dc0934e1b7b6ef026df77910c70560f1 (diff)
downloadtxr-dfeadd4e8a8b1f1acdde2937ad4a210a9350b59e.tar.gz
txr-dfeadd4e8a8b1f1acdde2937ad4a210a9350b59e.tar.bz2
txr-dfeadd4e8a8b1f1acdde2937ad4a210a9350b59e.zip
Compatibility <= 107 allows redefinition of builtins.
* eval.c (builtin_reject_test): Suppress the diagnostic against redefinition of built-in macros and operators if the compatibility is 107 or lower. The rejection appeared in 108. * txr.1: Document this compatibility behavior.
-rw-r--r--eval.c2
-rw-r--r--txr.17
2 files changed, 8 insertions, 1 deletions
diff --git a/eval.c b/eval.c
index 3800c6ca..c792e99e 100644
--- a/eval.c
+++ b/eval.c
@@ -1469,6 +1469,8 @@ static void builtin_reject_test(val op, val sym, val form)
if (!bindable(sym)) {
eval_error(form, lit("~s: cannot bind ~s, which is not a bindable symbol"),
is_operator, sym, nao);
+ } else if (opt_compat && opt_compat <= 107) {
+ /* empty */
} else if (builtin_kind) {
eval_error(form, lit("~s: cannot bind ~s, which is a built-in ~s"),
op, sym, builtin_kind, nao);
diff --git a/txr.1 b/txr.1
index 374e1f31..6cb58443 100644
--- a/txr.1
+++ b/txr.1
@@ -32342,7 +32342,12 @@ Up through \*(TX 107, by accident, there was a function called
as well as an operator by the same name. The function was renamed to
.codn flipargs .
Version 107 compatibility or earlier provides the
-function under the original name also.
+function under the original name also. Also, up until this version,
+\*(TX allowed functions and macros to be defined with the same names
+as built-in operators, and macros. Newer versions reject this as an error.
+Requesting compatibility to 107 or earlier suppresses the rejection,
+though without introducing any requirement that redefinition will work as
+expected.
.IP 105
Provides the behavior that the