From: Vladimir Sedach Date: Sun, 7 Dec 2008 20:50:36 +0000 (-0700) Subject: Made operator precedence handling not throw away symbol package information. X-Git-Url: http://git.hcoop.net/clinton/parenscript.git/commitdiff_plain/f3847d1cb9baf8afd9a854f2230f70fb57dc8a9f Made operator precedence handling not throw away symbol package information. This fixed a bug where for example (ps (#:new)) => ";" instead of "new();". --- diff --git a/src/printer.lisp b/src/printer.lisp index bb9691c..0aef431 100644 --- a/src/printer.lisp +++ b/src/printer.lisp @@ -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) diff --git a/t/package-system-tests.lisp b/t/package-system-tests.lisp index 1b752e4..d42858a 100644 --- a/t/package-system-tests.lisp +++ b/t/package-system-tests.lisp @@ -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;") -