0.9.9.27:
[sbcl.git] / src / compiler / globaldb.lisp
index b72a672..6a8fa7b 100644 (file)
   #+sb-xc (/nohexstr class)
   (prog1
       (flet ((lookup (class)
-              (or (gethash class *info-classes*)
-                  (error "~S is not a defined info class." class))))
-       (if (symbolp class)
-           (or (get class 'class-info-or-lose-cache)
-               (setf (get class 'class-info-or-lose-cache)
-                     (lookup class)))
-           (lookup class)))
+               (or (gethash class *info-classes*)
+                   (error "~S is not a defined info class." class))))
+        (if (symbolp class)
+            (or (get class 'class-info-or-lose-cache)
+                (setf (get class 'class-info-or-lose-cache)
+                      (lookup class)))
+            (lookup class)))
     #+sb-xc (/noshow0 "returning from CLASS-INFO-OR-LOSE")))
 (declaim (ftype (function (keyword keyword) type-info) type-info-or-lose))
 (defun type-info-or-lose (class type)
   :type-spec list
   :default ())
 
+;;; Used to record the source location of definitions.
+(define-info-class :source-location)
+
+(define-info-type
+  :class :source-location
+  :type :variable
+  :type-spec t
+  :default nil)
+
+(define-info-type
+  :class :source-location
+  :type :constant
+  :type-spec t
+  :default nil)
+
+(define-info-type
+  :class :source-location
+  :type :typed-structure
+  :type-spec t
+  :default nil)
+
+(define-info-type
+  :class :source-location
+  :type :symbol-macro
+  :type-spec t
+  :default nil)
+
 #!-sb-fluid (declaim (freeze-type info-env))
 \f
 ;;; Now that we have finished initializing *INFO-CLASSES* and