[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#659002: ocaml-nox: ocaml-compiler with mysterious effects if somewhere a comment with open quotation, example (* 3" *)



Package: ocaml-nox
Version: 3.12.1-2
Severity: normal

Dear Maintainer,

If you add somewhere in your code a comment with open quotation, the
compiler
sometimes produces binaries with partial broken functionality or aborts
compilation with error message of this pattern:

File "brackets.ml", line 34, characters 15-559 (end at line 60,
character 0):
Quotation not terminated
Preprocessing error on file brackets.ml

I have attached a sample file which triggers this message. If you remove
the
comment in line 3 (or close the quotation) the stuff will be compiled
successfully.

The problem with this bug is, that the error-message is completely
unhelpful.

I am not sure, but this comment bug could also be occure on older
versions of
ocaml-compiler.

We hat a heisenbug where the compiler creates a working binary without
any
error-message, but completely different behaviour, if somewhere was a
comment
of form (* << *) or (* >> *), but this was very hard to reproduce and
catch in
an example-file.

bye Andreas




-- System Information:
Debian Release: wheezy/sid
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: amd64 (x86_64)

Kernel: Linux 3.1.0-1-amd64 (SMP w/2 CPU cores)
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages ocaml-nox depends on:
ii  binutils                                2.22-4
ii  gcc                                     4:4.6.2-4
ii  libc6                                   2.13-24
ii  libncurses5                             5.9-4
ii  libncurses5-dev                         5.9-4
ii  libtinfo5                               5.9-4
ii  ocaml-base-nox [ocaml-base-nox-3.12.1]  3.12.1-2
ii  ocaml-interp                            3.12.1-2
ii  zlib1g                                  1:1.2.3.4.dfsg-3

Versions of packages ocaml-nox recommends:
ii  camlp4  3.12.1-2
ii  file    5.09-2

Versions of packages ocaml-nox suggests:
pn  libgdbm-dev               <none>
pn  ocaml-doc                 <none>
pn  tuareg-mode | ocaml-mode  <none>

-- no debconf information


-- 
Andreas Romeyke
- Abteilung Blindenschrift -
Deutsche Zentralbücherei für Blinde zu Leipzig (DZB)
Gustav-Adolf-Straße 7, 04105 Leipzig
Tel: +49 341 7113-..., Fax: +49 341 7113-125
Internet: www.dzb.de
E-Mail: andreas.romeyke@dzb.de
open OcamlNG;;

(* 3" *)
let is_bracketed (s:string) =
  let _test openbracket closebracket =
    let openregex = Str.regexp openbracket in
    let closeregex = Str.regexp closebracket in
    let last_idx = (String.length s) -1 in
      try
        let left_idx =
          Str.search_forward openregex s 0
        in
        let right_idx = 
          Str.search_backward closeregex s last_idx
        in
        let left = Str.string_before s left_idx in
        let right = Str.string_after s right_idx in
        let middle = 
          let tmp = Str.string_after s left_idx in
            Str.string_before tmp right_idx
        in
          Some (left, middle, right)
      with
          Not_found -> None
  in
  let brackets =
    ("\\["   , "\\]" )::
    ("("    , ")"  )::
    ("{"    , "}"  )::
    ("begin", "end")::
    ("BEGIN", "END")::
    ("»"    , "«"  )::
    ("<<"   , ">>" )::
    (">>"   , "<<" )::
    (">"    , "<"  )::
    ("\""   , "\"" )::
    ("'"    , "'"  )::
    ("„"    , "”"  )::
    []
  in
      brackets 
        |> List.map (
           fun br ->
             let (openbracket, closebracket) = br in
               _test openbracket closebracket
         )
        |> (fun l -> 
              try
                List.find (
                  function
                    | None -> false
                    | Some _ -> true
                ) l
              with
                  Not_found -> None
         )
;;


Attachment: signature.asc
Description: This is a digitally signed message part


Reply to: