[CLJ-1134] star-directive in clojure.pprint/cl-format with an at-prefix ("~n@*") do not obey its specifications Created: 18/Dec/12 Updated: 26/Dec/12 |
|
| Status: | Open |
| Project: | Clojure |
| Component/s: | None |
| Affects Version/s: | Release 1.4, Release 1.5 |
| Fix Version/s: | None |
| Type: | Defect | Priority: | Minor |
| Reporter: | Jean Niklas L'orange | Assignee: | Unassigned |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | bug, pprint | ||
| Attachments: |
|
| Patch: | Code and Test |
| Description |
|
The star-directive in clojure.pprint/cl-format with an at-prefix (~n@*) does not obey its specifications according to Common Lisp the Language, 2nd Edition. There are two bugs within ~n@* as of right now:
What (small set of) steps will reproduce the problem?Inside a clean Clojure repl, perform these steps: user=> (require '[clojure.pprint :refer [cl-format]]) nil user=> (cl-format nil "~D ~3@*~D" 0 1 2 3) "0 0" ;; Expected: "0 3" user=> (cl-format nil "~D~D~D~D ~@*~D" 0 1 2 3) "0123 1" ;; Expected: "0123 0" What is the expected output? What do you see instead?The expected output is "0 3" and "0123 0", but is "0 0" and "0123 1" as shown above. What version are you using?Tested on both 1.4.0 and 1.5.0-beta2, both have the defect described. Please provide any additional information below.The format strings which reproduces the problem has been compared with the format function from the Common Lisp implementations SBCL, CLisp and Clozure. All of them print the expected output. |
| Comments |
| Comment by Jean Niklas L'orange [ 18/Dec/12 9:28 PM ] |
|
Patch attached. It may be easier to read the changes the patch does from within JIRA instead from the commit message, so I've added it here: This solves two issues as specified by #CLJ-1134. Issue #1 is solved by doing a Issue #2 is handled by changing the default n-parameter to * depending on In addition, new tests have been appended to test_cl_format.clj to ensure the |