Added some symbol mangling fixes.
authorTravis Cross <tc@traviscross.com>
Sat, 5 Apr 2008 08:15:11 +0000 (08:15 +0000)
committerTravis Cross <tc@traviscross.com>
Sat, 5 Apr 2008 08:15:11 +0000 (08:15 +0000)
src/namespace.lisp
src/printer.lisp
src/special-forms.lisp

index 419fbcc..06a527a 100644 (file)
@@ -3,6 +3,11 @@
 
 (in-package :parenscript)
 
+(defun ensure-ps-symbol (symbol)
+  (if (eq (symbol-package symbol) #.(find-package :parenscript))
+      symbol
+      (intern (symbol-name symbol) #.(find-package :parenscript))))
+
 ;;; Symbol obfuscation
 (defvar *obfuscation-table* (make-hash-table))
 
index dacaa84..813b3fe 100644 (file)
@@ -161,7 +161,7 @@ vice-versa.")
 
 ;;; arithmetic operators
 (defun ps-convert-op-name (op)
-  (case op
+  (case (ensure-ps-symbol op)
     (and '\&\&)
     (or '\|\|)
     (not '!)
@@ -348,7 +348,7 @@ vice-versa.")
     (psw "switch (") (ps-print test) (psw ") {")
     (loop for (val . statements) in clauses
           do (progn (newline-and-indent)
-                    (if (eql val 'default)
+                    (if (eq val 'default)
                         (progn (psw "default: ")
                                (print-body-statements statements))
                         (progn (psw "case ")
index 731f985..155ce51 100644 (file)
   (let ((clauses (mapcar (lambda (clause)
                              (let ((val (car clause))
                                    (body (cdr clause)))
-                               (cons (if (eql val 'default)
+                               (cons (if (and (symbolp val)
+                                              (eq (ensure-ps-symbol val) 'default))
                                          'default
                                          (compile-parenscript-form val :expecting :expression))
                                      (mapcar (lambda (statement) (compile-parenscript-form statement :expecting :statement))
@@ -346,7 +347,7 @@ lambda-list::=
   [&aux {var | (var [init-form])}*])"
   (if (symbolp name)
       `(defun-function ,name ,lambda-list ,@body)
-      (progn (assert (and (= (length name) 2) (eql 'setf (car name))) ()
+      (progn (assert (and (= (length name) 2) (eq 'setf (ensure-ps-symbol (car name)))) ()
                      "(defun ~s ~s ...) needs to have a symbol or (setf symbol) for a name." name lambda-list)
              `(defun-setf ,name ,lambda-list ,@body))))