From 86e2d24d17e1960bc736dd8c5c03d486587177af Mon Sep 17 00:00:00 2001 From: ram <ram> Date: Fri, 9 Feb 1990 15:47:28 +0000 Subject: [PATCH] Added binding of C:*COMPILE-TIME-DEFINE-MACROS* to NIL around compilation of system macros (at end of compilation.) This prevents infinite recursions due to trying to interpret circularly defined macros. --- tools/worldcom.lisp | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/tools/worldcom.lisp b/tools/worldcom.lisp index 554912555..68a95d915 100644 --- a/tools/worldcom.lisp +++ b/tools/worldcom.lisp @@ -108,12 +108,20 @@ (load "nicode:netnamemsgdefs.lisp") (comf "nicode:netnameuser"))) -(comf "ncode:defstruct") -(comf "ncode:defmacro") -(comf "ncode:macros") -(comf "ncode:defrecord") -(comf "ncode:constants") - -(comf "c:globaldb") +;;; Compile basic macros that we assume are already in the compilation +;;; environment. We inhibit compile-time definition to prevent these functions +;;; from becoming interpreted. In some cases, this is necessary for +;;; compilation to work at all, since the expander functions are lazily +;;; converted: we could go into an infinite recursion trying to convert the +;;; definition of a macro which uses itself. +;;; +(let ((c:compile-time-define-macros* nil)) + (comf "ncode:defstruct") + (comf "ncode:defmacro") + (comf "ncode:macros") + (comf "ncode:defrecord") + (comf "ncode:constants") + + (comf "c:globaldb")) ); with-compiler-log-file -- GitLab