Made operator precedence handling not throw away symbol package information.
authorVladimir Sedach <vsedach@gmail.com>
Sun, 7 Dec 2008 20:50:36 +0000 (13:50 -0700)
committerVladimir Sedach <vsedach@gmail.com>
Sun, 7 Dec 2008 20:50:36 +0000 (13:50 -0700)
This fixed a bug where for example (ps (#:new)) => ";" instead of "new();".

src/printer.lisp
t/package-system-tests.lisp

index bb9691c..0aef431 100644 (file)
@@ -101,7 +101,7 @@ vice-versa.")
       0))
 
 (eval-when (:compile-toplevel :load-toplevel :execute)
-  (defparameter *op-precedence-hash* (make-hash-table :test #'equal))
+  (defparameter *op-precedence-hash* (make-hash-table :test 'eq))
 
   ;;; generate the operator precedences from *OP-PRECEDENCES*
   (let ((precedence 1))
@@ -122,15 +122,11 @@ vice-versa.")
                    (= *= /= %= += -= <<= >>= >>>= \&\= ^= \|= js-assign)
                    (comma)))
       (dolist (op ops)
-        (let ((op-name (symbol-name op)))
-          (setf (gethash op-name *op-precedence-hash*) precedence)))
+        (setf (gethash op *op-precedence-hash*) precedence))
       (incf precedence)))
 
   (defun op-precedence (op)
-    (gethash (if (symbolp op)
-                 (symbol-name op)
-                 op)
-             *op-precedence-hash*)))
+    (gethash op *op-precedence-hash*)))
 
 (defprinter ps-quote (val)
   (if (null val)
index 1b752e4..d42858a 100644 (file)
@@ -5,6 +5,10 @@
 
 (in-suite package-system-tests)
 
+(test-ps-js operator-packages1
+  (#:new)
+  "new()")
+
 (defpackage "MY-LIBRARY"
   (:use #:parenscript))
 (setf (ps-package-prefix :my-library) "my_library_")
@@ -55,4 +59,3 @@
             { bar : 1, 
               prefix_notAKeyword : prefix_something };
         return !prefix_foo && prefix_foo[prefix_bar] + prefix_someOtherVar;")
-