mirror of
https://gitlab.com/embeddable-common-lisp/ecl.git
synced 2026-02-28 09:40:33 -08:00
Removed si::*inhibit-macro-special*.
This commit is contained in:
parent
2f2a05798d
commit
632312cfcb
7 changed files with 15 additions and 48 deletions
|
|
@ -57,11 +57,15 @@ si_setf_namep(cl_object arg)
|
|||
|
||||
@(defun si::fset (fun def &optional macro pprint)
|
||||
cl_type t;
|
||||
bool mflag;
|
||||
@
|
||||
mflag = !Null(macro);
|
||||
if (!SYMBOLP(fun)) {
|
||||
cl_object sym = setf_namep(fun);
|
||||
if (sym == OBJNULL)
|
||||
FEtype_error_symbol(fun);
|
||||
if (mflag)
|
||||
FEerror("Cannot define a macro with name (SETF ~S).", 1, fun);
|
||||
fun = CADR(fun);
|
||||
putprop(fun, sym, @'si::setf-symbol');
|
||||
remprop(fun, @'si::setf-lambda');
|
||||
|
|
@ -69,13 +73,9 @@ si_setf_namep(cl_object arg)
|
|||
remprop(fun, @'si::setf-update');
|
||||
fun = sym;
|
||||
}
|
||||
if (fun->symbol.isform) {
|
||||
if (fun->symbol.mflag) {
|
||||
if (symbol_value(@'si::*inhibit-macro-special*') != Cnil)
|
||||
fun->symbol.isform = FALSE;
|
||||
} else if (symbol_value(@'si::*inhibit-macro-special*') != Cnil)
|
||||
FEerror("~S, a special form, cannot be redefined.", 1, fun);
|
||||
}
|
||||
if (fun->symbol.isform && !mflag)
|
||||
FEerror("~S, a special form, cannot be redefined as a function.",
|
||||
1, fun);
|
||||
clear_compiler_properties(fun);
|
||||
if (fun->symbol.hpack->pack.locked && SYM_FUN(fun) != OBJNULL)
|
||||
funcall(3, @'warn', make_simple_string("~S is being redefined."), fun);
|
||||
|
|
@ -121,13 +121,6 @@ cl_fmakunbound(cl_object sym)
|
|||
cl_fmakunbound(sym1);
|
||||
@(return sym)
|
||||
}
|
||||
if (sym->symbol.isform) {
|
||||
if (sym->symbol.mflag) {
|
||||
if (symbol_value(@'si::*inhibit-macro-special*') != Cnil)
|
||||
sym->symbol.isform = FALSE;
|
||||
} else if (symbol_value(@'si::*inhibit-macro-special*') != Cnil)
|
||||
FEerror("~S, a special form, cannot be redefined.", 1, sym);
|
||||
}
|
||||
clear_compiler_properties(sym);
|
||||
#ifdef PDE
|
||||
remprop(sym, @'defun');
|
||||
|
|
@ -143,8 +136,7 @@ void
|
|||
clear_compiler_properties(cl_object sym)
|
||||
{
|
||||
si_unlink_symbol(sym);
|
||||
if (symbol_value(@'si::*inhibit-macro-special*') != Cnil)
|
||||
(void)funcall(2, @'si::clear-compiler-properties', sym);
|
||||
funcall(2, @'si::clear-compiler-properties', sym);
|
||||
}
|
||||
|
||||
cl_object
|
||||
|
|
@ -165,7 +157,6 @@ record_source_pathname(cl_object sym, cl_object def)
|
|||
void
|
||||
init_assignment(void)
|
||||
{
|
||||
SYM_VAL(@'si::*inhibit-macro-special*') = Cnil;
|
||||
#ifdef PDE
|
||||
SYM_VAL(@'si::*record-source-pathname-p*') = Cnil;
|
||||
#endif
|
||||
|
|
|
|||
32
src/c/cfun.d
32
src/c/cfun.d
|
|
@ -60,42 +60,22 @@ cl_make_cclosure_va(cl_objectfn self, cl_object env, cl_object block)
|
|||
void
|
||||
cl_def_c_function(cl_object sym, cl_object (*self)(), int narg)
|
||||
{
|
||||
if (!SYMBOLP(sym))
|
||||
FEtype_error_symbol(sym);
|
||||
if (sym->symbol.isform && sym->symbol.mflag)
|
||||
sym->symbol.isform = FALSE;
|
||||
clear_compiler_properties(sym);
|
||||
SYM_FUN(sym) = cl_make_cfun(self, sym, symbol_value(@'si::*cblock*'), narg);
|
||||
sym->symbol.mflag = FALSE;
|
||||
si_fset(2, sym,
|
||||
cl_make_cfun(self, sym, symbol_value(@'si::*cblock*'), narg));
|
||||
}
|
||||
|
||||
void
|
||||
cl_def_c_macro_va(cl_object sym, cl_objectfn self)
|
||||
{
|
||||
cl_object cf;
|
||||
|
||||
if (!SYMBOLP(sym))
|
||||
FEtype_error_symbol(sym);
|
||||
if (sym->symbol.isform && sym->symbol.mflag)
|
||||
sym->symbol.isform = FALSE;
|
||||
clear_compiler_properties(sym);
|
||||
#ifdef PDE
|
||||
record_source_pathname(sym, @'defmacro');
|
||||
#endif
|
||||
SYM_FUN(sym) = cl_make_cfun_va(self, sym, symbol_value(@'si::*cblock*'));
|
||||
sym->symbol.mflag = TRUE;
|
||||
si_fset(3, sym, cl_make_cfun_va(self, sym, symbol_value(@'si::*cblock*')),
|
||||
Ct);
|
||||
}
|
||||
|
||||
void
|
||||
cl_def_c_function_va(cl_object sym, cl_objectfn self)
|
||||
{
|
||||
if (!SYMBOLP(sym))
|
||||
FEtype_error_symbol(sym);
|
||||
if (sym->symbol.isform && sym->symbol.mflag)
|
||||
sym->symbol.isform = FALSE;
|
||||
clear_compiler_properties(sym);
|
||||
SYM_FUN(sym) = cl_make_cfun_va(self, sym, symbol_value(@'si::*cblock*'));
|
||||
sym->symbol.mflag = FALSE;
|
||||
si_fset(2, sym,
|
||||
cl_make_cfun_va(self, sym, symbol_value(@'si::*cblock*')));
|
||||
}
|
||||
|
||||
cl_object
|
||||
|
|
|
|||
|
|
@ -132,5 +132,4 @@ void
|
|||
init_macros(void)
|
||||
{
|
||||
SYM_VAL(@'*macroexpand-hook*') = @'funcall';
|
||||
SYM_VAL(@'si::*inhibit-macro-special*') = Cnil;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -920,7 +920,6 @@ cl_symbols[] = {
|
|||
{"SI::*IGNORE-ERRORS*", SI_SPECIAL, NULL, -1},
|
||||
{"SI::*IGNORE-EOF-ON-TERMINAL-IO*", SI_SPECIAL, NULL, -1},
|
||||
{"SI::*INDENT-FORMATTED-OUTPUT*", SI_SPECIAL, NULL, -1},
|
||||
{"SI::*INHIBIT-MACRO-SPECIAL*", SI_SPECIAL, NULL, -1},
|
||||
{"SI::*INIT-FUNCTION-PREFIX*", SI_SPECIAL, NULL, -1},
|
||||
{"SI::*INTERRUPT-ENABLE*", SI_SPECIAL, NULL, 1},
|
||||
{"SI::*KEEP-DEFINITIONS*", SI_SPECIAL, NULL, -1},
|
||||
|
|
|
|||
|
|
@ -852,7 +852,7 @@ type_of(#0)==t_bitvector"))
|
|||
(SI::STRING-TO-OBJECT (T) T)
|
||||
(si::STANDARD-READTABLE (T) T)
|
||||
(SYMBOL-FUNCTION (T) T NIL NIL
|
||||
:inline-always ((t) t nil t "cl_symbol_function(#0)"))
|
||||
:inline-always ((t) t nil t "symbol_function(#0)"))
|
||||
(FBOUNDP (symbol) T nil t)
|
||||
(SYMBOL-VALUE (symbol) T)
|
||||
(BOUNDP (symbol) T nil t
|
||||
|
|
|
|||
|
|
@ -11,7 +11,6 @@
|
|||
(si::select-package "SYSTEM")
|
||||
|
||||
(eval-when (eval compile) (defun sys:clear-compiler-properties (symbol)))
|
||||
(eval-when (eval compile) (setq sys:*inhibit-macro-special* nil))
|
||||
|
||||
(defmacro defun (name vl &body body &aux doc-string)
|
||||
"Syntax: (defun name lambda-list {decl | doc}* {form}*)
|
||||
|
|
|
|||
|
|
@ -13,7 +13,6 @@
|
|||
(in-package "SYSTEM")
|
||||
|
||||
(eval-when (eval compile) (defun sys::clear-compiler-properties (symbol)))
|
||||
(eval-when (eval compile) (setq sys:*inhibit-macro-special* nil))
|
||||
|
||||
;;; DEFSETF macro.
|
||||
(defmacro defsetf (access-fn &rest rest &aux doc)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue