Allow to use keywords in the compiler
[jscl.git] / ecmalisp.lisp
index 9a1080d..ac6f02b 100644 (file)
   ;; with the symbols built during bootstrap.
   (defun %intern-symbol (symbol)
     (let* ((package
-           (if (in "package" symbol)
-               (find-package-or-fail (oget symbol "package"))
-               *common-lisp-package*))
-           (symbols (%package-symbols *common-lisp-package*)))
+            (if (in "package" symbol)
+                (find-package-or-fail (oget symbol "package"))
+                *common-lisp-package*))
+           (symbols (%package-symbols package)))
       (oset symbol "package" package)
+      (when (eq package *keyword-package*)
+        (oset symbol "value" symbol))
       (oset symbols (symbol-name symbol) symbol)))
 
   (defun find-symbol (name &optional (package *package*))
     (let* ((package (find-package-or-fail package))
            (symbols (%package-symbols package)))
       (if (in name symbols)
-          (values (oget symbols name) :interned)
+          (values (oget symbols name) t)
           (dolist (used (package-use-list package) (values nil nil))
             (let ((exports (%package-external-symbols used)))
               (when (in name exports)
                  (let ((package (symbol-package sexp)))
                    (if (eq package (find-package "KEYWORD"))
                        (concat "{name: \"" (escape-string (symbol-name sexp))
-                               "\", package: '" (package-name package) "'}")
+                               "\", 'package': '" (package-name package) "'}")
                        (concat "{name: \"" (escape-string (symbol-name sexp)) "\"}")))
                  #+ecmalisp
                  (let ((package (symbol-package sexp)))