| Anonymous | Login | Signup for a new account | 2013-06-19 12:35 CEST | ![]() |
| Main | My View | View Issues | Change Log | Roadmap |
| View Issue Details [ Jump to Notes ] | [ Issue History ] [ Print ] | |||||||||||
| ID | Project | Category | View Status | Date Submitted | Last Update | |||||||
| 0005442 | OCaml | Camlp4 | public | 2011-12-23 14:59 | 2012-06-19 13:08 | |||||||
| Reporter | doligez | |||||||||||
| Assigned To | dim | |||||||||||
| Priority | normal | Severity | minor | Reproducibility | always | |||||||
| Status | resolved | Resolution | fixed | |||||||||
| Platform | all | OS | OS Version | |||||||||
| Product Version | 3.12.1 | |||||||||||
| Target Version | Fixed in Version | 3.12.1+dev | ||||||||||
| Summary | 0005442: camlp4: quotation issue with strings | |||||||||||
| Description | This was reported on 2011-07-11 by Petter Urkedal on caml-list under the subject "Quotation issue with camlp4 printer". The attached program prints out let x = """;; when compiled with ocamlc and camlp4 version 3.12.0. As you can see, the string literal lacks an escape character. I haven't tried version 3.12.1, but I didn't find anything about it in the release notes. | |||||||||||
| Steps To Reproduce | ocamlc.opt -c -I +camlp4 -pp camlp4orf -o quotation_bug.cmo quotation_bug.ml ocamlc.opt dynlink.cma -I +camlp4 camlp4lib.cma quotation_bug.cmo -o quotation_bug.byte ./quotation_bug.byte | |||||||||||
| Additional Information | A tentative fix was done in commit 11119, but it breaks findlib (among others) because it double-escapes everything in string constants when preprocessing normal code with "camlp4 pa_o.cmo pr_o.cmo". It looks like the problem is in the parsing of quotations, not in the printing code. | |||||||||||
| Tags | No tags attached. | |||||||||||
| Attached Files | ||||||||||||
Relationships |
|||||||||||
|
|||||||||||
Notes |
|
|
(0006520) dim (developer) 2011-12-23 17:33 |
Fixed. Commits 11947 and 11948. The problem was due to the fact that strings are escaped in the camlp4 ast, so they must be escaped again when the ast is meta-expansed, but it was not done. |
|
(0006560) doligez (manager) 2011-12-30 13:57 |
There is a problem with the fix: it breaks type-conv 2.3.0. To reproduce: Install type-conv version 2.3.0 (I haven't tried other version) from Jane Street web site. ---------- foo.ml module Foo = struct end;; module Bar = struct end;; ---------- camlp4o /usr/local/ocaml/3.12/lib/ocaml/site-lib/type-conv/pa_type_conv.cma foo.ml With text output, you get: Failure: "Cannot print \"\\\\$:i\" this string contains more than one token" With AST output, you get a compiler error because both identifiers Foo and Bar got replaced by \$:i I've narrowed it down to your commit. If I replace "String.escaped" with "safe_string_escaped" at line 474 of boot/Camlp4Ast.ml, it seems to fix the problem, but I'll let you decide what to do because I don't really understand camlp4. |
|
(0006573) dim (developer) 2011-12-30 21:02 |
It is indeed safe_string_escaped that must be used instead of String.escaped. Fixed by commits 11983 and 11984. |
Issue History |
|||
| Date Modified | Username | Field | Change |
| 2011-12-23 14:59 | doligez | New Issue | |
| 2011-12-23 14:59 | doligez | Status | new => assigned |
| 2011-12-23 14:59 | doligez | Assigned To | => ertai |
| 2011-12-23 14:59 | doligez | File Added: quotation_bug.ml | |
| 2011-12-23 15:29 | doligez | Assigned To | ertai => |
| 2011-12-23 15:30 | doligez | Assigned To | => doligez |
| 2011-12-23 15:30 | doligez | Status | assigned => acknowledged |
| 2011-12-23 15:30 | doligez | Assigned To | doligez => |
| 2011-12-23 17:33 | dim | Note Added: 0006520 | |
| 2011-12-23 17:33 | dim | Assigned To | => dim |
| 2011-12-23 17:33 | dim | Status | acknowledged => resolved |
| 2011-12-23 17:33 | dim | Resolution | open => fixed |
| 2011-12-23 17:33 | dim | Fixed in Version | => 3.12.1+dev |
| 2011-12-30 13:57 | doligez | Note Added: 0006560 | |
| 2011-12-30 13:57 | doligez | Status | resolved => feedback |
| 2011-12-30 13:57 | doligez | Resolution | fixed => reopened |
| 2011-12-30 13:58 | doligez | Status | feedback => acknowledged |
| 2011-12-30 21:02 | dim | Note Added: 0006573 | |
| 2011-12-30 21:02 | dim | Status | acknowledged => resolved |
| 2011-12-30 21:02 | dim | Resolution | reopened => fixed |
| 2012-06-12 17:23 | dim | Relationship added | related to 0005646 |
| 2012-06-19 13:08 | garrigue | Relationship added | related to 0005633 |
| Copyright © 2000 - 2011 MantisBT Group |