Changeset 293


Ignore:
Timestamp:
Jan 13, 2004, 5:13:45 PM (21 years ago)
Author:
Gary Byers
Message:

Signal a PROGRAM-ERROR or two. Better checking of SYMBOL-MACROs in
AUGMENT-ENVIRONMENT.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ccl/compiler/nx-basic.lisp

    r6 r293  
    294294            (when (non-nil-symbol-p spec)
    295295              (if (assq spec symbol-macros)
    296                 (error "Special declaration cannot be applied to symbol-macro ~S" spec))
     296                (signal-program-error "Special declaration cannot be applied to symbol-macro ~S" spec))
    297297              (push (list* spec 'special t) vdecls)))))
    298298      (dolist (decl decls)
     
    364364  (check-environment-args variable symbol-macro function macro)
    365365  (let* ((vars (mapcar #'cons-var variable))
    366          (symbol-macros (mapcar #'(lambda (s) (let ((v (cons-var (car s))))
    367                                                 (setf (var-expansion v) (cons :symbol-macro (cadr s)))
    368                                                 v))
    369                                 symbol-macro))
     366         (symbol-macros (mapcar #'(lambda (s)
     367                                    (let* ((sym (car s)))
     368                                      (unless (and (symbolp sym)
     369                                                   (not (constantp sym env))
     370                                                   (not (eq (variable-information sym env) :special)))
     371                                        (signal-program-error "~S can't by bound as a SYMBOL-MACRO" sym))
     372                                      (let ((v (cons-var (car s))))
     373                                        (setf (var-expansion v) (cons :symbol-macro (cadr s)))
     374                                        v)))
     375                                symbol-macro))
    370376         (macros (mapcar #'(lambda (m) (list* (car m) 'macro (cadr m))) macro))
    371377         (functions (mapcar #'(lambda (f) (list* f 'function nil)) function))
Note: See TracChangeset for help on using the changeset viewer.